てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible] 公式ドキュメントに優先順に関する総合的なページができた(設定、コマンドライン引数、Playbook Keywords、変数)

はじめに

2019年7月、Ansible の公式ドキュメントに、優先度に関する総合的なページができていました。

docs.ansible.com

f:id:akira6592:20191020090515p:plain
左メニューのここから

対象は以下の4つです。

今まで、変数の優先順位や、ansible.cfgの優先順位のように、個別の説明ページはありました。今回はそれらの上位にあたるページのようです。


Playbook keywords の場合

たとえば、以下のように Play レベル、Task レベルそれぞれに connection が指定されている場合、基本は Play レベルで指定されている ssh で、2つめの Task は、Task レベルで指定されている paramiko での方式になります。

- hosts: all
  connection: ssh
  tasks:
    - name: This task uses ssh.
      ping:

    - name: This task uses paramiko.
      connection: paramiko
      ping:

引用元)


ところで

Playbook Keywords と 変数 はどちらが勝つ?

Playbook Keywords 内の対決、変数内の対決は上記のドキュメント経由で分かるのですが、「Playbook Keywords 対 変数」のようにジャンル(?)をまたいだ対決はどうなるのでしょうか。

例えば、コネクションプラグインの指定は複数の方法があります。Playbook Keyword としての connection: hogehoge でも指定できますし、変数として、ansible_connection: hogehoge も指定できます。

以下のツイートで、言及されていました。

勝ち 負け 補足
Task レベルの ansible_connection 変数 Play レベルの connection キーワード
インベントリの ansible_connection 変数 Play レベルの connection キーワード 変数同士の対決であれば、Play レベルが勝つので、直感に反するという意見も

混乱のもとになるので、コネクションプラグインの指定は変数による指定に統一したほうがいいと思います。