【问题标题】:How to organize Ansible inventory with datacenter and environment?如何使用数据中心和环境组织 Ansible 库存?
【发布时间】:2017-03-22 20:09:56
【问题描述】:

如果我们有 2 个数据中心,东部和西部。

然后我们有 3 个环境 DEV、QA、PROD。

每个数据中心和环境都有自己的 Consul 集群。

现在我想从清单中引用 Consul 集群,例如:

consul_servers: "{{ groups['consul'] | to_json }}"

我如何组织我的清单和 group_vars 以只为该数据中心和环境生成正确的 Consul 集群主机?

我的一个想法是为每个数据中心和环境创建一个清单文件。

例如:

  • west-dev.ini
  • west-qa.ini
  • west-prod.ini
  • east-dev.ini
  • east-qa.ini
  • east-prod.ini

这似乎是合理的,但现在我如何处理 group_vars 中的仅环境变量或仅数据中心变量?我让他们成为儿童组吗?

【问题讨论】:

    标签: ansible ansible-inventory


    【解决方案1】:

    其中一种方法是使用符号链接。在单独的文件中定义所有常见的环境和数据中心变量,然后将所有必需的组合作为子文件夹,其中 group_vars/all 包含指向适当 var 文件的链接。

    这是两个数据中心east/west 和两个环境dev/prod 的示例:

    virt_inv/
    ├── dc_east.yml
    ├── dc_west.yml
    ├── east-prod
    │   ├── group_vars
    │   │   └── all
    │   │       ├── dc.yml -> ../../../dc_east.yml
    │   │       └── env.yml -> ../../../env_prod.yml
    │   └── hosts
    ├── env_dev.yml
    ├── env_prod.yml
    └── west-dev
        ├── group_vars
        │   └── all
        │       ├── dc.yml -> ../../../dc_west.yml
        │       └── env.yml -> ../../../env_dev.yml
        └── hosts
    

    我在这里只定义了east-prodwest-dev 的组合,但是你可以用类似的方式来做其他的。

    这是演示内容:

    $ find virt_inv -type f -print -exec cat {} \;
    virt_inv/dc_east.yml
    datacenter: east-02
    virt_inv/dc_west.yml
    datacenter: west-01
    virt_inv/east-prod/hosts
    [servers]
    host4
    host5
    virt_inv/env_dev.yml
    env: developer
    virt_inv/env_prod.yml
    env: production
    virt_inv/west-dev/hosts
    [servers]
    host1
    host2
    

    结果:

    $ ansible all -i virt_inv/east-prod/hosts -m debug -a 'msg={{datacenter}}-{{env}}'
    host5 | SUCCESS => {
        "msg": "east-02-production"
    }
    host4 | SUCCESS => {
        "msg": "east-02-production"
    }
    
    $ ansible all -i virt_inv/west-dev/hosts -m debug -a 'msg={{datacenter}}-{{env}}'
    host2 | SUCCESS => {
        "msg": "west-01-developer"
    }
    host1 | SUCCESS => {
        "msg": "west-01-developer"
    }
    

    【讨论】:

    • 谢谢,这似乎是我需要的
    猜你喜欢
    • 2018-08-04
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2016-10-15
    • 2011-09-02
    相关资源
    最近更新 更多