Ansible生产环境身份认证同步核心是状态一致性与全周期权限管控:通过分组隔离、密钥/密码双模认证、用户生命周期自动化、sudo精细化授权、命令审计及Vault加密凭证实现可复现、可审计、零中断。

生产环境里用Ansible做服务器身份认证同步,核心是统一管理用户、密码、SSH访问策略和权限控制,同时确保操作可复现、可审计、不破坏现有服务。关键不在“一次配好”,而在“每次执行都达到同一状态”。
分组定义与主机清单隔离
把不同环境的服务器按实际权限边界划分组,避免配置污染。比如开发、测试、生产环境必须使用独立用户和密码策略:
- 在 /etc/ansible/hosts 中明确声明最小粒度分组,如 [dev-hosts]、[prd-hosts],再通过
[public:children]聚合生产相关节点 - 禁用模糊通配(如不直接写
all执行敏感任务),所有 play 都应指定hosts: prd-hosts或hosts: dev-hosts - 主机组文件本身不存密,敏感信息全部剥离到 /etc/ansible/group_vars/ 下对应组名的 YAML 文件中
密码与密钥双模认证适配
生产环境建议优先使用 SSH 密钥,但保留密码通道用于应急或部分老旧节点。Ansible 可同时支持并自动选择:
- 密钥方式:在 group_vars/prd-hosts 中设
ansible_ssh_private_key_file: /etc/ansible/id_rsa_prd,配合ansible_user: deploy - 密码方式:同组内设
ansible_ssh_pass: !vault | ...,用ansible-vault encrypt_string加密后填入,避免明文落盘 - 混合场景下,Ansible 默认优先尝试密钥;若失败且配置了密码,会自动回退——前提是
host_key_checking = False已在 ansible.cfg 中关闭
用户生命周期与权限策略自动化
身份认证不是只建个用户,而是覆盖创建、提权、审计、禁用全周期。Playbook 应包含:
- 批量创建受限用户:用
user模块指定shell=/sbin/nologin、groups=wheel、expires过期时间 - 精细化 sudo 权限:通过
copy模块部署 /etc/sudoers.d/ 下的独立文件,例如只允许deploy用户免密运行systemctl restart nginx - 启用命令审计:用
lineinfile向 /etc/rsyslog.conf 追加auth,authpriv.* /var/log/secure,并确保auditd服务启用
敏感信息加密与变更管控
所有含密码、密钥路径、API Token 的变量必须加密,且限制解密权限:
- 用
ansible-vault create group_vars/prd-secrets.yml单独存放生产环境凭证,与普通配置分离 - Playbook 中通过
vars_files: [ "group_vars/prd-secrets.yml" ]显式引入,不依赖隐式加载 - CI/CD 流水线中,仅允许特定 vault ID(如
prd@/opt/vault-key)解密,密钥文件权限设为600并仅对运维账号可读

















