🌿
Ansible Navigator 環境に collections を追加する
目的
Ansible Navaigator 環境に含まれていない Collections のモジュールを実行できるようにします。
環境に含まれていない Collections を使用したらどうなるか?
エラーになります。例えば Community.Crypto Collection は環境に含まれていないため、community.crypto.openssh_keypair
モジュールを使用したときは以下のようにエラーになります。
ex1.yml
---
- name: test
hosts: all
tasks:
- name: Generate an OpenSSH keypair with the default values (4096 bits, rsa)
community.crypto.openssh_keypair:
path: /tmp/id_ssh_rsa
y_mrok@pc:~/ex/openssh_keypair$ ansible-navigator run ex1.yml -i hosts.yml -m stdout
ERROR! couldn't resolve module/action 'community.crypto.openssh_keypair'. This often indicates a misspelling, missing collection, or incorrect module path.
The error appears to be in '/home/y_mrok/ex/openssh_keypair/ex1.yml': line 6, column 7, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
tasks:
- name: Generate an OpenSSH keypair with the default values (4096 bits, rsa)
^ here
Please review the log for errors.
y_mrok@pc:~/ex/openssh_keypair$
対応
- 使用したいモジュールの Collections を含むカスタムコンテナを作成します
- 作成したカスタムコンテナを使用して play を実行します
カスタムコンテナの作成手順
Ansible Navigator を導入済みの環境で ansible-builder
コマンドを使用してカスタムコンテナを作成します。
- 作業用ディレクトリーを作成する
- カスタムコンテナを作成するのに必要なファイルを作成する
-
ansible-builder
コマンドでカスタムコンテナを作成する
実践
作業用ディレクトリーを作成する
コマンド
mkdir ~/builder
cd ~/builder
実行ログ
y_mrok@pc:~$ mkdir ~/builder
y_mrok@pc:~$ cd ~/builder
y_mrok@pc:~/builder$
必要なファイルを作成する
作成するファイル
- custom-ee.yml
- カスタムコンテナを作成するための定義
- 任意のファイル名が可能(例:custom-ee.yml )
- requirements.yml
- Ansible.Builtin Collecton 以外の追加する collections を指定( Ansible.Builtin Collection はデフォルトで含まれるため指定不要)
- ファイル名は
requirements.yml
記述例
collections の追加に特化して記述します。[1]
custom-ee.yml
---
version: 1
build_arg_defaults:
EE_BASE_IMAGE: 'quay.io/ansible/ansible-runner:latest'
EE_BUILDER_IMAGE: 'quay.io/ansible/ansible-builder:latest'
dependencies:
galaxy: requirements.yml
シーケンス形式で追加したい collections を指定します。
requirements.yml
---
collections:
- community.general
- community.crypto
ファイルの配置状況です。
y_mrok@pc:~/builder$ tree ~/builder
/home/y_mrok/builder
├── custom-ee.yml
└── requirements.yml
0 directories, 2 files
y_mrok@pc:~/builder$
カスタムコンテナを作成する
コマンド
ansible-builder build -f custom-ee.yml -t custom-ee:1.0.0 --prune-images
実行ログ
時間を要します。
y_mrok@pc:~/builder$ ansible-builder build -f custom-ee.yml -t custom-ee:1.0.0 --prune-images
Running command:
podman build -f context/Containerfile -t custom-ee:1.0.0 context
Running command:
podman image prune --force
Complete! The build context can be found at: /home/y_mrok/builder/context
y_mrok@pc:~/builder$
作成結果を確認
tree ~/builder
podman images
y_mrok@pc:~/builder$ tree ~/builder
/home/y_mrok/builder
├── context
│ ├── Containerfile
│ └── _build
│ └── requirements.yml
├── custom-ee.yml
└── requirements.yml
2 directories, 4 files
y_mrok@pc:~/builder$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/custom-ee 1.0.0 eeea48f61208 2 minutes ago 1.07 GB
quay.io/ansible/ansible-runner latest bec0dc171168 7 months ago 816 MB
quay.io/ansible/creator-ee v0.4.2 12571ac947cf 8 months ago 2.4 GB
quay.io/ansible/ansible-builder latest b0348faa7f41 10 months ago 779 MB
y_mrok@pc:~/builder$
動作確認
--eei
オプションを使用して作成したカスタムコンテナを指定し play を実行します。実行時にカスタムコンテナを指定した実行ログです。今度は正常に実行できました。
y_mrok@pc:~/ex/openssh_keypair$ ansible-navigator run ex1.yml -i hosts.yml --eei=localhost/custom-ee:1.0.0 -m stdout
PLAY [test] ********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Generate an OpenSSH keypair with the default values (4096 bits, rsa)] ****
changed: [node1]
PLAY RECAP *********************************************************************
node1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
y_mrok@pc:~/ex/openssh_keypair$
参考文献
技術評論社 Software Design 2022年9月号
短期連載 新生「Ansible」徹底解説 [4]Playbookの実行環境(基礎編)
https://gihyo.jp/magazine/SD/archive/2022/202209
後記
Ansible Navigator 環境で Collections の追加方法がわからず、いろいろと調べていました。何となく理解はできていた(と思いたい)のですが、具体的にどうするのかがわからずにいました。参考文献のおかげですっきりしました。感謝、感謝です。
-
詳細は「 Automation Controller User Guide v4.1.1 » 15.実行環境の設定リファレンス」をご確認ください。 ↩︎
Discussion