ansible 2.10.0b1を #tekunabe で触ってみたメモ
最近毎週土曜日に #tekunabe でよこちさんが配信されている Youtubeを見ているのですが、本日は特別に日曜日にも開催されました。
テーマは「ansible 2.10.0 b1」です。ベータ版の最新版です。
配信に合わせて自身でも操作していましたが、いろいろと分かったことがあります。
既にまとめられているサイトも多いと思いますが、自分なりに理解した内容をまとめてみます。
配信者のよこちさんの当日のふりかえり記事はこちら。
[Ansible] 「つまずき Ansible 【Part7】Ansible 2.10.0b1 でずっこける」ふりかえり - てくなべ (tekunabe)
- 導入方法
- プラグインやモジュールの分離
- モジュールがどこに移行されたかを調べるには
- これまでのPlaybookとの互換性は?
- collectionでインストールするものをオフラインで使うには?
- 正式リリースは?
- まとめ
- おまけ
導入方法
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)]
プラグインやモジュールの分離
イメージとしては、以下のようになるようです。
上記のように、これまでAnsibleをインストールするだけで使えていたモジュールも、モノによっては別途ansible-galaxyコマンドでCollectionインストールする必要が出てきました。
ansible-baseだけのインストールで入るモジュールの数は、以下のようにたった68個…
Ansible 2.10 のインパクトがこれで伝わりますでしょうか・・ pic.twitter.com/nrGYwmpNOh
— よこち(yokochi) (@akira6592) 2020年6月18日
配信の際には、debugメッセージの出力をyaml形式に変えるコールバックプラグインもansible-baseだけでは利用できず、「community.general」というcollectionを導入することで利用することができるようになっていました。
このあたり、2.9のリリースの頃からcollectionへの移行の話は出ていましたが、本格的に実装されたということですね。
collectionのインストール方法は以下の通り。
ansible-galaxy collection install <collection名>
※6/22追記
よこちさんもブログに追記していただいていますが、どうやらpip install ansibleであれば、これまで同様、同梱モジュール系も含まれるようです。
コンテナのOSみたいに、最小パッケージとしての「ansible-base」という単位が増えたという捉え方をするのが良いのかもしれませんね。
修正してみたイメージ図がこちら。
モジュールがどこに移行されたかを調べるには
よこちさんが配信の中でも紹介されていましたが、以下のQiitaの記事に非常にわかりやすくまとめていただいていました。
これは手動で追うのは大変ですね…
ただ、下記にも記載したものを一覧表代わりに使うことはできそうです。
これまでのPlaybookとの互換性は?
上記Qiitaの記事内でも紹介されていますが、ansible_builtin_runtime というものが組み込まれており、現在のところ、これまでのモジュールの指定を新しい指定に変換してくれる機構が動作するため、Playbook自体の修正は必須ではないようです。
ansible/ansible_builtin_runtime.yml at devel · ansible/ansible · GitHub
ただ、あくまでもPlaybookに関してだけであり、モジュールやプラグインなどは別途導入する必要があります。
正式には、collectionで入れたものは、FQCNという書式で書く必要があります。
例)fortinet.fortios.モジュール名
互換性の機能がもし無くなるような場合、Playbook修正祭りが発生しますね…。
今後どうなるかはわからない点なので、要注意ポイントだと思います。
collectionでインストールするものをオフラインで使うには?
さいとうさんが素敵なナレッジをくださいました。ありがとうございます!!
2.10.0ではansible-galaxy collection download <COLLECTION_NAME>でcollectionsのアーカイブをダウンロードできるんですよ。同時に作られるrequirements.ymlとセットでオフラインホストに持っていってansible-galaxy collection install -r requirements.ymlしてやれば展開され手使えます
— SAITO Hideki (@saito_hideki) 2020年6月21日
なるほど、オプションでdownloadってやるとアーカイブでダウンロードできて、requirements.ymlとセットで活用すると…
これならオフラインでもだいぶ楽に展開できそうです。
正式リリースは?
2020年8月頃が予定されているとのこと。
今のうちに準備をしておいたほうがよさそうですね…
まとめ
- 2.10から本格的にcollectionの利用が始まる
- 今のうちにansible-galaxyコマンドに親しんでおいたほうが良さそう
- Playbookの修正は必須ではない
- モジュールやプラグインの多くは別途インストールする必要が出てきた
- オフライン用のアーカイブオプションが存在する
どなたかの理解の一助になれば幸いです。
おまけ
配信中、少しだけ遊んでた成果がこちら。
ansible完全に理解したてんこさん pic.twitter.com/T3rW1edbLW
— tatematsu_san (@tk4_jj) 2020年6月21日
てんこ可愛いよてんこ