如何在同一环境中为多个主机定义group_var [英] How to define group_var for multiple host in same environment
问题描述
我正在写一本Ansible剧本,该剧本将多次战争复制并部署到同一环境的不同服务器上.
I am writing a Ansible playbook which copy and deploy multiple wars to different servers of same environment.
例如,我的preprod环境有4个不同的服务器,并且在每个发行版上我都有5个war文件,比如test1.war,test2.war ... test5.war.应该以这种方式部署它们-
For example, my preprod environment has 4 different servers and on every release I get 5 war files let's say test1.war, test2.war... test5.war. They should be deployed in this way -
PreProd
- server1 : test1.war, test2.war
- server2 : test2.war, test5.war
- server3 : test3.war, test1.war, test5.war
依此类推.
现在,我正在使用group_vars通过preprod.yml
在一处定义所有与preprod相关的变量.
Now I am using group_vars to define all the variables related to preprod at one place with preprod.yml
.
我试图了解我的广告资源的样子.我从命令行将环境作为"preprod"传递,并且应该按照上述说明复制和部署war文件.
I am trying to understand how my inventory will look like. I am passing the environment as "preprod" from command line and that should copy and deploy the war files as per above.
ansible-playbook -i my_inventory main.yml --tags=copy,wardeploy -e release_version=<<release_version>> -e target_env=preprod
推荐答案
例如广告资源
shell> cat hosts
[preprod]
server1
server2
server3
group_vars
the group_vars
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"
}
这篇关于如何在同一环境中为多个主机定义group_var的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!