2014-12-06 231 views
14

我在命令行上傳遞這樣一個ansible變量:Ansible:檢查是否變量等於串

ansible-playbook -e environment=staging ansible/make_server.yml 

我想在我的角色一些變量dependeing對環境的價值來加載。我已經嘗試了很多不同的方法,如:

- 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')" 

,但似乎沒有任何工作。我該怎麼做呢?

詳情:

  • 我使用ansible 1.7.2

回答

21

小心一個叫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 
+2

環境工作,但你所說的環境在內部使用,Ansible在docs不要使用它。案例很重要:) – PhillipHolmes 2014-12-08 16:33:10

相關問題