Ansible Inventory 主机清单 和 如何匹配主机组

网友投稿 243 2022-09-13

Ansible Inventory 主机清单 和 如何匹配主机组

Inventory是什么

Inventory 文件主要用来填写被管理主机以及主机组信息,(逻辑上定义),默认Inventory文件为/etc/ansible/hosts。

当然也可以自定义一个文件,当执行 ansible 命令时使用-i选项指定 Inventory 文件位置。

inventory里面可以定义单个主机,一般都是去定义主机组。

列出主机中有多少台主机

[root@master ansible]# ansible webservers --list-hosts hosts (1): 192.168.111.6

可以看到要输入yes/no

[root@master ansible]# ansible webservers -m pingThe authenticity of host '192.168.111.7 (192.168.111.7)' can't be established.ECDSA key fingerprint is SHA256:Tixbvr6R13gu8is3+O4LSUjPJ3fO4yaWU+yENPu/l5g.ECDSA key fingerprint is MD5:d8:b1:96:80:65:aa:bc:2e:5d:e4:60:c3:82:93:ab:a8.Are you sure you want to continue connecting (yes/no)? The authenticity of host '192.168.111.8 (192.168.111.8)' can't be established.ECDSA key fingerprint is SHA256:na7DOfswnmTKyNunAo8lwUDGcCFRmpiTTjDGRkT1bHU.ECDSA key fingerprint is MD5:fd:a6:49:e7:e1:e5:db:24:25:0f:f5:08:27:2f:fb:bd.Are you sure you want to continue connecting (yes/no)? yes

将这行注释去掉,那么就是不去验证了

[root@master ansible]# vim /etc/ansible/ansible.cfghost_key_checking = False

Ansible连接被控端主机

因为在配置文件中谢啦远程端口为22,所以这里可以省略。

[root@master ansible]# cat hosts [webservers]192.168.111.6 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456192.168.111.7 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456[root@master ansible]# ansible webservers -m ping192.168.111.7 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong"}192.168.111.6 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong"}

写用户名密码很费劲,还有一种方式就是先免密,然后直接定义逻辑组即可完成通信

[root@master ~]# ssh-keygen [root@master ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.111.7[root@master ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.111.8

可以自己写个脚本免交互的配置互信。

Ansible  匹配主机名称/主机组方式

all:代表所有的主机,指定操作所有的组

[root@master ~]# ansible all -m ping

通配符:匹配相关的,不一定要将名称写全了,可以使用通用的匹配符

[root@master ~]# ansible "192.168.111.*" -m ping[root@master ~]# ansible "192.168.111.*" -m ping

与∶在webservers组,并且在dbsservers中的主机

ansible "webservers:&dbservers"-m ping

或∶在webservers组,或者在appservers中的主机

ansible "webservers:appservers"-m ping

非∶在webservers组,但不在apps组中的主机

ansible 'webservers:!apps'-m ping

正则表达式∶

ansible "~(web|db).*\.oldxu\.com"-m ping

为什么要学匹配,因为有时候我们设置了很多的组,但是我想针对特定的主机执行操作,特定的主机有分布在不同的组当中,这就需要特定的方法将其匹配出来,然后执行它,不然单独就启一个组,将特定的主机筛选出来,重新建立一个组去执行。

主机的匹配还是相当的重要,如果机器特别少只定义了几个组,那就不需要上面这种,如果主机组特别的多就要使用上面的方法。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Go 语言的由来、特性
下一篇:短视频营销适合哪些行业做产品宣传推广?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~