0

私は、同僚による古い役割に次のインクルードを持っています。

---
- name: deploy
  include: deploy.yml
  when: deploy is defined and  deploy == 'True'

- name: undeploy
  include: undeploy.yml
  when: undeploy is defined and undeploy == 'True'

- name: database-migrate
  include: database-migrate.yml
  when: db is defined and db == 'True'

ただし、ロールをどのように含めるかに関係なく、Ansible は各インクルードを自動的に処理します。--list-tasksオプションを使用してこれを確認できます。

たとえば、私のプレイブックには次のものがあります

  roles:
    - { role: vip-notification-services-app, deploy: 'True', tags: ['deploy']}

バージョン 2.1.1.0 (数週間前にアップグレード) で実行しています。この役割は、アップグレード前に正常に実行されていました。

したがって、このスタイルのロールへのインクルードが許可されなくなったのか、それとも別の構文を使用する必要があるのか​​ 疑問に思っています。

4

1 に答える 1

1

結果の条件を--list-tasks評価しないオプション。when

つまり、次の場合ですplaybook.yml

---
- hosts: localhost
  connection: local
  tasks:
    - debug:
      when: false

ansible-playbook playbook.yml --list-tasks表示されます:

playbook: test.yml

  play #1 (localhost): localhost    TAGS: []
    tasks:
      debug TAGS: []

ただし、debugタスクは実行されません (条件を に変更しても結果は変わりませんwith: true)。

Konstantin Suvorov が気付いたように、include常にすべてのタスクが含まれwhen、各タスクに条件付きで適用されます。したがって、--list-tasks結果として、常にすべてのタスクが表示されます。ただし、実際の実行では実行されません。

于 2016-10-09T01:42:48.763 に答える