Ansible 2.9 から 2.10 へ移行時の考慮点まとめ

インフラサーバ

はじめに

当方、Ansible 2.9 台を使用したことはありますが、Ansible 2.10 は未使用であり、Ansible 2.10 からはある程度仕様が変更になったとの情報を目にしていました。

2.10 以降では Ansible を使用する上で大きな変更点があるのか、が気になったため以下に情報をまとめます。

Ansible 使用者視点での差分

  • 2.10 以降でもほとんどの場合は 2.9 と同じ内容の Playbook で実行できそう
  • Playbook でのモジュール名の記述方法として、コレクション名を含む完全な形式での記述(FQCN での記述)が推奨となった
    • コレクション間で同名のモジュールが存在する可能性があるため
    • Index of all Modules で検索すればコレクション名を確認できる

Ansible パッケージについて

pip install ansible でインストールされるパッケージについて、Ansible 2.10 以降では ansibleansible-base の 2 つがインストールされるようになりました。

  • Ansible 2.9 台
    • ansible
  • Ansible 2.10 以降
    • ansible
    • ansible-base

2.9 台の ansible パッケージの内容が 2.10 台以降では ansibleansible-base の 2 つに分けられたということの様です。

Ansible 2.10 Porting Guide によると Ansible 2.10 は以下の 2 パートで構成されているとのこと。

  1. ansible-base: コマンドラインツールと、少数のプラグインおよびモジュール
  2. コレクションのセット
    • ansible パッケージのことと推測されます

また以下の注意書きがありました。(Google 翻訳まま)

  • Ansible 2.10 では、多くのプラグインとモジュールが AnsibleGalaxy のコレクションに移行されました。プレイブックは変更なしで引き続き機能するはずです
  • 一部のコレクションには重複するモジュール名が含まれている可能性があるため、使用するコレクションの明示的かつ信頼できる指標として、プレイブックで完全修飾コレクション名(FQCN)の使用を開始することをお勧めします
  • Index of all Modules を検索して、モジュールが再配置されたコレクションを見つけることができます

ansible-base に含まれるプラグインとモジュール一覧

Ansible.Builtin — Ansible Documentation

ansible および ansible-base のバージョンについて

pip freezeansible および ansible-base それぞれのバージョンを確認できます。

以下のように 2 つのパッケージでバージョンが一致しているとは限らないようです。

# pip freeze
ansible==3.3.0
ansible-base==2.10.8

ansible --version では ansible-base のバージョンが表示されます。

# ansible --version
ansible 2.10.8
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /root/.pyenv/versions/3.9.4/lib/python3.9/site-packages/ansible
  executable location = /root/.pyenv/versions/3.9.4/bin/ansible
  python version = 3.9.4 (default, Apr 26 2021, 02:50:05) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]

あえて Ansible 2.9 台の最新版をインストールする

以下のいずれかのコマンドで Ansible 2.9 台の最新版をインストールすることができます。

  • pip install "ansible==2.9.*"
  • pip install ansible~=2.9.0

Playbook でのコレクションの使用方法

Using Ansible collections — Ansible Documentation

インストール済みコレクションの確認

  • ansible-galaxy collection list
# ansible-galaxy collection list

# /root/.pyenv/versions/3.9.4/lib/python3.9/site-packages/ansible_collections
Collection                    Version
----------------------------- -------
amazon.aws                    1.4.1
ansible.netcommon             1.5.0
ansible.posix                 1.2.0
ansible.utils                 2.0.2
ansible.windows               1.5.0
arista.eos                    1.3.0
(以下略)

ansible-base から ansible-core へ

2021/4/26 に ansible-core (2.11.0) がリリースされたようです。

ansible-core は ansible-base の後継のようで、早速名前が変わったようです。

https://github.com/ansible/ansible/blob/stable-2.11/changelogs/CHANGELOG-v2.11.rst
Ansible Core Documentation — Ansible Core Documentation
Ansible-core 2.11 Porting Guide — Ansible Core Documentation

ansible-core のみインストールする場合は以下コマンドでできました。

  • pip install ansible-core

ansible パッケージと ansible-core を同時インストールしたい場合は、現時点では ansible のバージョン 4 以降を明示的に指定するとできるようです。

  • pip install ansible==4.0.0a1
  • pip install ansible==4.0.0a2
  • pip install ansible==4.0.0a3
  • pip install ansible==4.0.0a4

ansible 4.0.0b1 リリース

https://github.com/ansible-community/ansible-build-data/blob/main/4/ansible-4.0.0b1.deps

以下コマンドでインストールできました。

  • pip install ansible==4.0.0b1
# pip freeze
ansible==4.0.0b1
ansible-core==2.11.0

ansible-core 2.11.0 も一緒にインストールされました。

参考資料まとめ

Ansible 2.10 Porting Guide — Ansible Documentation
Galaxy NG
Index of all Modules — Ansible Documentation
Ansible.Builtin — Ansible Documentation
Using Ansible collections — Ansible Documentation
https://github.com/ansible/ansible/blob/stable-2.11/changelogs/CHANGELOG-v2.11.rst
Ansible Core Documentation — Ansible Core Documentation
Ansible-core 2.11 Porting Guide — Ansible Core Documentation
Announcing the Community Ansible 3.0.0 Package
Version 3.0.0 of the Ansible community package marks the end of the restructuring of the Ansible ecosystem

―――――――――――――

タイトルとURLをコピーしました