一、实验环境操作系统openEuler控制节点test01已部署 Ansible被控节点test01已配置 SSH 免密登录核心要求关闭被控端信息收集、单 Play 多任务创建用户、独立 Play 修改用户 Shell二、实验需求编写名为test1.yaml的 Ansible Playbook关闭被控端 facts 信息收集gather_facts: no第一个 Play通过两个任务创建admin01、admin02两个用户第二个 Play修改admin01的登录 Shell 为/bin/sh完成语法检查、执行 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脚本核心说明gather_facts: no关闭被控端信息收集提升执行效率两个独立 Play实现创建用户和修改属性解耦user模块Ansible 内置模块安全稳定管理 Linux 用户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状态changedTASK [Create user admin02]成功创建用户 admin02状态changedPLAY [Modify user login shell]第二个剧本启动负责修改用户 ShellTASK [Change admin01 shell to /bin/sh]成功修改 admin01 登录 Shell状态changed2. PLAY RECAP 状态说明ok33 个任务全部执行成功changed33 个任务对系统状态进行了修改2 个用户创建 1 个属性修改unreachable0被控主机 test01 网络连通正常failed0无任务执行失败七、验证实验结果可选在被控端执行命令查看用户信息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八、实验总结本实验基于 openEuler 环境完成了 Ansible Playbook 从编写到执行的全流程通过gather_facts: no优化了剧本执行效率实现了批量创建用户、批量修改用户属性的自动化操作修改 Shell 为/bin/sh符合 Linux 运维安全规范限制用户交互式登录Ansible Playbook 可重复执行、标准化配置、批量管理主机大幅提升运维效率