0

我想在两个主机上生成一个相同的文件并包含两个主机名,例如:

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除了当前主机之外,我如何访问类似信息的内容?

4

1 回答 1

0

以下是我想要的:

resource r0 {
  on {{ groups['hosts'][0] }} {
    device    /dev/drbd0;
  }
  on {{ groups['hosts'][1] }} {
    device    /dev/drbd0;
  }
}    

编辑:

要访问当前主机以外的主机变量,例如 IP 地址,playbook 必须在hosts指令中包含其他主机。我正在使用仅针对单个主机运行的剧本进行测试,因此无法访问有关其他主机的信息。您仍然可以像这样运行测试,但您需要对其他主机执行虚拟操作,如下所述:https ://serverfault.com/a/639269/144800 ,以便收集其他主机的事实。

于 2016-01-20T07:39:15.793 回答