我完成了将Ansible库存从ini转换为yml的任务,因此我使用了有效的ini文件并进行了常规回合: -Github:检查-解决方案挂起 -在线工具:检查-解决方案与这个星球上的事物不同 -不得已:我读过the official guide,它带来了以下示例:
all: # keys must be unique, i.e. only one 'hosts' per group
hosts:
test1:
test2:
var1: value1
vars:
group_var1: value2
children: # key order does not matter, indentation does
other_group:
children:
group_x:
hosts:
test5
很酷,我很快就把原来的ini变成了这种美女
原始
[thingiebob_master]
thng-esxi96
[thingiebob_slaves]
thng-esxi97
已转换v1
all:
children:
thingiebob_master:
hosts: thng-esxi96
thingiebob_slaves:
hosts:
thng-esxi97
我可以执行ping操作,并且可以到达两台计算机。但是当我将另一个节点添加到第二组时: 已转换v2
all:
children:
thingiebob_master:
hosts: thng-esxi96
thingiebob_slaves:
hosts:
thng-esxi97
thng-esxi98
我得到一个错误:
PLAY [all] **************************************************************************************
TASK [Gathering Facts] **************************************************************************
fatal: [thng-esxi97 thng-esxi98]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh:
Could not resolve hostname thng-esxi97 thng-esxi98: Name or service not known\r\n", "unreachable": true}
但是,如果我在冒号后面放一个冒号,有效地将它们变成键,如下面的v3所示,则会找到并ping通所有三个节点。 已转换v3
all:
children:
thingiebob_master:
hosts: thng-esxi96
thingiebob_slaves:
hosts:
thng-esxi97:
thng-esxi98:
结果
PLAY [all] **************************************************************************************
TASK [Gathering Facts] **************************************************************************
ok: [thng-esxi98]
ok: [thng-esxi96]
ok: [thng-esxi97]
TASK [ping] *************************************************************************************
ok: [thng-esxi97]
ok: [thng-esxi96]
ok: [thng-esxi98]
PLAY RECAP **************************************************************************************
thng-esxi96 : ok=2 changed=0 unreachable=0 failed=0
thng-esxi97 : ok=2 changed=0 unreachable=0 failed=0
thng-esxi98 : ok=2 changed=0 unreachable=0 failed=0
问题:(如何)我可以将多个节点添加到我的thietiebob_slaves组中吗? (无需殖民化。)
答案 0 :(得分:1)
有趣的问题:)
在第一次通过时就完全解决了这个错误:(我假设基本INI文件的YAML版本反映了编写动态清单脚本时使用的数据结构的布局,因此将包含主机列表的组进行了分组。他们没有。
我今天恰好在读the Inventory docs。这清楚地表明,在基本INI清单的YAML版本中,组确实是一个字典,其中包含主机名键和空字典或特定于主机的选项的值。
文档示例:
all:
hosts:
mail.example.com:
ansible_port: 5555
ansible_host: 192.0.2.50
children:
webservers:
hosts:
foo.example.com:
bar.example.com:
dbservers:
hosts:
one.example.com:
two.example.com:
three.example.com:
长话短说,您被冒号困住了。