今まで
今まで、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以外のキーワードはどうするか様子見中。