Ansible 通过 ansible.builtin.user 模块实现 Linux 用户的幂等、可审计、跨主机批量管理,核心是标准化定义、条件化控制与安全加固闭环。

Ansible 在 Linux 环境下统一管理系统用户,核心是用 ansible.builtin.user 模块实现幂等、可审计、跨主机的批量操作,不依赖手动编辑 /etc/passwd 或逐台执行 useradd。关键在于标准化定义 + 条件化控制 + 安全加固闭环。
定义统一用户模板与变量
把用户属性抽象为结构化数据,便于复用和版本管理:
- 在 vars/main.yml 或 playbook 中定义用户列表,包含 name、uid、groups、shell、ssh_key_path 等字段
- 密码统一用 SHA512 哈希(以
$6$开头),通过password_hash('sha512', '明文')过滤器生成,避免硬编码明文 - 设置
create_home: yes、shell: /bin/bash、skeleton: /etc/skel保证基础环境一致
批量创建并部署 SSH 公钥
运维账户必须禁用密码登录,只允许密钥认证:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 用
ansible.builtin.user的generate_ssh_key: yes自动生成密钥对(适用于首次部署) - 或配合
ansible.posix.authorized_key模块,从文件读取公钥并写入/home/username/.ssh/authorized_keys - 确保目录权限:home 目录
0755,.ssh目录0700,authorized_keys文件0600
按策略锁定、禁用或清理账户
不是“一刀切”,而是根据角色、状态或时间动态控制:
-
state: absent+remove: yes彻底删除用户及 home 目录(离职场景) -
password_lock: yes锁定密码(临时停用,保留家目录和配置) -
expires: "2026-12-31"设置账户过期时间(试用期、外包账号) - 结合
when判断,例如只对group_names contains 'legacy'的用户执行锁定
验证配置并生成审计报告
每次变更后自动校验是否符合安全基线:
- 用
ansible.builtin.getent获取当前系统用户列表 - 用
ansible.builtin.stat检查/home/{{ item }}/是否存在、.ssh/authorized_keys权限是否合规 - 将结果注册为变量,用
community.general.csv输出表格,或用ansible.builtin.debug输出 JSON 格式供日志归档 - 敏感操作建议启用
check_mode: yes预览,确认无误再真实执行

















