LoginSignup
2
2

More than 3 years have passed since last update.

Ansible collections の簡単な使い方

Posted at

目次

1. はじめに

ansible2.10ではansible2.9までとは異なっており、『collections』という考え方が新しく実装されています。
collectionsにより、ansibleのバージョンを変更せずにモジュールのバージョンを管理できるようになります。
また、本記事では例として『vmware』collectionを用いて検証しています。

2. 仮想環境作成

[root@localhost ~]# python3 -m venv venv
[root@localhost ~]# source venv/bin/activate
(venv) [root@localhost ~]#

### 仮想環境から抜ける場合は以下コマンド ###
(venv) [root@localhost ~]# deactivate
[root@localhost ~]#

3. ansibleのインストール方法

(venv) [root@localhost ~]# pip install --upgrade pip
(venv) [root@localhost ~]# pip install ansible
(venv) [root@localhost ~]# pip freeze
ansible==2.10.6
ansible-base==2.10.5

従来は『ansible==2.9.10』のような表示でしたが、
ansible2.10からは『ansible』『ansible-base』がインストールされます。
『ansible-base』は基本機能と標準モジュール群、『ansible』はcollection群です。
バージョンはansibleコマンドで確認できますが、pipのパッケージでは『ansible-base』と同じバージョンのようです。
『ansible』のみがインストール済みの状態でも『ansible-base』がないとansibleコマンドは使用できません。
また、『ansible-base』のみがインストール済みの状態でもcollectionsがないため、モジュールを参照できず、プレイブックの実行エラーになります。

4. collectionsのインストール方法

モジュールのアップデートや、個別にcollectionsをインストールする際に行います。

ansible garaxyからcollectionを探しインストールを行います。
https://galaxy.ansible.com/
WS000000.png
検索から、指定のcollectionsを検索します。
WS000001.png
該当のcollectionsをクリックすると、インストール方法などが確認できます。
WS000002.png
確認したら以下の方法でインストールする。

### 最新のcollection インストール方法 ###
(venv) [root@localhost ~]# ansible-galaxy collection install community.vmware

### バージョン指定インストール方法 ###
(venv) [root@localhost ~]# ansible-galaxy collection install community.vmware:1.4.0

### 既にcollectionがインストール済みの状態でバージョンを変更する場合 ###
(venv) [root@localhost ~]# ansible-galaxy collection install -f community.vmware:1.5.0
### collectionsの確認 ###
(venv) [root@localhost ~]# ansible-galaxy collection list
# /root/.ansible/collections/ansible_collections
Collection       Version
---------------- -------
community.vmware 1.4.0

# /root/venv/lib/python3.6/site-packages/ansible_collections
Collection                Version
------------------------- -------
community.vmware          1.7.0

5. collectionsの使用方法

モジュールを使用するためにプレイブック、ロール、タスクで指定できます。
ロールを使用する場合はmetaに記載すれば読み込まれます。

### プレイブックで指定する場合 ###
---
- name: sample
  hosts: vcenter
  gather_facts: no
  collections:
    - community.vmware
  tasks:
    - name: sample name
      vmware_guest:
### ロールで指定する場合 ###
.
|-- roles
|   `-- test
|       |-- meta
|       |   `-- main.yml
|       `-- tasks
|           |-- main.yml
|           `-- test.yml
`-- site.yml

(venv) [root@localhost meta]# pwd
/etc/ansible/playbook/roles/test/meta
(venv) [root@localhost meta]# cat main.yml
---
collections:
 - community.vmware

(venv) [root@localhost meta]# cat ../tasks/test.yml
---
- name: sample name
  vmware_guest:
### タスクで指定する場合 ###
---
- name: sample
  hosts: vcenter
  gather_facts: no
  tasks:
    - name: sample name
      community.vmware.vmware_guest:

また、以下のように指定なしでもプレイブックの実行は可能です。
実行時にモジュールのパスへリダイレクトし、実行できるような仕組みになっているようです。
そのため、従来のプレイブックをansible2.10でも実行できるようになっています。

### collections指定なしの場合 ###
---
- name: sample
  hosts: vcenter
  gather_facts: no
  tasks:
    - name: sample name
      vmware_guest:

6. collectionsのパス

ansible.cfgを確認したところ、以下の記載がありました。
デフォルトでは、ansible-galaxyコマンド等で個別インストールしたcollections(~/.ansible/collections)が優先されるようになっています。

### デフォルトのcollections_paths###
# collections_paths = ~/.ansible/collections:/usr/share/ansible/collections

7. おわりに

ansible2.10リリース後触れられていなかったので、参考資料をもとに検証しまとめてみました。
より詳しい内容は参考資料をご覧いただければと思います。

8. 参考資料

https://techblog.ap-com.co.jp/entry/2020/11/13/101710
https://tekunabe.hatenablog.jp/entry/2020/09/20/ansible_role_collections
https://docs.ansible.com/ansible/latest/user_guide/collections_using.html

9. 技術情報

会社Webサイトにて技術ブログを掲載しております。ご覧いただければ幸いです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2