ansible - 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}
以便动态设置库存组。
我尝试按照上面显示的方式进行操作,但它没有获取环境变量值。
您对动态列表还有其他建议吗?环境变量将是我的首选。
解决方案
您的问题有两个答案:多次播放,或动态库存插件;静态清单文件中没有变量替换之类的东西
对于多重播放版本,可以使用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
推荐阅读
- javascript - 语义下拉多选的限制
- react-native - 未定义 - 从初始屏幕传递给“App.js”的参数
- arrays - 如何阻止数组生成太多对象?
- jenkins - Groovy 中使用 grep 的高级 if else 语句
- spring-data-jpa - org.hibernate.MappingException 无法确定表的类型
- javascript - 如何从 React 组件内的映射项中设置状态
- list - 确定 Haskell 列表中是否存在重复元素
- angular - 将我的项目从 Angular 7.2 升级到 Angular 8 后,编译时间增加了 3 倍。我该如何解决
- api - Using a generic OpenID Connect Resource Provider (RP) library
- android - 如何从 Firebase 数据库中获取用户 ID