てんこ

ブログ名は愛猫(てん)の愛称です。中身は個人のIT系学習記録です。

ansible 2.10.0b1を #tekunabe で触ってみたメモ

最近毎週土曜日に #tekunabe でよこちさんが配信されている Youtubeを見ているのですが、本日は特別に日曜日にも開催されました。

テーマは「ansible 2.10.0 b1」です。ベータ版の最新版です。

tekunabe.connpass.com

配信に合わせて自身でも操作していましたが、いろいろと分かったことがあります。

既にまとめられているサイトも多いと思いますが、自分なりに理解した内容をまとめてみます。

配信者のよこちさんの当日のふりかえり記事はこちら。

[Ansible] 「つまずき Ansible 【Part7】Ansible 2.10.0b1 でずっこける」ふりかえり - てくなべ (tekunabe)

導入方法

pip で以下のようにインストールします。

pip install ansible-base

結果、以下のようにansible 2.10.0b1がインストールされました。

$ ansible --version

ansible 2.10.0b1
  config file = /home/ansible/ansible-study/ansible.cfg
  configured module search path = ['/home/ansible/a10-ansible/a10_ansible/library']
  ansible python module location = /home/ansible/ansible-study/ansible210b1/lib64/python3.6/site-packages/ansible
  executable location = /home/ansible/ansible-study/ansible210b1/bin/ansible
  python version = 3.6.8 (default, Aug  7 2019, 17:28:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

プラグインやモジュールの分離

イメージとしては、以下のようになるようです。

f:id:tatematsu_san:20200621223711p:plain

上記のように、これまでAnsibleをインストールするだけで使えていたモジュールも、モノによっては別途ansible-galaxyコマンドでCollectionインストールする必要が出てきました。

ansible-baseだけのインストールで入るモジュールの数は、以下のようにたった68個…

配信の際には、debugメッセージの出力をyaml形式に変えるコールバックプラグインもansible-baseだけでは利用できず、「community.general」というcollectionを導入することで利用することができるようになっていました。

このあたり、2.9のリリースの頃からcollectionへの移行の話は出ていましたが、本格的に実装されたということですね。

collectionのインストール方法は以下の通り。

ansible-galaxy collection install <collection名>

※6/22追記

よこちさんもブログに追記していただいていますが、どうやらpip install ansibleであれば、これまで同様、同梱モジュール系も含まれるようです。

コンテナのOSみたいに、最小パッケージとしての「ansible-base」という単位が増えたという捉え方をするのが良いのかもしれませんね。

修正してみたイメージ図がこちら。

f:id:tatematsu_san:20200622202539p:plain

モジュールがどこに移行されたかを調べるには

よこちさんが配信の中でも紹介されていましたが、以下のQiitaの記事に非常にわかりやすくまとめていただいていました。

qiita.com

これは手動で追うのは大変ですね…

ただ、下記にも記載したものを一覧表代わりに使うことはできそうです。

これまでのPlaybookとの互換性は?

上記Qiitaの記事内でも紹介されていますが、ansible_builtin_runtime というものが組み込まれており、現在のところ、これまでのモジュールの指定を新しい指定に変換してくれる機構が動作するため、Playbook自体の修正は必須ではないようです。

ansible/ansible_builtin_runtime.yml at devel · ansible/ansible · GitHub

ただ、あくまでもPlaybookに関してだけであり、モジュールやプラグインなどは別途導入する必要があります。

正式には、collectionで入れたものは、FQCNという書式で書く必要があります。

例)fortinet.fortios.モジュール名

互換性の機能がもし無くなるような場合、Playbook修正祭りが発生しますね…。

今後どうなるかはわからない点なので、要注意ポイントだと思います。

collectionでインストールするものをオフラインで使うには?

さいとうさんが素敵なナレッジをくださいました。ありがとうございます!!

なるほど、オプションでdownloadってやるとアーカイブでダウンロードできて、requirements.ymlとセットで活用すると…

これならオフラインでもだいぶ楽に展開できそうです。

正式リリースは?

2020年8月頃が予定されているとのこと。

今のうちに準備をしておいたほうがよさそうですね…

まとめ

  • 2.10から本格的にcollectionの利用が始まる
    • 今のうちにansible-galaxyコマンドに親しんでおいたほうが良さそう
  • Playbookの修正は必須ではない
    • モジュールやプラグインの多くは別途インストールする必要が出てきた
  • オフライン用のアーカイブオプションが存在する

どなたかの理解の一助になれば幸いです。

おまけ

配信中、少しだけ遊んでた成果がこちら。

てんこ可愛いよてんこ