2.5. 定義ファイルの内容の内訳
自動化実行環境コンテナーイメージに含まれるコンテンツを指定するため、Ansible Builder で自動化実行環境を構築するには、定義ファイルが必要です。
次のセクションでは、定義ファイルの内容を説明します。
2.5.1. ビルド引数およびベースイメージ
定義ファイルの build_arg_defaults
セクションは、キーが Ansible Builder への引数のデフォルト値を指定できるディクショナリーです。build_arg_defaults
で使用できる値の一覧は、以下の表を参照してください。
値 | 説明 |
---|---|
| コレクションのインストールフェーズで、ユーザーは ansible-galaxy CLI に任意の引数を渡すことができます。たとえば、プレリリースコレクションのインストールを有効にする –pre フラグや、サーバーの SSL 証明書の検証を無効にする -c などです。 |
| 自動化実行環境の親イメージを指定し、既存のイメージに基づいて新しいイメージを構築できるようにします。これは通常、ee-minimal や ee-supported などのサポートされる実行環境ベースイメージですが、以前に作成した実行環境イメージで、さらにカスタマイズすることもできます。
デフォルトのイメージは |
|
Python の依存関係コレクションとコンパイルに使用される中間ビルダーイメージを指定します。対応する Python バージョンと
デフォルトのイメージは |
build_arg_defaults
で指定される値は Containerfile
にハードコーディングされるため、podman build
を手動で呼び出すとこの値が維持されます。
CLI --build-arg
フラグで同じ変数が指定されている場合は、CLI 値の優先順位が高くなります。
2.5.2. Ansible 設定ファイルパス
ansible_config
ディレクティブを使用すると、ansible.cfg
ファイルへのパスを指定して、ビルドの Collection インストールステージで、プライベートアカウントのトークンおよびその他の設定を自動化ハブサーバーに渡すことができます。設定ファイルパスは定義ファイルの場所を基準にし、生成されたコンテナービルドコンテキストにコピーされます。
ansible.cfg
ファイルは以下の例のような形式にする必要があります。
例2.2 ansible.cfg
ファイル
[galaxy] server_list = automation_hub [galaxy_server.automation_hub] url=https://cloud.redhat.com/api/automation-hub/ auth_url=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token token=my_ah_token
自動化ハブからコレクションをダウンロードする方法は、関連する Ansible ドキュメントページ を参照してください。
2.5.3. 依存関係
自動化実行環境イメージの問題を回避するには、Galaxy、Python、およびシステムのエントリーが有効な要件ファイルを参照していることを確認してください。
2.5.3.1. Galaxy
galaxy
エントリーは、ansible-galaxy collection install -r …
コマンドの有効な要件ファイルを参照します。
requirements.yml
エントリーは、自動化実行環境定義のディレクトリーからの相対パス、または絶対パスである可能性があります。
requirements.yml
ファイルの内容は以下のようになります。
例2.3 Galaxy の requirements.yml
ファイル
collections: - community.aws - kubernetes.core
2.5.3.2. Python
定義ファイルの python
エントリーは、pip install -r …
コマンドの有効な要件ファイルを参照します。
requirements.txt
エントリーは、Collection がすでに Python の依存関係としてリストされているように追加の Python 要件をインストールするファイルです。自動化実行環境定義のフォルダーのディレクトリーからの相対パス、または絶対パスとして記載されている可能性があります。requirements.txt
ファイルの内容は、pip freeze
コマンドの標準出力と同様に、以下の例のような形式にする必要があります。
例2.4 Python の requirements.txt
ファイル
boto>=2.49.0 botocore>=1.12.249 pytz python-dateutil>=2.7.0 awxkit packaging requests>=2.4.2 xmltodict azure-cli-core==2.11.1 python_version >= '2.7' collection community.vmware google-auth openshift>=0.6.2 requests-oauthlib openstacksdk>=0.13 ovirt-engine-sdk-python>=4.4.10
2.5.3.3. システム
定義の システム
エントリーは、bindep 要件ファイルを指定しています。このファイルは、コレクションに依存関係として含まれていないシステムレベルの依存関係をインストールします。自動化実行環境定義のフォルダーのディレクトリーからの相対パス、または絶対パスとして記載されている可能性があります。最低限、コレクションが、[platform:rpm]
に必要な要件を指定することが想定されます。
これは、libxml2
パッケージおよび subversion
パッケージをコンテナーに追加する bindep.txt
ファイルの例です。
例2.5 bindep.txt
ファイル
libxml2-devel [platform:rpm] subversion [platform:rpm]
複数のコレクションからのエントリーは、1 つのファイルに統合されます。これは bindep
により処理され、dnf
に渡されます。プロファイルのない要件や、ランタイム要件がイメージにインストールされません。
2.5.4. 追加のカスタムビルドの手順
prepend
コマンドと append
コマンドは、additional_build_steps
セクションで指定できます。これにより、メインのビルド手順が実行される前または後に実行する Containerfile
にコマンドが追加されます。
additional_build_steps
の構文は以下のいずれかである必要があります。
複数行の文字列
例2.6 複数行の文字列エントリー
prepend: | RUN whoami RUN cat /etc/os-release
リスト
例2.7 リストエントリー
append: - RUN echo This is a post-install command! - RUN ls -la /etc