はじめに
Collection は ansible-galaxy collection install
コマンドでインストールします。
ただし、現状はアップデートするための専用オプションはありません(issueはopen)。また、すでに同名の collection がインストールされている
この記事では -f
オプションを使って強制的にアップデートや、バージョン指定してインストールする方法を紹介します。
- 動作確認環境
- ansible-base 2.10.1
■ collection のアップデートの例
現在のバージョン確認
現在は cisco.ios
collection の v1.0.0 がインストールされています。ansible-galaxy collection list
コマンドで確認します。
$ ansible-galaxy collection list # /Users/sakana/.ansible/collections/ansible_collections Collection Version ----------------- ------- ansible.netcommon 1.2.1 cisco.ios 1.0.0
最新安定版へアップデート
本記事を執筆時の最新安定版は 1.0.3
なのでアップデートします。-f
オプションを利用します。
$ ansible-galaxy collection install cisco.ios -f Starting galaxy collection install process Process install dependency map Starting collection install process Installing 'cisco.ios:1.0.3' to '/Users/sakana/.ansible/collections/ansible_collections/cisco/ios' Downloading https://galaxy.ansible.com/download/cisco-ios-1.0.3.tar.gz to /Users/sakana/.ansible/tmp/ansible-local-358124d4ssl1x/tmpy7pt2mfw cisco.ios (1.0.3) was installed successfully Skipping 'ansible.netcommon' as it is already installed
1.0.3
がインストールされました。依存している ansible.netcommon
collection はそのままです。
なお、-f
オプションをつけないと、すでにインストールされている旨のメッセージが表示されるだけです。
$ ansible-galaxy collection install cisco.ios Starting galaxy collection install process Process install dependency map Starting collection install process Skipping 'cisco.ios' as it is already installed
事後確認
再度 ansible-galaxy collection list
コマンドで確認します。
$ ansible-galaxy collection list # /Users/sakana/.ansible/collections/ansible_collections Collection Version ----------------- ------- ansible.netcommon 1.2.1 cisco.ios 1.0.3
■ バージョンを指定して再インストールする例
pip の場合はバージョン指定するとそのバージョンで再インストールされますが、collection の場合は再インストールできません。
この場合も先程と同様に -f
オプション を利用します。
事前確認
cisco.ios
の 1.0.3 がインストールされている状態です。
$ ansible-galaxy collection list # /Users/sakana/.ansible/collections/ansible_collections Collection Version ----------------- ------- ansible.netcommon 1.2.1 cisco.ios 1.0.3
バージョン指定再インストール
cisco.ios
を 1.0.0 にします。
$ ansible-galaxy collection install cisco.ios:1.0.0 -f Starting galaxy collection install process Process install dependency map Starting collection install process Installing 'cisco.ios:1.0.0' to '/Users/sakana/.ansible/collections/ansible_collections/cisco/ios' Downloading https://galaxy.ansible.com/download/cisco-ios-1.0.0.tar.gz to /Users/sakana/.ansible/tmp/ansible-local-35887zb347nj6/tmpk_1j7zvp cisco.ios (1.0.0) was installed successfully Skipping 'ansible.netcommon' as it is already installed
なお、インストールされていない状態の場合は、-f
オプションは不要です。
事後確認
$ ansible-galaxy collection list # /Users/sakana/.ansible/collections/ansible_collections Collection Version ----------------- ------- ansible.netcommon 1.2.1 cisco.ios 1.0.0
1.0.0 になりました。
おわりに
今後はもしかしたらアップデート専用オプションができるかもしれません。