一、Ansible 性能优化的几个方向¶
原笔记把性能优化集中概括成了几类常见思路:
- 优化 SSH 连接速度,例如关闭
UseDNS、GSSAPIAuthcation - 尽量不要让 Ansible 执行交互式命令,必要时使用非交互模式
- 软件安装场景可以自建本地 YUM 仓库,提高安装效率
- 通过
-f或ansible.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 在生产环境中真正可持续使用的基础。