ansible的主机清单/资源inventory配置详解

版权声明:转载请声明! https://blog.csdn.net/qq_34672033/article/details/89677616

主机清单inventory

  • inventory主机清单

ansible的主要功能在于批量主机操作,为了便捷的使用启动的部分主机,可以在inventory file中将其分组命名

  • 默认的inventory file

默认的inventory file为/etc/ansible/hosts

  • inventory可以有多个

inventory file 可以有多个,且也可以通过dynamic inventory来动态生成

  • /etc/ansible/hosts文件格式

(1)inventory文件遵循INI文件风格,中括号的字符为组名,可以将同一个主机同时归并到多个不同的组中

(2)此外,当如若目标主机使用了非默认的ssh端口还可以在主机名称之后使用冒号加端口号来标明.

(3)格式演示
如果使用主机名字的需要借助到DNS解析
www.geekshuai.com

[appsrvs]
192.168.20.10[1:3]
表示:192.168.20.101-103 这三台主机

[webserver]
www.geekshuai.com:233
www2.geekshuai.cn

[dbserver]
db1.geek.com
db2.geek.com

主机清单作用演示

(1)先试用ansible里的ping模块作为演示
(2)发送一个""ping"包到对端服务器,对端服务器会回一个相应"pong"
(3)此命令连接是基于SSH协议的!

ansible -m ping 176.16.1.21

# -m = MODULE_NAME-->指定模块
# ping  模块名

报错

Alt text

说明
如果主机列表为空,则只有localhost可用,无法匹配172.16.1.21主机,

  1. 添加主机清单
vim /etc/ansible/hosts
#在文件末尾添加被控端主机IP
172.16.1.21
  1. 继续使用ping模块
ansible -m  ping 172.16.1.21
The authenticity of host '172.16.1.21 (172.16.1.21)' can't be established.
ECDSA key fingerprint is SHA256:nrw5VWbfBEsC4U+/NCbXU1GvVTPDy3iA6cbOVHM8XTo.
ECDSA key fingerprint is MD5:6b:01:c8:7f:6c:e8:20:58:35:45:cb:7c:9f:9b:bb:e1.
Are you sure you want to continue connecting (yes/no)? yes

添加主机清单后,可以连接到对端服务器了!

报错
Alt text

说明
报错显示不可到达
由于是基于ssh协议的,所以要进行账号密码进行验证才可以发送数据成功,如果没有此步骤保护的话,随便一个人把IP地址加入清单就可以控制对方的机器了,很不安全.

  1. 基于ssh登录输入账户/密码的参数

由于还没有进行配置ssh的key,所以我们先用-k参数来进行连接传输数据包.

ansible -m ping 172.16.1.21 -k

# -k, --ask-pass      ask for connection password
# 输入对应的用户名进行响应

Alt text

说明
对端服务器响应pong,表示ping通了!

  1. 如果以上面的这种方式,一次性访问多台如何?
# 同时可以访问21,31这两天服务器,还可以增加更多逗号分隔
ansible -m ping 172.16.1.21,172.16.1.31 -k

报错
Alt text

说明
31这台服务器,“使用SSH密码而不是密钥是不可能的,因为启用了主机密钥检查,而sshpass不支持这一点。请将此主机的指纹添加到您的known_hosts文件中,以管理此主机。

问题及解决
由上面的报错可以得知,这样的操作并不行的通,因为在第一次ssh连接的时候会发送一个密钥指纹进行确定,确定后会把指纹写入到/root/.ssh/known_hosts
Alt text
Alt text
这样known_hosts文件中存在172.16.1.31的信息后,下次连接才可以直接连接,没有此步骤,
Alt text

  • 控端两台机器密码设置不同,是否可以正常操作?
    Alt text

说明
输入密码只会让你输入一次,如果密码统一是可以的,但是如果中间有一个密码不一样这台机器就会连接不成功,不会让你单独输入此服务器的密码

猜你喜欢

转载自blog.csdn.net/qq_34672033/article/details/89677616