configuration所有主机,然后创build所有主机的configuration列表?

我用Ansible部署了大量的主机 – 这非常好用。 每个主机都有自己的设置和configuration

现在我想为另一个使用这些主机的系统生成一个configuration文件。 为此,我需要为每个主机生成一个configuration(configuration数据库的configuration)的一部分。

以下是两台主机具有不同configuration的情况以及另一个使用Ansible生成configuration的一部分的系统的示例:

主机1

可靠的configurationdbA

主机2

可靠的configurationdbQ

另一个系统:

host1 = dbA

host2 = dbQ

这些值的计算方式是不同的(如dbQ而不是dbB ,例如host2 ),如果它属于不同的集群等,从host_vars只读出主机configuration是host_vars 。 我相信我需要迭代主机,并让Ansible找出像部署时那样的variables的计算值,但是我不知道如何将结果放在一个模板中。

请指教 :)

如果我正确理解你的情况,你可以使用set_fact和/或一个模板的组合,然后循环遍历所有的主机。 例如,假设你有一个任务定义如下:

 - name : Configure database command: /path/to/some/script {{ inventory_hostname }} {{ some_var }} {{ some_other_var }} 

您可以使用set_fact将这些值与相关主机相关联:

 - name: Stash the variables for later use set_fact: var_1 : {{ some_var }} var_2 : {{ some_other_var }} host_and_var : "{{ inventory_hostname }}-{{ some_var}}" etc. 

然后,当需要创buildconfiguration文件时,您需要一个模板操作或local_action来生成configuration文件。 模板将包含以下内容:

 {% for host in groups['some_host_group']|sort %} {% if hostvars[host]["var_1"] is defined %} {{ host }} = {{ hostvars[host]["var_1"] }} {% endif %} {% endfor %}