一、Ansible 性能优化的几个方向

原笔记把性能优化集中概括成了几类常见思路:

  • 优化 SSH 连接速度,例如关闭 UseDNSGSSAPIAuthcation
  • 尽量不要让 Ansible 执行交互式命令,必要时使用非交互模式
  • 软件安装场景可以自建本地 YUM 仓库,提高安装效率
  • 通过 -fansible.cfg 中的 forks 调整并发数量,默认值是 5
  • 给 Ansible 配置缓存,例如缓存 Facts、结合队列或 Redis 使用
  • 给主机做好分组,减少无意义的扫描和执行范围

原笔记还特别提到,如果当前剧本并不依赖 Facts 变量,可以直接关闭 Facts 收集:

gather_facts: false

或者在配置文件里统一指定:

gathering = explicit

此外,在部分密码认证场景里,原笔记建议关闭主机密钥检查:

host_key_checking = False

二、安全建议:sudo、VPN、跳板机与密码加密

除了性能,原笔记还强调了几个安全方向:

  • 为被管理端准备具备 sudo 权限的普通用户 ans
  • 通过 NOPASSWD 降低批量执行时的交互阻碍
  • 结合 VPN 和 JumpServer 这类跳板机统一接入
  • 对用户密码和敏感信息做加密处理,例如使用哈希或 ansible-vault

原笔记中给出的访问链路是:

用户 -> VPN -> JMS(跳板机) -> Ansible

这类设计的核心思路是:让自动化入口统一、审计集中、权限路径可控。

三、管理端的关键配置示例

原笔记给出了管理端 /etc/ansible/ansible.cfg 的一个配置样例:

[defaults]
sudo_user =ans
remote_user =ans
remote_port =22
host_key_checking = False
log_path = /var/log/ansible.log
[inventory]
become=True
become_method=sudo
become_user=root
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]

结合笔记中的说明,这个配置主要表达了几件事:

  • 管理端默认以 ans 用户连接被管理节点
  • 通过 become 切换到 root
  • 关闭主机密钥检查
  • 开启日志记录,便于排错和审计

四、被管理端如何配合配置

被管理端的示例步骤如下:

#添加用户并设置密码
[root@oldboy02 tmp]# useradd ans
[root@oldboy02 tmp]# passwd ans

#赋予用户"ans"完全的sudo权限,无需密码认证
[root@oldboy02 roles01]# visudo
...
...
#添加如下内容,配置结果可以在/etc/sudoers进行查看
ans     ALL=(ALL)       NOPASSWD: ALL

#禁用密码身份验证
[root@oldboy02 tmp]# vim /etc/ssh/ssh_config
...
...
PasswordAuthentication no
...
...

这部分的重点是让普通用户 ans 具备远程执行和提权能力,再配合 SSH 密钥方式完成后续接入。

五、重新分发密钥并验证连接

配置完成后,原笔记在管理主机上重新分发密钥:

[root@oldboy01 roles01]# ssh-copy-id ans@192.168.1.21

然后测试连通性:

[root@oldboy01 roles01]# ansible -i hosts web -m ping

192.168.1.21 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

这说明管理端已经可以通过 ans 用户正常连接并执行 Ansible 模块。

六、注意事项与小结

原笔记最后提醒了一点:如果其他主机还没有按同样方式完成配置,建议把 /etc/ansible/ansible.cfg 还原,避免默认配置影响到未准备好的节点。

把这一节整体串起来,可以得到一个很实用的经验:

  • 性能优化关注连接、并发、缓存和 Facts
  • 安全配置关注统一用户、提权、密钥登录和敏感信息保护
  • 批量管理想稳定运行,往往需要性能和安全一起考虑

这也是 Ansible 在生产环境中真正可持续使用的基础。