これは、Ansible Advent Calendar 2020 (Adventar版) の 22日目の記事です。
はじめに
pip install ansible
で Ansible 2.10 をインストールすると、2.9 まで標準で含まれたモジュールに概ね相当する Collection がセットでインストールされます。
Python の環境下 (例: ~/envs/venv/lib/python3.X/site-packages/ansible_collections
) に配置されます。
このバージョンの Collection がインストールされているか調べる場合は、ansible-galaxy collection list
コマンドを利用しますが、デフォルトだと ~/.ansible/collections/ansible_collections/
配下を検索しにいくため、site-packages
方面を検索してくれません。
-p ~/envs/venv/lib/python3.X/site-packages/ansible_collections
のように検索先を直接指定してもよいのですが、Ansible 公式ドキュメントにもう少し汎用的な方法(だたし長い)があったのでご紹介します。
- 環境
- ansible 2.10.4
- ansible-base 2.10.4
[2021/01/23 追記]
2.10.5 で ansible-galaxy collection list
を普通に実行したところ、site-packages
配下も検索してくれるようになっていました。
2.10.5 changelog から引用
Fix ansible-galaxy collection list to show collections in site-packages (https://github.com/ansible/ansible/issues/70147)
site-packages
配下の Collection も検索する方法
site-packages
方面を検索しない動作は、Porting Guide に Know Issue として掲載されてます。
対処方法として、以下のようなコマンドが紹介されています。
COLLECTION_INSTALL=$(python -c 'import ansible, os.path ; print("%s/../ansible_collections" % os.path.dirname(ansible.__file__))') ansible-galaxy collection list -p "$COLLECTION_INSTALL"
試してみる
普通に ansible-galaxy collection list
を実行した場合は、 ~/.ansible/collections/ansible_collections/
のみを検索します。
(a210) [root@centos7 work]# ansible-galaxy collection list # /root/.ansible/collections/ansible_collections Collection Version ------------- ------- ansible.utils 1.0.1
今度は、 Porting Guide にあった site-packages 配下の Collection も検索するコマンドを実行します。すると ~/.ansible/collections/ansible_collections/
に加えて、site-packages
も検索します。
(a210) [root@centos7 work]# COLLECTION_INSTALL=$(python -c 'import ansible, os.path ; print("%s/../ansible_collections" % os.path.dirname(ansible.__file__))') ansible-galaxy collection list -p "$COLLECTION_INSTALL" # /root/.ansible/collections/ansible_collections Collection Version ------------- ------- ansible.utils 1.0.1 # /root/envs/a210/lib/python3.6/site-packages/ansible_collections Collection Version ------------------------- ------- amazon.aws 1.2.1 ansible.netcommon 1.4.1 ansible.posix 1.1.1 ansible.windows 1.2.0 arista.eos 1.2.0 awx.awx 14.1.0 azure.azcollection 1.2.0 check_point.mgmt 1.0.6 chocolatey.chocolatey 1.0.2 cisco.aci 1.1.1 cisco.asa 1.0.4 cisco.intersight 1.0.8 cisco.ios 1.2.1 cisco.iosxr 1.2.0 cisco.meraki 2.1.2 cisco.mso 1.0.1 cisco.nxos 1.3.1 cisco.ucs 1.6.0 cloudscale_ch.cloud 1.3.0 community.aws 1.2.1 community.azure 1.0.0 community.crypto 1.3.0 community.digitalocean 1.0.0 community.docker 1.0.0 community.general 1.3.0 community.grafana 1.1.0 community.hrobot 1.0.0 community.kubernetes 1.1.1 community.libvirt 1.0.0 community.mongodb 1.1.1 community.mysql 1.1.1 community.network 1.3.0 community.okd 1.0.1 community.postgresql 1.0.0 community.proxysql 1.0.0 community.rabbitmq 1.0.1 community.routeros 1.0.0 community.skydive 1.0.0 community.vmware 1.4.0 community.windows 1.1.0 community.zabbix 1.1.0 containers.podman 1.3.2 cyberark.conjur 1.0.7 cyberark.pas 1.0.5 dellemc.os10 1.0.2 dellemc.os6 1.0.4 dellemc.os9 1.0.3 f5networks.f5_modules 1.6.0 fortinet.fortimanager 1.0.5 fortinet.fortios 1.0.15 frr.frr 1.0.3 gluster.gluster 1.0.1 google.cloud 1.0.1 hetzner.hcloud 1.2.0 ibm.qradar 1.0.3 infinidat.infinibox 1.2.3 junipernetworks.junos 1.2.1 mellanox.onyx 1.0.0 netapp.aws 20.9.0 netapp.elementsw 20.11.0 netapp.ontap 20.11.0 netapp_eseries.santricity 1.1.0 netbox.netbox 1.1.0 ngine_io.cloudstack 1.1.0 ngine_io.exoscale 1.0.0 ngine_io.vultr 1.0.0 openstack.cloud 1.2.0 openvswitch.openvswitch 1.1.0 ovirt.ovirt 1.2.3 purestorage.flasharray 1.5.0 purestorage.flashblade 1.4.0 servicenow.servicenow 1.0.3 splunk.es 1.0.2 theforeman.foreman 1.4.0 vyos.vyos 1.1.0 wti.remote 1.0.1 (a210) [root@centos7 work]#
おわりに
機能として site-packeges
を検索するようにする動きもあるようです。
[2021/01/23 追記]
2.10.5 で ansible-galaxy collection list
を普通に実行したところ、site-packages
配下も検索してくれるようになっていました。