ansible初识(三)--ansible主机清单及基于key验证的配置

一:ansible基本语法:
[[email protected] ~]# ansible --help
Usage: ansible [options] //ansible 主机ip 选项
ansible初识(三)--ansible主机清单及基于key验证的配置

实例演示:
ansible初识(三)--ansible主机清单及基于key验证的配置
注意:ping
此处的ping是模块,测试管理端与被管理端连接状况(并不等于ping命令),测试主控端与被控端连通性,被控端是否存在,若存在,则回应“pong”

报错原因:
此时会报错是因为在主机清单中没有目标主机的ip,无法进行匹配,因此无法对目标主机进行操作

解决办法:
在主机清单inventory中加入目标主机

ansible初识(三)--ansible主机清单及基于key验证的配置
[[email protected] ~]# vim /etc/ansible/hosts 一般加到最后一行

ansible初识(三)--ansible主机清单及基于key验证的配置
也可以对主机清单进行分组管理,在主机清单中对不同主机进行分组
ansible初识(三)--ansible主机清单及基于key验证的配置
ansible初识(三)--ansible主机清单及基于key验证的配置
也可以这样哦,表示101,102,103三台主机
ansible初识(三)--ansible主机清单及基于key验证的配置
再次尝试实例演示中第一个ad-hoc命令:
会发现此时虽然在主机清单中加了目标主机,但是目标主机依然不会做出回应,是因为ansible默认是基于ssh登陆连接,基于key进行验证登陆的,因此在连接之前需要对主机进行安全性认证
(在目前没有做基于key认证时,可以加上选项-k进行用户账号口令验证)
ansible初识(三)--ansible主机清单及基于key验证的配置报错原因:
  当ansible首次去进行ssh连接一个服务器的时候,由于在本机的~/.ssh/known_hosts文件中并有fingerprint key串,ssh第一次连接的时候一般会提示输入yes 进行确认 ,是为了将key字符串加入到 ~/.ssh/known_hosts 文件中,而在此之前没有ssh连接过此目标主机,没有输入yes进行确认,目标主机会认为此主机是一个不可信任的主机,故回报如上错误。
解决办法:
修改ansible.cfg文件
vim /etc/ansible/ansible.cfg
找到以下行,让host_key_checking=False这行生效 //关闭第一次使用ansible连接客户端时需要输入yes确认提示

这也就是上一篇文章中ansible主配置文件中标绿色建议生效的原因

再次尝试:
ansible初识(三)--ansible主机清单及基于key验证的配置
注意:
这种加选项-k的方式只适用于只有一个目标主机或者多个密码口令一样的目标主机的情况下。如果有多个主机的情况下,这种方式只会询问一次密码口令,不会询问多次,而且并不会按照顺序询问

现以两个密码不同的目标主机做演示:
ansible初识(三)--ansible主机清单及基于key验证的配置
因为-k参数只是输入一次密码,因此当多台主机密码不同时,就很难实现目的。

因此ansible提供了一种基于key的验证来实现免密管理验证的方式,可以不用反复输入不同被控端主机的密码口令
配置基于key验证:
[[email protected] ~]# ssh-******
ansible初识(三)--ansible主机清单及基于key验证的配置
给被控端推送公钥
[[email protected] ~]# ssh-copy-id 192.168.24.131
[[email protected] ~]# ssh-copy-id 192.168.24.129

推送过程中需要输入被控端主机密码
ansible初识(三)--ansible主机清单及基于key验证的配置
做完基于key验证后,主控端控制被控端就无需加-k选项重复输入密码:
ansible初识(三)--ansible主机清单及基于key验证的配置