如何在单个模板中使用多个主机名?
问题描述:
我要生成一个文件,该文件是在两个主机相同,同时包含主机名,如:如何在单个模板中使用多个主机名?
resource r0 {
on host01 {
device /dev/drbd0;
}
on host02 {
device /dev/drbd0;
}
}
我试图用一个模板来实现这个功能,比如下面:
resource r0 {
on {{ hostvars[groups['hosts'][0]]['ansible_nodename'] }} {
device /dev/drbd0;
}
on {{ hostvars[groups['hosts'][1]]['ansible_nodename'] }} {
device /dev/drbd0;
}
}
这适用于第一个变量,但该列表没有第二个元素,因此第二个变量未知。
如何获取主机列表,以便我可以从列表中单独选择每个主机?
编辑:库存的相关位是
[hosts]
host01
host02
编辑:
我下面的作品的答案,如果我只需要主机名。不过,我也需要 某个接口的IP地址。
我该如何访问hostvars
中的信息,而不是当前主机的 ?
答
下面做什么,我想:
resource r0 {
on {{ groups['hosts'][0] }} {
device /dev/drbd0;
}
on {{ groups['hosts'][1] }} {
device /dev/drbd0;
}
}
编辑:
要访问比当前其他主机,例如IP地址的变量,在剧本必须包括在hosts
其他主机指令。我正在测试一个只能运行一台主机的剧本,因此无法访问有关其他主机的信息。您仍然可以像这样运行测试,但您需要对其他主机执行虚拟操作,如下所述:https://serverfault.com/a/639269/144800,以便收集其他主机的事实。
您还可以添加您的库存文件(或其相关代码片段)吗? – ydaetskcoR