Variables Ansible:检查变量是否等于字符串

Variables Ansible:检查变量是否等于字符串,variables,conditional,ansible,ansible-playbook,Variables,Conditional,Ansible,Ansible Playbook,我在命令行中传入了一个ansible变量: ansible-playbook -e environment=staging ansible/make_server.yml 我想根据环境的值在我的角色中加载一些变量。我尝试了很多不同的方法,例如: - include_vars: staging_vars.yml when: environment | staging 及 及 但似乎什么都不管用。我该怎么做 详情: 我使用的是ansible 1.7.2 小心使用名为环境的变量,它可能会导致

我在命令行中传入了一个ansible变量:

ansible-playbook -e environment=staging ansible/make_server.yml
我想根据环境的值在我的角色中加载一些变量。我尝试了很多不同的方法,例如:

- include_vars: staging_vars.yml
  when: environment | staging

但似乎什么都不管用。我该怎么做

详情:

  • 我使用的是ansible 1.7.2

小心使用名为
环境的变量,它可能会导致问题,因为Ansible在内部使用它。我不记得它是否在文档中,但这里有一个邮件列表线程:

我们使用一个名为
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\u文件

vars_files:
  - vars/{{ stage }}_vars.yml

环境是可以工作的,但您所说的环境是在内部使用的,Ansible在文档中说不要使用它。案例很重要:)
- include_vars: "{{ stage }}_vars.yml"
vars_files:
  - vars/{{ stage }}_vars.yml