はじめに
2023年5月にリリース予定の ansible-core 2.15 で、vars
ディレクティブ直下にリストで変数を定義する方法が Deprecated(非推奨)として警告が表示されるようになります。ansible-core 2.15 の Porting Guide にも掲載されています。
言葉にするとわかりにくいのですが、以下のような定義方法です。
vars: - myvar1: myvalue1 - myvar2: myvalue2 - myvar3: myvalue3
たまにこのような定義を見かけます。
実際どのような警告になるのか確認したかったのでベータ版で試しました。
- 環境
- ansible-core 2.15.0b2
Playbook
こんな Playbook で試します。
--- - name: Test play hosts: localhost connection: local gather_facts: false vars: - myvar1: myvalue1 - myvar2: myvalue2 - myvar3: myvalue3 tasks: - name: Test debug ansible.builtin.debug: msg: "{{ myvar1 }}"
おためし
Playbook の実行結果です。
% ansible-playbook -i localhost, test.yml [DEPRECATION WARNING]: Specifying a list of dictionaries for vars is deprecated in favor of specifying a dictionary. This feature will be removed in version 2.18. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. PLAY [Test play] ****************************************************************************************************** TASK [Test debug] ***************************************************************************************************** ok: [localhost] => { "msg": "aaaaaaa" } PLAY RECAP ************************************************************************************************************ localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ということで、[DEPRECATION WARNING]: Specifying a list of dictionaries for vars is deprecated in favor of specifying a dictionary. This feature will be removed in version 2.18.
という非推奨警告が表示されました。
上記の Playbook は Play変数としての vars
でしたが、以下のようなタスク変数の vars
でも警告が表示されました。
...(略)... tasks: - name: Test debug ansible.builtin.debug: msg: "{{ myvar1 }}" vars: - myvar1: myvalue1 - myvar2: myvalue2 - myvar3: myvalue3
警告が表示されない定義方法
vars
を以下のように定義すれば警告は表示されません。
...(略)... vars: myvar1: myvalue1 myvar2: myvalue2 myvar3: myvalue3 ...(略)...
この定義の方が馴染みがある方が多いと思います。
補足
もちろん、リストを含む変数の定義はこれからも大丈夫です。
...(略)... vars: mylist: # OK - myvalue1 - myvalue2 - myvalue3 ...(略)...
おわりに
今すぐ慌てて修正するほどでもないですが、これから書く Playbook は警告が表示されないかたちで定義するのが良さそうです。
[2024/09/25 追記]
ansible-core 2.18 で警告になっていた指定方法のサポートが削除されるようです。おそらくエラーになると思います。