今まで
今まで、Ansibleのタスクの記述順序は、以下のような順序で書いていた。
- name
- action
- +引数
- register
- when
- loop
- その他
とにかく、最初に名前で次にアクションだった。
- name: a task
debug:
msg:
- "foo: {{ item.foo }}"
- "bar: {{ item.bar }}"
when: item.enabled
loop: "{{ list }}"
tags: [never, debug]
↑↑のようなタスクくらいなら全く問題ないが、少し複雑なものを書き始めて1タスクが長くなると、忘れた頃に when
や loop
が出てくる。
特に、block
で複数タスクをまとめたりすると、本当に忘れた頃に when
が出てくる。
慌てて最初から読み直すことになり手間だ。
また、blockでは、blockに掛かる when
なのか、block中のタスクのwhen
なのか分からなくなることが出てきた。
これから
ということで、記述順序を変えてみることにした。
loop
とwhen
をactionより先に書くのだ。
- name
- ここは変わらない。まずはタスク名
- loop
- 次にループ系。
- ループに使用する変数
item
が後続で出てくる可能性を示すために先に書く
- when
when
はそもそものタスクを実行するかどうかに関わってくる。よって、actionより先に記述- また、loopの
item
変数を使うこともあるので、loopの後に記述する
- action
- +引数
- register
- その他
- name: a task
loop: "{{ list }}"
when: item.enabled
debug:
msg:
- "foo: {{ item.foo }}"
- "bar: {{ item.bar }}"
tags: [never, debug]
- name: block tasks
when: ...
block:
- name: Copy files to remote server
loop: ...
when: ...
copy:
src: ...
dest: ...
always:
- name: ...
action: ...
loop
やwhen
以外のキーワードはどうするか様子見中。