コマンドラインで次のように渡される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')"
しかし、何も機能していないようです。どうすればいいですか?
詳細:
environment
という変数に注意してください。Ansibleが内部的に使用するため、問題が発生する可能性があります。ドキュメント内にあるかどうかは思い出せませんが、ここにメーリングリストのスレッドがあります。
https://groups.google.com/forum/#!topic/ansible-project/fP0hX2Za4I
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