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

一、实验环境

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

二、实验需求

  1. 编写名为 test1.yaml 的 Ansible Playbook
  2. 关闭被控端 facts 信息收集(gather_facts: no
  3. 第一个 Play:通过两个任务 创建 admin01admin02 两个用户
  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 可重复执行、标准化配置、批量管理主机,大幅提升运维效率
相关推荐
莎士比亚的文学花园1 小时前
Linux驱动开发(2)——驱动编程
linux·运维·驱动开发
YaBingSec1 小时前
玄机网络安全靶场:Jackson-databind 反序列化漏洞(CVE-2017-7525)
linux·网络·笔记·安全·web安全
计算机安禾1 小时前
【Linux从入门到精通】第30篇:综合案例:编写一个Linux系统体检脚本
linux·运维·服务器
草履虫君1 小时前
wsl的装龙虾方式,接入飞书的时候需要在wsl环境装飞书插件,那么node模式接入飞书,需要怎么装飞书插件?
服务器·经验分享·飞书
海的预约1 小时前
Bootloader应用分析
linux·运维·服务器
时空未宇1 小时前
海鸥派顺利运行YOLO11S
linux·运维·服务器
ElevenS_it1881 小时前
日志在哪里找?分布式环境下日志采集断裂的5个排查路径
运维·网络·分布式
半壶清水1 小时前
ubuntu中部署开源交换机模拟器bmv2详细步骤
linux·运维·网络·网络协议·tcp/ip·ubuntu
j_xxx404_2 小时前
Linux:深入解析ELF文件结构
linux·运维·服务器