首页 > 解决方案 > Ansible - 如何通过环境变量在库存文件中添加客户端列表

问题描述

我有以下库存文件

[vm_group]
xyz001.hq.company.com
xyz002.hq.company.com


[vm_group:vars]
ansible_connection=winrm
ansible_winrm_transport=ntlm
ansible_port=5986
ansible_winrm_server_cert_validation=ignore  

我有一个名为 CLIENT_LIST 的环境变量

echo $CLIENT_LIST
xyz001.hq.company.com,xyz002.hq.company.com

我怎么能做这样的事情

[vm_group]
${CLIENT_LIST}

以便动态设置库存组。
我尝试按照上面显示的方式进行操作,但它没有获取环境变量值。
您对动态列表还有其他建议吗?环境变量将是我的首选。

标签: ansibleansible-inventory

解决方案


您的问题有两个答案:多次播放,或动态库存插件;静态清单文件中没有变量替换之类的东西

对于多重播放版本,可以使用add_host:

- hosts: localhost
  connection: local
  tasks:
  - add_host:
      name: '{{ item }}'
      groups:
      - vm_group
    with_items: '{{ lookup("env", "CLIENT_LIST").split(",") }}'

- hosts: vm_group
  # and you're of to the races

对于动态库存版本,世界就是你的牡蛎:https ://docs.ansible.com/ansible/2.9/plugins/inventory.html#plugin-list


推荐阅读