如何在同一环境中为多个主机定义 group_var
How to define group_var for multiple host in same environment
我正在编写一个 Ansible 剧本,它将多个 war 复制并部署到同一环境的不同服务器。
例如,我的 preprod 环境有 4 个不同的服务器,在每个版本中我得到 5 个 war 文件,比方说 test1.war、test2.war...test5.war。它们应该以这种方式部署 -
PreProd
- server1 : test1.war, test2.war
- server2 : test2.war, test5.war
- server3 : test3.war, test1.war, test5.war
等等。
现在我使用 group_vars 在一个地方用 preprod.yml
定义所有与 preprod 相关的变量。
我想了解我的库存会是什么样子。我从命令行将环境作为 "preprod" 传递,应该按照上面的方法复制和部署 war 文件。
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
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"
}
我正在编写一个 Ansible 剧本,它将多个 war 复制并部署到同一环境的不同服务器。
例如,我的 preprod 环境有 4 个不同的服务器,在每个版本中我得到 5 个 war 文件,比方说 test1.war、test2.war...test5.war。它们应该以这种方式部署 -
PreProd
- server1 : test1.war, test2.war
- server2 : test2.war, test5.war
- server3 : test3.war, test1.war, test5.war
等等。
现在我使用 group_vars 在一个地方用 preprod.yml
定义所有与 preprod 相关的变量。
我想了解我的库存会是什么样子。我从命令行将环境作为 "preprod" 传递,应该按照上面的方法复制和部署 war 文件。
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
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"
}