环境说明
控制节点:安装 ansible 的 Ubuntu(用来下发指令)
受控节点:另一台 Ubuntu(被管理机器)
控制原理
ansible 通过 SSH 免密登录受控节点,不需要在受控节点装 ansible,只需要 python3
SSH 免密登录
1. 生成 SSH 密钥
ssh-keygen -t rsa
然后敲3次回车,生成密钥,如下图:
2. 将公钥推送到受控节点
ssh-copy-id user@192.168.58.138
解释:
user:受控节点用户名;192.168.58.138:受控节点IP
- 测试免密登录
免密 ssh 登录测试:
ssh user@192.168.58.138
不需要输入密码,即可正常登录,说明配置成功
测试是否连通
指定ip列表
注意: 必须有 , 否则报错,有 , 表示列表
ansible all -i 192.168.58.138, -m ping
常见报错排查
ping失败:SSH连接超时
- 受控节点防火墙放行22端口:
sudo ufw allow 22/tcp - 检查IP是否可达
ping 192.168.1.100
- 受控节点防火墙放行22端口:
Permission denied
- 免密推送失败,重新执行
ssh-copy-id - 确认受控节点
/etc/ssh/sshd_config允许公钥认证PubkeyAuthentication yes
- 免密推送失败,重新执行
Could not find python interpreter
- 受控节点没装 python3:
sudo apt install python3
- 受控节点没装 python3:
需要 sudo 权限执行任务
如果受控节点任务需要root,在inventory增加ansible_become=yes ansible_become_pass=密码[web] 192.168.1.100 ansible_user=ubuntu ansible_become=yes受控节点用户需要有sudo免密(可选配置)
# 受控节点 sudo免密,不用每次输入密码 sudo visudo ubuntu ALL=(ALL) NOPASSWD: ALL
测试其他命令
查看被控节点主机名
ansible web -m command -a "hostname" -i ansible_client.ini
查看被控节点磁盘
ansible web -m command -a "df -h"


