我在命令行中传递了一个ansible变量:
ansible-playbook -e environment=staging ansible/make_server.yml
我想在我的角色中加载一些变量,这取决于环境的价值。我尝试了很多不同的方法,例如:
- include_vars: staging_vars.yml
when: environment | staging
和
- include_vars: staging_vars.yml
when: "{{environment}} == "staging"
和
- include_vars: staging_vars.yml
when: "{{environment}} | match('staging')"
但似乎没有任何效果。我该怎么做?
详细说明:
答案 0 :(得分:29)
小心使用名为environment
的变量,它可能会导致问题,因为Ansible在内部使用它。我不记得它是否在文档中,但这是一个邮件列表线程:
https://groups.google.com/forum/#!topic/ansible-project/fP0hX2Za4I0
我们使用名为stage
的变量。
看起来你最终会连续出现这些:
- include_vars: testing_vars.yml
when: stage == "testing"
- include_vars: staging_vars.yml
when: stage == "staging"
- include_vars: production_vars.yml
when: stage == "production"
但你也可以只包括你的环境:
- include_vars: "{{ stage }}_vars.yml"
或者,在剧本级别使用vars_files
:
vars_files:
- vars/{{ stage }}_vars.yml