はじめに
頭の体操なので、実運用で利用するのはおすすめしませんシリーズです。
Playbook は YAML で書きます。ディクショナリの順番には処理上の意味はありません。ところが、慣例上は以下のように hosts
から書くことが書くことが多いのでしょうか。
- hosts: localhost gather_facts: no # ...略...
今回はこれを、処理に影響を与えない範囲で読みにくく崩してみます。
読みにくい Playbook
- gather_facts: false tasks: - when: 1 == 1 debug: msg: "hello!" name: debug test connection: local hosts: localhost
ディクショナリの順番を変えただけですが、読みにくくなったと思います。
gather_facts
、 tasks
、connection
、hosts
は 同じ階層のディクショナリのキーなので、どういう順番でも処理上は関係ないわけです。
ちゃんと実行できます。
$ ansible-playbook -i localhost, 00.yml PLAY [localhost] ******************************************************************************** TASK [debug test] ******************************************************************************** ok: [localhost] => { "msg": "hello!" } PLAY RECAP ******************************************************************************** localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
よく見かける Playbook
よく見かけるのは以下のような書き方ではないでしょうか。
- hosts: localhost gather_facts: false connection: local tasks: - name: debug test debug: msg: "hello!" when: 1 == 1
- 各プレイでは
hosts
が最初、gather_facts
などを続ける - 各タスクでは
name
が最初、when
が最後の方
しっくりきますね。はやり、よく見かける順番で書くのがいいと思います。
ただ、when
については最後の方に書く週間が不思議に感じられる方もいらっしゃるようです。プログラムでいうと if
に相当するので、タスクの最初の方に定義するのが自然ではという考え方も分かる気がします。
参考
もっとひどいのはこちら tekunabe.hatenablog.jp