使用ansible的每个主机的不同配置

时间:2015-08-17 16:40:00

标签: ansible-playbook

我有以下standalone.xml配置 - > - standalone.xml(dev) - standalone.xml(staging) - prod-standalone1.xml(生产集群1) - prod-standalone2.xml(生产集群2)。 - prod-standalone3.xml(生产集群3)。

尝试使用ansible根据它们所在的群集/主机部署这些配置中的每一个。这些配置进入标准的独立配置目录 - >飞路/独立/配置/ standalone.xml。

2 个答案:

答案 0 :(得分:1)

请参阅ansible docs中的Splitting Out Host and Group Specific Data。您可以在group_vars文件夹中为每个主机配置文件。

如果主持人被命名为'foosball'

 /etc/ansible/host_vars/foosball
 [ raleigh]
 127.0.0.1
 [webservers]
 127.0.1.2

在群组'raleigh'和'webservers'中,以下位置的YAML文件中的变量将可供主持人使用:

/etc/ansible/group_vars/raleigh
/etc/ansible/group_vars/webservers

答案 1 :(得分:1)

我认为解决方案是添加group_vars / host_vars,然后使用它们来确定要复制的文件。另一个解决方案是创建一个单独的standalone.xml文件,该文件位于templates目录中,然后您可以通过生成然后复制的变量来操作standalone.xml文件中的值。

dev (host file) ->
192.168.3.1

staging (host file) ->
192.168.3.2

prod (host file) ->
192.168.3.3

/etc/ansible/group_vars/all ->
wildfly_home: /usr/local/wildfly/
wildfly_config: "{{ wildfly_home }}standalone/configuration/"

/etc/ansible/host_vars/192.168.3.1 -> (contents)
standalone_config_path: dev/

/etc/ansible/host_vars/192.168.3.2 -> (contents)
standalone_config_path: staging/

/etc/ansible/host_vars/192.168.3.3 -> (contents)
standalone_config_path: prod/


roles/my-role/files/dev/standalone.xml
roles/my-role/files/staging/standalone.xml
roles/my-role/files/prod/standalone.xml

roles/my-role/tasks/main.yml -> (contents)
copy: src={{ standalone_config_path }}standalone.xml dest=dest={{ wildfly_config }}