我想根据我在运行脚本时定义的环境标签过滤 ec2 实例,即
ansible-playbook start.yml -e env=dev
不过,插件好像没有解析变量。关于如何完成这项任务的任何想法?
我的 aws_ec2.yml:
---
plugin: aws_ec2
regions:
- eu-central-1
filters:
tag:Secure: 'yes'
tag:Environment: "{{ env }}"
hostnames:
- private-ip-address
strict: False
groups:
keyed_groups:
- key: tags.Function
separator: ''
编辑
运行 playbook 时不会出现错误消息。 ansible 将变量完全作为字符串处理的唯一问题
tag:Environment: "{{ env }}"
而不是值tag:Environment: dev
这篇文章已经有几年了,但是因为这似乎仍然是一个问题我想分享我们的解决方法:
在开始实际的管道之前,我们使用 Ansible 本身从模板生成清单插件文件。在此之后,将通过运行
ansible-inventory -i aws_ec2.yml ..
等创建库存。
使用这种方法,我们不必为每个组合创建新的清单插件文件,也不必为实际的剧本重用变量。
也许将来有人会觉得这有帮助。