はじめに
Ansible 2.9 には ansible-galaxy collection list
のような、コレクションの一覧を表示するコマンドがありません。
おそらく、各コレクションの MANIFEST.json
の version
を見るしかないかと思います。
- 例:
ansible.utils
2.4.0 のMANIFEST.json
{ "collection_info": { "namespace": "ansible", "name": "utils", "version": "2.4.0", ...(略)... }
いくつもコレクションをインストールしている状態ですと、ひとつずつ見るのも手間です。
jq
を使ってそれらしく一覧を表示できるコマンドのサンプルをメモしておきます。
動作確認環境: ansible 2.9.25
コマンド
jq '.collection_info | .namespace + "." + .name + ": " + .version' ~/.ansible/collections/ansible_collections/*/*/MANIFEST.json
コレクションのインストール先は、デフォルトの ~/.ansible/collections/
を想定しています。
実行例
$ jq '.collection_info | .namespace + "." + .name + ": " + .version' ~/.ansible/collections/ansible_collections/*/*/MANIFEST.json "ansible.netcommon: 2.4.0" "ansible.utils: 2.4.0" "cisco.ios: 2.4.0" "netbox.netbox: 3.1.1" "yamaha_network.rtx: 1.0.1"
表示形式はお好みで・・
補足
ansible-config dump
で COLLECTIONS_PATHS
の設定拾って、そのディレクトリを対象にするのがもっといいやり方かなと思います。今回は手抜きです。
$ ansible-config dump | grep COLLECTIONS_PATHS COLLECTIONS_PATHS(default) = ['/home/codespace/.ansible/collections', '/usr/share/ansible/collections']