Ansible 如何为同一环境中的多个主机定义组_var

Ansible 如何为同一环境中的多个主机定义组_var,ansible,ansible-inventory,Ansible,Ansible Inventory,我正在写一本Ansible剧本,将多场战争复制并部署到同一环境的不同服务器上 例如,我的prepod环境有4个不同的服务器,每个版本我都会得到5个war文件,比如test1.war、test2.war。。。测试5.战争。它们应该以这种方式部署- PreProd - server1 : test1.war, test2.war - server2 : test2.war, test5.war - server3 : test3.war, test1.war, test5.war

我正在写一本Ansible剧本,将多场战争复制并部署到同一环境的不同服务器上

例如,我的prepod环境有4个不同的服务器,每个版本我都会得到5个war文件,比如test1.war、test2.war。。。测试5.战争。它们应该以这种方式部署-

PreProd
   - server1 : test1.war, test2.war
   - server2 : test2.war, test5.war
   - server3 : test3.war, test1.war, test5.war
等等

现在我使用group_vars在一个地方用
prepod.yml
定义与prepod相关的所有变量

我正在努力了解我的库存情况。我从命令行以“prepod”的形式传递环境,它应该按照上面的说明复制和部署war文件

ansible-playbook -i my_inventory  main.yml --tags=copy,wardeploy -e release_version=<<release_version>> -e target_env=preprod
ansible playbook-i my_inventory main.yml--tags=copy,wardeploy-e release\u version=-e target\u env=prepod

例如,库存

shell> cat hosts
[preprod]
server1
server2
server3
该集团

shell> cat group_vars/preprod.yml
preprod_wars:
  server1: [test1.war, test2.war]
  server2: [test2.war, test5.war]
  server3: [test3.war, test1.war, test5.war]
还有剧本

shell> cat playbook.yml
- hosts: preprod
  tasks:
    - debug:
        msg: "Deploy {{ item }} on {{ inventory_hostname }}"
      loop: "{{ preprod_wars[inventory_hostname] }}"
给予

ok: [server2] => (item=test2.war) => {
    "msg": "Deploy test2.war on server2"
}
ok: [server2] => (item=test5.war) => {
    "msg": "Deploy test5.war on server2"
}
ok: [server1] => (item=test1.war) => {
    "msg": "Deploy test1.war on server1"
}
ok: [server1] => (item=test2.war) => {
    "msg": "Deploy test2.war on server1"
}
ok: [server3] => (item=test3.war) => {
    "msg": "Deploy test3.war on server3"
}
ok: [server3] => (item=test1.war) => {
    "msg": "Deploy test1.war on server3"
}
ok: [server3] => (item=test5.war) => {
    "msg": "Deploy test5.war on server3"
}