Ansible连接被控节点的两种方式
1、基于端口,用户,密码定义主机清单
ansible基于ssh连接-i(inventory)参数后指定的远程主机时,也可以写端口,用户,密码。
格式:
ansible_ssh_port:指定ssh端口 ansible_ssh_user:指定ssh用户 ansible_ssh_pass: 指定ssh用户登录时认证的密码(明文密码不安全) ansible_sudo_pass: 指定sudo时候的密码
定义主机清单
vim /etc/ansible/hosts # 维护这ansible中服务器的清单。可以在文件最后追加你要添加的机器信息
[web-servers] #主机组名
机器IP ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
- 测试主机连通性:
ansible -i /etc/ansible/hosts web-servers -m ping
-i # 指定host文件的路径,默认时在/etc/ansible/hosts
-m # 指定使用的ping模块
如果报错,需要先手动连接一下该机器,让ansible服务器上有目标机器的fingerprint指纹。后期就可以正常连接了。
再次测试主机连通性:
ansible -i hosts web-servers -m ping
2、基于ssh密钥来访问定义主机清单
一般来说,使用明文密码是很不安全的,所以增加主机之间免密登录。
- 在Ansible机器上生成密钥,将公钥复制到节点中。
ssh-keygen # 一路回车
- 使用ssh-copy-id命令将公钥复制到Ansible控制的节点上
- 在Ansible的hosts文件中添加刚刚配置了免密登录的主机
vim /etc/ansible/hosts
[web-servers]
免密登录的机器的IP
ping模块检查网络连通性
command模块执行shell命令, command:作为ansible的默认模块,可以运行远程用户权限范围内的所有shell命令。
- 使用ping检查‘web-servers’组当中机器的连通性
ansible -i /etc/ansible/hosts 'web-servers' -m ping
或者
ansible 'web-servers' -m ping # 不指定,默认使用/etc/ansible/hosts文件