如何在同一环境中为多个主机定义 group_var [英] How to define group_var for multiple host in same environment

查看:24
本文介绍了如何在同一环境中为多个主机定义 group_var的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写 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"传递,这应该按照上面的方式复制和部署战争文件.

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

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆