てくなべ (tekunabe)

ansible / network automation / 学習メモ / 思考メモ

ansible-core 2.20.0 がリリース。便利そうな点と注意点

はじめに

2025/11/04 に ansible-core 2.20.0 がリリースされました。

コードネームは「Good Times Bad Times」です。

www.youtube.com

CHANGELOG などでぱっと見で気になったことを簡単ですが、まとめます。

先に、リリースの時によくチェックするドキュメントを最初にまとておきます。詳細や正確なことは一次情報をあたっていただくようお願いします。

便利そうなポイント

Play argument spec validation 機能の追加(ただし tech preview 段階)

これまで、ロール単位で引数(変数)の値をチェックする機能として、Role argument validation がありました。

今回は、tech preview 段階ですが、Play の単位でもチェックする機能が付いたようです。

docs.ansible.com

Add tech preview play argument spec validation, which can be enabled by setting the play keyword validate_argspec to True or the name of an argument spec.

CHANGELOG より引用)

関連PR: add tech preview play argument spec validation by s-hertel · Pull Request #85763 · ansible/ansible · GitHub

予約されているタグを使用すると警告される

ansible-playbook コマンドのオプションで指定するタグにおいて、仕様で予約されているタグがあります(taggedalluntagged)。これらの予約タグを指定(ansible-playbook コマンドではなく Playbook 内に)使用すると警告されるようになったそうです。

たまたま予約タグを同じ名前のタグを使ってしまって意図しない動作を引き起こすより、こうやって警告してくれた方が親切だと思います。

ansible now warns if you use reserved tags that were only meant for selection and not for use in play.

CHANGELOG より引用)

関連PR: tags warn wwhen using reserved tags by bcoca · Pull Request #85631 · ansible/ansible · GitHub

ちょっと注意ポイント

サポートする Python のバージョンが引き上げ

新しい Python バージョンをサポートしながら、メンテナンス性を保つには、過去のバージョンのサポートを無くしていく必要がありまうす。

今回も、コントロールノード側、マネージドノード側それぞれでポートする Python のバージョンが引き上げがれました。

なお、ansible-core と サポートする Python のバージョンの関係は、以下の表にまとまっています。

Releases and maintenance — Ansible Community Documentation

コントロールノード側で Python 3.11 のサポートがなるくなる

Ansible 自身が動く環境(自動化対象サーバーではなく)での Python のサポートについて 3.11 がなくなりました。

ansible - Drop support for Python 3.11 on the controller.

CHANGELOG より引用)

マネージドノード側で Python 3.8 のサポートがなるくなる

マネージドノード(自動化対象サーバー)での Python のサポートについて 3.8 がなくなりました。

ansible - Drop support for Python 3.8 on targets.

CHANGELOG より引用)

INJECT_FACTS_AS_VARS が非推奨に

ポーティングガイドにも載っていますが、現状はデフォルト True ですが、2.24 で False 扱いになるようです。

今のうちに、ファクトの参照は ansible_hogehoge ではなく ansible_facts['hogehoge'] にしておいた方がよさそうです。

INJECT_FACTS_AS_VARS configuration currently defaults to True, this is now deprecated and it will switch to False by Ansible 2.24.

CHANGELOG より引用)

関連PR: include_vars: Code cleanup and integration tests by Akasurde · Pull Request #85292 · ansible/ansible · GitHub

argspec validation における 後方互換性の確保

argspec validation(おそらく以前からある Role argument spec validation のこと)の処理において、None を 空文字として扱うように変更されたようです。

ansible-core 2.19 でテンプレート処理が色々変わりましたが、それ以前(2.18)との互換性を確保するためという目的です。

argspec validation - The str argspec type treats None values as empty string for better consistency with pre-2.19 templating conversions.

CHANGELOG より引用)

関連PR: Backward-compatible None handling in template concat and argspec str by nitzmahone · Pull Request #85652 · ansible/ansible · GitHub

ポーティングガイドにも載っています。

ternary フィルターの評価仕様が変更

ternary filter - evaluate values lazily (#85743)

CHANGELOG より引用)

関連PR: ternary: evaluate values lazily by mkrizek · Pull Request #85752 · ansible/ansible · GitHub

おわりに

簡単ですが、 ansible-core 2.20.0 の便利そうな点とちょっと注意が必要な点をまとめました。

机上チェックだけなので、もし試せたら別途記事にしたいと思います。