如何编写 Ansible Inventory 文件 hosts 的主机信息

文章介绍了AnsibleInventory文件的五种常见定义方式,包括最常用的别名写法、不指定别名、连续IP、带参数群组以及多群组定义。同时,还阐述了如何通过不同的调用方式来操作这些主机组,如并集、差集和交集的操作。

Ansible 的 Inventory 文件编写起来比较随意,支持很多种定义方式,下面简单记录一下支持的定义方式,方便大家日常更灵活的使用。

Inventory 常用定义方式

1.最常用的写法

[gpdb]
mdw ansible_ssh_host=192.168.0.10 ansible_ssh_user="root" ansible_ssh_pass="123456" ansible_ssh_port=22
sdw1 ansible_ssh_host=192.168.0.11 ansible_ssh_user="root" ansible_ssh_pass="123456" ansible_ssh_port=22

最顶上的方括号 gpdb 表示分组,这种写法分别定义了服务器的别名、主机ip、ssh 用户、ssh 密码、ssh 端口。

2.不指定别名的写法

[all]
10.211.55.122 hostname=sdw2
10.211.55.120 hostname=mdw ansible_ssh_port=22
10.211.55.121 hostname=sdw1 ansible_ssh_port=22
172.16.25.129 hostname=app1

这种写法分别定义了主机ip、定义了变量 hostname 这里代表后面要修改成的主机名,ssh 端口,部分定义。

3.连续 IP 的写法

[gpdb]
gpdbgroup ansible_ssh_host=192.168.1.[10:20] ansible_ssh_user="root" ansible_ssh_pass="1234" ansible_ssh_port=22

4.带参数群组的写法

[gpdb]
gpdbgroup ansible_ssh_host=192.168.1.[10:20]
[gpdb:vars]
ansible_ssh_user=root
ansible_ssh_pass="1234"
testvar="test"

这种写法在 gpdb 群组下面定义了一组变量 vars,vars 中分别给固定变量 ansible_ssh_user 和 ansible_ssh_pass 赋值,又定义了一个 自定义变量 testvar,可以看出特别灵活。

5.多群组定义

[gpdb]
name1 ansible_ssh_host=192.168.1.[10:20] ansible_ssh_user="root" ansible_ssh_pass="1234" ansible_ssh_port=22
[web]
name2 ansible_ssh_host=192.168.2.[10:20] ansible_ssh_user="root" ansible_ssh_pass="1234" ansible_ssh_port=22
[test:children]
gpdb
web

定义了三部分,test群组下直接包含了 gpdb 和 web 两个子群组,在两个子群组中,分别定义了各自的服务器信息。

调用方式

1.调用两个主机组的写法

以下 gpdb 和 web 都会被调用

ansible gpdb:web -m ping

2.在一个组不在另一个的写法

以下表示调用在 gpdb 但不在 web 组中的服务器

ansible gpdb:!web -m ping

3.两个组都在的写法

以下表示调用在 gpdb 也在 web 组中的服务器

ansible gpdb:&web -m ping

其他组合方式,可以根据上面的规则自行制定。

End~

Ansibleinventory文件是用来定义被Ansible管理的主机文件。它通常位于/etc/ansible/hosts目录下,但也可以根据需要进行自定义设置,通过在ansible.cfg配置文件中指定inventory文件的绝对地址来修改默认位置。 inventory文件的格式可以有两种方式,一种是简单的列表格式,另一种是带有变量的格式。简单的列表格式中,每行对应一个主机,可以指定主机的名称、IP地址以及其他连接参数如用户名和密码。例如,可以使用以下格式来定义一个名为H501的主机: H501 ansible_ssh_host="10.21.1.1" ansible_ssh_user=web ansible_ssh_pass=********* 其中,ansible_ssh_host表示主机的IP地址ansible_ssh_user表示连接主机所用的用户名,ansible_ssh_pass表示连接主机所用的密码。 带有变量的格式中,可以在主机上方使用方括号定义一个组,并在组上方使用方括号加上":vars"来定义组级别的变量。然后,可以在主机行中使用这些变量。例如,可以使用以下格式来定义一个名为H5的组,并在组级别定义了一些变量: [H5:vars] tomcatdir="/home/ap/apache-tomcat" nasdir="/home/nas/H5deploy" tomcatport=8080 然后,在主机行中使用这些变量,如: H501 ansible_ssh_host="10.21.1.1" ansible_ssh_user=web ansible_ssh_pass=********* 这样,H501主机就继承了组级别的变量。 总之,Ansibleinventory文件是用来定义被管理的主机文件,可以使用简单的列表格式或带有变量的格式来进行定义。通过这个文件Ansible可以根据需要管理和执行各个主机上的任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Ansible自动化(二)inventory文件ansible清单)](https://blog.csdn.net/kfboke0809/article/details/131470438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿福Chris

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值