5 カスタム実行環境の作成
ノート:
Builderユーティリティを使用すると、カスタム実行環境を作成できますが、カスタム実行環境の問題が発生した場合、Oracleサポートでは、Oracle提供のOLAM-EEデフォルト・イメージに戻して問題をトラブルシューティングするよう求められる場合があります。- Oracle Container Registryからアクセス可能なベースOLAM-EEコンテナ・イメージ。
- Builderユーティリティで作成されたイメージに必要な特殊なビルダー・イメージ。
- 1つ以上の不可解なコレクション。
- Pythonまたはシステムの依存関係(モジュール、コレクションのプラグイン、カスタム・スクリプト、bashコマンドなど)、または両方の組合せ。
Builderユーティリティを使用して、バージョン1またはバージョン2のフォーマットで実行環境を作成できます。
Oracle Container Registryで使用可能なデフォルトのlam-eeでは、Oracle Linux 8コンテナ・イメージの最新バージョンが使用されます。 カスタム実行環境を構築する場合、提供されるOracle Linux 8リリースには、ansible-coreの最新バージョンとそのpython依存関係を常に使用します。 たとえば、ansible-core 2.14には、依存関係としてPython 3.11があります。
- ビルダー・ユーティリティは、Python 3.9を使用して実行環境を構築します。 Pypiパッケージおよびモジュールを使用するカスタム実行環境を構築する場合、ジョブを実行するカスタム実行環境がPython 3.9を使用するように、ジョブ・テンプレートで次の変数を指定します:
"ansible_python_interpreter: /usr/bin/python3.9"
- OCI SDKを使用したOCI ansibleコレクションは、Python 3.8を使用して構築されました。 OCI SDKを使用するカスタム実行環境を構築する場合、ジョブを実行するカスタム実行環境がPython 3.8を使用するように、ジョブ・テンプレートで次の変数を指定します:
"ansible_python_interpreter: /usr/bin/python3.8"
ジョブ・テンプレートでの変数の設定の詳細は、「Oracle Linux Automation Manager 2: ユーザーズ・ガイド」を参照してください。
フォーマット1を使用したカスタム実行環境の構成
- Builderユーティリティをインストールしたホストで、Builderユーティリティの作業ディレクトリを作成します。 たとえば、
mkdir ~/builder-utility cd ~/builder-utility
- 次のファイルを作成します。
touch ansible.cfg execution-environment.yml requirements.yml requirements.txt bindep.txt
- execution-environment.ymlファイルで、次のパラメータを追加します:
--- version: 1 build_arg_defaults: EE_BASE_IMAGE: 'container-registry.oracle.com/oracle_linux_automation_manager/olam-ee:latest' EE_BUILDER_IMAGE: 'container-registry.oracle.com/oracle_linux_automation_manager/olam-builder:latest' ANSIBLE_GALAXY_CLI_COLLECTION_OPTS: "--ignore-certs" ansible_config: 'ansible.cfg' dependencies: galaxy: requirements.yml python: requirements.txt system: bindep.txt additional_build_steps: prepend: | RUN whoami RUN cat /etc/os-release append: - RUN echo This is a post-install command! - RUN ls -la /etc
この例では、次のようになります。-
EE_BASE_IMAGE: このパラメータには、
container-registry.oracle.com/oracle_linux_automation_manager/olam-ee
から取得できるベースlam-eeが必要です。 または、この目的のためにPrivate Automation Hubを構成している場合は、Private Automation Hubからこのイメージのコピーを取得することもできます。 -
EE_BUILDER_IMAGE: このパラメータには、
container-registry.oracle.com/oracle_linux_automation_manager/olam-builder
から取得できるlam-builderイメージが必要です。 ビルダー・コンテナ・イメージには、顧客実行環境の作成に必要なビルド・ライブラリが含まれています。 または、この目的のためにPrivate Automation Hubを構成している場合は、Private Automation Hubからこのイメージのコピーを取得することもできます。 -
ANSIBLE_GALAXY_CLI_COLLECTION_OPTS:
"--ignore-certs"
オプションを使用します。 このパラメータを使用すると、自己署名証明書を使用せずにリポジトリからイメージを取得できます。 -
ansible_config:
ansible.cfg
ファイルを指定して、プライベート・アカウントのトークンおよびその他の設定をPrivate Automation Hubサーバーに渡すことができます。 それ以外の場合、ビルダー・ユーティリティはansible.galaxyを使用してAnsibleコレクションをダウンロードします。 構成ファイルのパスを文字列としてリストすると、ビルドの初期フェーズでビルド引数として含められます。 -
依存関係: このセクションは、最後のコンテナにインストールする必要があるAnsible Galaxy、Pythonおよびシステム依存関係を定義するディクショナリ値です。
ノート:
この項にリストされている、カバレッジのOracle LinuxまたはOracle Linux Automation Manager範囲外の依存関係は、サポートの対象範囲外です。-
銀河: このパラメータは、コレクションの依存関係を定義するファイルへのパスです。 Builderユーティリティは、これらを
ansible-galaxy collection install -r requirements.yml
コマンドでインストールします。 指定する値は、実行環境定義のフォルダのディレクトリからの相対パス、または絶対パスです。requirements.ymlファイルでコレクションを指定する形式は、次のとおりです:--- collections: - name: <namespace>.<collection_name>
前述の例では、<namespace>はコレクションのネームスペース(
oracle
など)、<collection_name>はインストールされるコレクションの名前(oci
など)です。 この組合せは、使用するコレクションごとに繰り返すことができます。特定のバージョン、ソース・タイプおよびソースのロケーションを次のように指定することもできます:--- collections: - name <namespace>.<collection_name> version: <version_number or "<range_identifyer><version_number>" type: <source_type>
前述の例では、<version_number>は任意のコレクション・バージョン番号にできます。 1つ以上の<range_identifyer>で指定されている場合、バージョン番号は、指定された範囲内で可能なコレクションの最新バージョンです。 たとえば、次の例は、バージョンが4.0.0以上で、5.0.0未満であることを示します:--- collections: - name: oracle.oci version: ">=4.0.0,<5.0.0" type: galaxy
次の範囲識別子を使用できます:- *
最新バージョン。 これはデフォルトです。
- !=
指定されたバージョンと等しくありません。
- ==
指定されたバージョン。
- >=
指定したバージョン以上。
-
>
指定されたバージョンを超えています。
- <=
指定したバージョン以下。
- <
指定したバージョン未満。
- *
-
python: この文字列値は、
pip install -r requirements.txt
コマンドでインストールされるPythonの依存関係を含むファイルへのパスです。 指定する値は、実行環境定義のフォルダのディレクトリからの相対パス、または絶対パスです。requirements.ymlファイルでpython依存関係を指定する形式は、次のとおりです:
<someproject> <someproject><version_specifier><version_number> <someproject><version_specifier><version_number>,<version_specifier><version_number>
前述の例では、<someproject>はプロジェクトの名前です。 プロジェクト名のみを指定して、そのプロジェクトの最新バージョンを検索するか、または1つ以上の<version_identifier>と<verion_number>の組合せでプロジェクトを指定して、インストールするプロジェクトの特定のバージョンを返すことができます。 たとえば:requests>=2.4.2 xmltodict azure-cli-core==2.11.1
使用可能なバージョン指定子の詳細は、https://peps.python.org/pep-0440/#version-specifiersを参照してください。
-
system: この文字列値は、bindep.txt要件ファイルを示します。 これはbindepで処理され、dnfに渡されます。他のプラットフォームはまだサポートされていません。 たとえば:
gcc libcurl-devel libxml2-devel python39-devel openssl-devel
システム要件ファイルの記述およびオプションでバージョン制約の指定の詳細は、https://docs.opendev.org/opendev/bindep/latest/readme.html#writing-requirements-filesを参照してください。
-
銀河: このパラメータは、コレクションの依存関係を定義するファイルへのパスです。 Builderユーティリティは、これらを
-
additional_build_steps: additional_build_stepsセクションには、メイン・ビルド・ステップの前(準備)または後(追加)のいずれかで、追加のコマンドを指定できます。 構文は次のいずれかである必要があります:
- 複数行の文字列(上の前頭のセクションに示されている例)
- リスト(appendで表示)
-
EE_BASE_IMAGE: このパラメータには、
- ファイルを保存します。
- 必要に応じて、ansible.cfgおよび依存関係ファイルを実行します。
- 作業ディレクトリから次のコマンドを実行します:
ansible-builder build -t <repository:tag>
前述の例では、<repository:tag>はカスタム実行環境のリポジトリおよびタグです。 たとえば、host1/'custom_ee:latestです。ノート:
ビルダー・ユーティリティ・プロセスの詳細は、コマンドの最後に -v 3オプションを使用して最も多くの情報を提供し、1は最小です。 たとえば、ansible-builder build -v 3
- イメージが作成されていることを確認します。 次のPodmanコマンドを実行します:
podman images
形式2を使用したカスタム実行環境の構成
- Builderユーティリティをインストールしたホストで、Builderユーティリティの作業ディレクトリを作成します。 たとえば、
mkdir ~/builder-utility cd ~/builder-utility
- 次のファイルを作成します。
touch ansible.cfg execution-environment.yml requirements.yml requirements.txt bindep.txt
- execution-environment.ymlファイルで、次のパラメータを追加します:
--- version: 2 build_arg_defaults: ANSIBLE_GALAXY_CLI_COLLECTION_OPTS: "--ignore-certs" ansible_config: 'ansible.cfg' dependencies: galaxy: requirements.yml python: requirements.txt system: bindep.txt images: base_image: name: container-registry.oracle.com/oracle_linux_automation_manager/olam-ee:latest builder_image: name: container-registry.oracle.com/oracle_linux_automation_manager/olam-builder:latest
この例では、次のようになります。-
ANSIBLE_GALAXY_CLI_COLLECTION_OPTS:
"--ignore-certs"
option.Thisパラメータを使用すると、自己署名証明書を使用せずにリポジトリからイメージを取得できます。 -
ansible_config:
ansible.cfg
ファイルを指定して、Private Automation Hubサーバーのトークンおよびその他の設定を渡すことができます。 構成ファイルのパスを文字列としてリストすると、ビルドの初期フェーズでビルド引数として含められます。 -
依存関係: このセクションは、最後のコンテナにインストールする必要があるAnsible Galaxy、Pythonおよびシステム依存関係を定義するディクショナリ値です。 このセクションの有効なキーは次のとおりです:
-
銀河: このパラメータは、コレクションの依存関係を定義するファイルへのパスです。 Builderユーティリティは、これらを
ansible-galaxy collection install -r requirements.yml
コマンドでインストールします。 指定する値は、実行環境定義のフォルダのディレクトリからの相対パス、または絶対パスです。requirements.ymlファイルでコレクションを指定する形式は、次のとおりです:--- collections: - name <namespace>.<collection_name>
前述の例では、<namespace>はコレクションのネームスペース(
oracle
など)、<collection_name>はインストールされるコレクションの名前(oci
など)です。 この組合せは、使用するコレクションごとに繰り返すことができます。特定のバージョン、ソース・タイプおよびソースのロケーションを次のように指定することもできます:--- collections: - <namespace>.<collection_name> version: <version_number or "<range_identifyer><version_number>" type: <source_type>
前述の例では、<version_number>は任意のコレクション・バージョン番号にできます。 1つ以上の<range_identifyer>で指定されている場合、バージョン番号は、指定された範囲内で可能なコレクションの最新バージョンです。 たとえば、次の例は、バージョンが4.0.0以上で、5.0.0未満であることを示します:--- collections: - name: oracle.oci version: ">=4.0.0,<5.0.0" type: galaxy
次の範囲識別子を使用できます:- *
最新バージョン。 これはデフォルトです。
- !=
指定されたバージョンと等しくありません。
- ==
指定されたバージョン。
- >=
指定したバージョン以上。
-
>
指定されたバージョンを超えています。
- <=
指定したバージョン以下。
- <
指定したバージョン未満。
- *
-
python: この文字列値は、pip install -r ...コマンドでインストールされるPython依存関係を含むファイルへのパスです。 指定する値は、実行環境定義のフォルダのディレクトリからの相対パス、または絶対パスです。
requirements.ymlファイルでpython依存関係を指定する形式は、次のとおりです:
<someproject> <someproject><version_specifier><version_number> <someproject><version_specifier><version_number>,<version_specifier><version_number>
前述の例では、<someproject>はプロジェクトの名前です。 プロジェクト名のみを指定して、そのプロジェクトの最新バージョンを検索するか、または1つ以上の<version_identifier>と<verion_number>の組合せでプロジェクトを指定して、インストールするプロジェクトの特定のバージョンを返すことができます。 たとえば:requests>=2.4.2 xmltodict azure-cli-core==2.11.1
使用可能なバージョン指定子の詳細は、https://peps.python.org/pep-0440/#version-specifiersを参照してください。
-
system: この文字列値は、bindep要件ファイルを示します。 これはbindepで処理され、dnfに渡されます。他のプラットフォームはまだサポートされていません。 たとえば:
gcc libcurl-devel libxml2-devel python39-devel openssl-devel
システム要件ファイルの記述およびオプションでバージョン制約の指定の詳細は、https://docs.opendev.org/opendev/bindep/latest/readme.html#writing-requirements-filesを参照してください。
-
銀河: このパラメータは、コレクションの依存関係を定義するファイルへのパスです。 Builderユーティリティは、これらを
-
additional_build_steps: additional_build_stepsセクションには、メイン・ビルド・ステップの前(準備)または後(追加)のいずれかで、追加のコマンドを指定できます。 構文は次のいずれかである必要があります:
- 複数行の文字列(上の前頭のセクションに示されている例)
- リスト(appendで表示)
- イメージ: イメージ・キーを使用して、ベース・イメージとビルダー・イメージを定義できます。 バージョン2の形式では、実行環境定義で、--container-policy CLIオプションの値に基づいて、ビルダーが結果のイメージを構築する前にシグネチャを検証する必要があるベースおよびビルダーのコンテナ・イメージを指定できます。 主なオプションは次のとおりです:
-
base_image: このパラメータには、
container-registry.oracle.com/oracle_linux_automation_manager/olam-ee
から取得できるベースlam-eeが必要です。 または、この目的のためにPrivate Automation Hubを構成している場合は、Private Automation Hubからこのイメージのコピーを取得することもできます。 -
builder_image: このパラメータには、
container-registry.oracle.com/oracle_linux_automation_manager/olam-builder
から取得できるlam-builderイメージが必要です。 ビルダー・コンテナ・イメージには、顧客実行環境の作成に必要なビルド・ライブラリが含まれています。 または、この目的のためにPrivate Automation Hubを構成している場合は、Private Automation Hubからこのイメージのコピーを取得することもできます。
-
base_image: このパラメータには、
-
ANSIBLE_GALAXY_CLI_COLLECTION_OPTS:
- ファイルを保存します。
- 必要に応じて、ansible.cfgおよび依存関係ファイルを実行します。
- 作業ディレクトリから次のコマンドを実行します:
ansible-builder build -t <repository:tag>
前述の例では、<repository:tag>はカスタム実行環境のリポジトリおよびタグです。 たとえば、host1/'custom_ee:latestです。ノート:
ビルダー・ユーティリティ・プロセスの詳細は、コマンドの最後に -v 3オプションを使用して最も多くの情報を提供し、1は最小です。 たとえば、ansible-builder build -v 3
- イメージが作成されていることを確認します。 次のPodmanコマンドを実行します:
podman images
カスタム実行環境のアップロード
- カスタム実行環境を作成したホストから、Podmanを使用して、カスタム実行環境をアップロードするPrivate Automation Hubインスタンスにログインします。 たとえば、
podman login <ip address or hostname> -u admin -p <password> --tls-verify=false
前の例では、<ip address or hostname>はPrivate Automation HubインスタンスのIPアドレスまたはホスト名、<password>はPrivate Automation Hubインスタンスの管理ユーザーのパスワードです。
- アップロードするカスタム・イメージを識別します。 たとえば、
podman images
- イメージをPrivate Automation Hubにプッシュします。 たとえば、
podman push <podman_image_id or repository:tag> <ip address or hostname/image_name:tag> --tls-verify=false
前述の例では、<podman_image_id or repository:tag>はプッシュするカスタム実行環境のイメージIDまたはリポジトリおよびタグで、<ip address or hostname/image_name:tag>はIPアドレスまたはホスト名、その後にイメージ名とPrivate Automation Hubインスタンスのタグが続きます。 たとえば、次の例では、ポッドマン・リポジトリ名とタグを使用し、その後にホスト名、イメージ名およびタグを指定して、プライベート自動化ハブ・インスタンスで使用します:podman push localhost/custom-image:2.1.3 private_automation_hub_host/custom-image:2.1.3 --tls-verify=false
次に、ポッドマン・イメージIDと、プライベート自動化ハブ・インスタンスで使用するホスト名、イメージ名およびタグを使用します:podman push 330928308c01 private_automation_hub_host/custom-image:2.1.3 --tls-verify=false
- 実行環境がPrivate Automation Hubインスタンスに存在することを確認します。 このタスクの詳細については、「実行環境詳細の表示」を参照してください。