openEuler 环境下 Ansible Playbook 实战:批量创建用户并修改 Shell 属性

一、实验环境

  • 操作系统:openEuler
  • 控制节点:test01(已部署 Ansible)
  • 被控节点:test01(已配置 SSH 免密登录)
  • 核心要求:关闭被控端信息收集、单 Play 多任务创建用户、独立 Play 修改用户 Shell

二、实验需求

  1. 编写名为 test1.yaml 的 Ansible Playbook
  2. 关闭被控端 facts 信息收集(gather_facts: no)
  3. 第一个 Play:通过两个任务 创建 admin01、admin02 两个用户
  4. 第二个 Play:修改 admin01 的登录 Shell 为 /bin/sh
  5. 完成语法检查、执行 Playbook、结果说明

三、编写 Playbook

创建 test1.yaml 文件,内容如下(规范缩进、无语法错误、可直接运行):

yaml

复制代码
---
# Play1:创建两个普通用户,关闭信息收集
- name: Create two Linux users
  hosts: test01
  gather_facts: no  # 关闭被控端系统信息收集

  tasks:
    # 任务1:创建用户admin01
    - name: Create user admin01
      ansible.builtin.user:
        name: admin01
        state: present

    # 任务2:创建用户admin02
    - name: Create user admin02
      ansible.builtin.user:
        name: admin02
        state: present

# Play2:修改admin01的登录shell为/bin/sh
- name: Modify user login shell
  hosts: test01
  gather_facts: no

  tasks:
    - name: Change admin01 shell to /bin/sh
      ansible.builtin.user:
        name: admin01
        shell: /bin/sh
        state: present

脚本核心说明

  1. gather_facts: no:关闭被控端信息收集,提升执行效率
  2. 两个独立 Play:实现创建用户 和修改属性解耦
  3. user 模块:Ansible 内置模块,安全稳定管理 Linux 用户
  4. shell: /bin/sh:限制用户交互式登录,提升系统安全性

四、Playbook 语法检查

执行前必须校验语法,避免运行时报错:

复制代码
ansible-playbook --syntax-check test1.yaml

执行结果

复制代码
playbook: test1.yaml

输出以上内容代表语法完全正确,无缩进、格式等问题。

五、执行 Playbook

一键执行剧本,完成用户创建与属性修改:

复制代码
ansible-playbook test1.yaml

完整执行输出

六、执行结果详细说明

1. 阶段执行说明

  • PLAY Create two Linux users:第一个剧本启动,负责创建两个用户
    • TASK [Create user admin01]:成功创建用户 admin01,状态 changed
    • TASK [Create user admin02]:成功创建用户 admin02,状态 changed
  • PLAY Modify user login shell:第二个剧本启动,负责修改用户 Shell
    • TASK [Change admin01 shell to /bin/sh]:成功修改 admin01 登录 Shell,状态 changed

2. PLAY RECAP 状态说明

  • ok=3:3 个任务全部执行成功
  • changed=3:3 个任务对系统状态进行了修改(2 个用户创建 + 1 个属性修改)
  • unreachable=0:被控主机 test01 网络连通正常
  • failed=0:无任务执行失败

七、验证实验结果(可选)

在被控端执行命令,查看用户信息:

复制代码
cat /etc/passwd | grep admin

验证结果

复制代码
admin01:x:1001:1001::/home/admin01:/bin/sh
admin02:x:1002:1002::/home/admin02:/bin/bash

可以看到:

  • admin01 登录 Shell 已修改为 /bin/sh(受限安全模式)
  • admin02 保持默认 Shell /bin/bash

八、实验总结

  1. 本实验基于 openEuler 环境,完成了 Ansible Playbook 从编写到执行的全流程
  2. 通过 gather_facts: no 优化了剧本执行效率
  3. 实现了批量创建用户、批量修改用户属性的自动化操作
  4. 修改 Shell 为 /bin/sh 符合 Linux 运维安全规范,限制用户交互式登录
  5. Ansible Playbook 可重复执行、标准化配置、批量管理主机,大幅提升运维效率
相关推荐
迪菲赫尔曼9 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
GeW10 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
by2099911 小时前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
螺丝钉tina11 小时前
[Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
运维·自动化·测试用例
迪菲赫尔曼11 小时前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测
cq林志炫11 小时前
两个Linux服务器之间同步文件
linux·运维·服务器
yyuuuzz12 小时前
云服务器安全组规则优先级的机制记录
运维·服务器·网络·安全·阿里云·aws
KaiwuDB12 小时前
KaiwuDB 运维实战06:数据库备份与恢复:从理论到实战
运维·数据库·时序数据库·kaiwudb
无人生还别怕12 小时前
如何搭建k8s服务(containerd部署)
linux·云原生·容器·kubernetes·openanolisos
智购科技自动售货机厂家12 小时前
让AI经营自动售货机:从Project Vend看工具权限与业务规则~YH
大数据·服务器·单片机·嵌入式硬件·深度学习