web-dev-qa-db-ja.com

Ansible:変数が文字列と等しいかどうかを確認します

コマンドラインで次のように渡される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')"

しかし、何も機能していないようです。どうすればいいですか?

詳細:

  • 私はansible 1.7.2を使用しています
24
Jordan Ell

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
32