11

Ansible を使用して、サービスが分散されているかどうかにかかわらず環境をデプロイしています。ansible-playbook に渡す引数に基づいて、条件付きで Playbook を含めたいと思います。

create_server.yml

---
- include: launch_ec2_instance.yml

- include install_postgres.yml
  when {{db}} == "Y"

- include install_redis.yml
  when {{redis}} == "Y"

これが私が create_server.yml を呼び出す方法です

ansible-playbook create_server.yml -i local --extra-vars "db=Y redis=N"

これを行うことは可能ですか?

4

2 に答える 2

15

はい。それが可能だ。when ステートメントにコロン (:) がありません。

---
- include: launch_ec2_instance.yml

- include install_postgres.yml
  when: {{ db }} == "Y"

- include install_redis.yml
  when: {{ redis }} == "Y"

中かっこ ({{ }}) を省略することもできます。

---
- include: launch_ec2_instance.yml

- include install_postgres.yml
  when: db == "Y"

- include install_redis.yml
  when: redis == "Y"
于 2014-03-21T22:01:26.687 に答える
4

インクルードステートメントがタスクの一部である場合にのみ適用されることを除いて、@ Ricoの答えは正しいです。

例えば。

---
tasks:
  - include install_postgres.yml
    when: db == "Y"

「create_server.yml」がそうであるように見えるように、プレイブックが単なるインクルードの束である場合、「いつ」は機能しません。

于 2015-05-20T01:53:47.873 に答える