1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ansible Tips: blockに対するtagsなどの指定はinclude_tasksなどにおいて呼び出し先にも継承される

Posted at

Ansible playbookが意図通り動かないことがあったため、原因を確認したことの備忘

元の処理(OK)

以下のような処理があった。

- name: 処理1
  foo: 
  tags: allways

- name: 処理2
  bar: 
  tags: allways

- name: 処理3
  loop: [tasks1, tasks2, tasks3]
  include_tasks:
    file: "{{ item }}.yml"
    apply:
      tags: "{{ item }}"
  tags: always

tags: alwaysが全タスクに付いていたので纏めようとした。

tagsをblockで集約(→NG)

- tags: always
  block:
  - name: 処理1
    foo: 

  - name: 処理2
    bar: 

  - name: 処理3
    loop: [tasks1, tasks2, tasks3]
    include_tasks:
      file: "{{ item }}.yml"
      apply:
        tags: "{{ item }}"

しかし、--tags tasks2などにより実行処理を制御しようとしても、tasks1, tasks2, tasks3 全ての処理が実行されてしまう挙動となった。

原因

blockでのtagsなどの属性指定は、include_tasksなどではapplyをつけていなくとも呼び出し先にも継承されてしまう為。

Note
All tasks in a block, including the ones included through include_role, inherit directives applied at the block level.

教訓: blockでinclude_tasksなどを使う際、blockの属性は子孫にも引き継がれることに注意

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?