検索

15.2. 設定オプション

download PDF

定義ファイルで次の設定 YAML キーを使用します。

Ansible Builder 3.x 実行環境定義ファイルは、次の 7 つの最上位セクションを受け入れます。

15.2.1. additional_build_files

ビルドファイルは、ビルドコンテキストディレクトリーに追加する内容を指定します。これらは、任意のビルド段階で Additional_build_steps によって参照またはコピーできます。

形式はディクショナリー値のリストで、各リスト項目に src および dest のキーと値を含めます。

各リスト項目は、次の必須キーを含むディクショナリーである必要があります。

src

ビルドコンテキストディレクトリーにコピーするソースファイルを指定します。

これは、/home/user/.ansible.cfg などの絶対パス、またはファイルに対する相対パスで指定できます。相対パスは、1 つ以上のファイルに一致する glob 式にすることができます (files/\*.cfg など)。絶対パスには正規表現を含めることができない点に注意してください。src がディレクトリーの場合、そのディレクトリーの内容全体が dest にコピーされます。

dest

ソースファイル (例: files/configs) が含まれるビルドコンテキストディレクトリーの _build サブディレクトリーの下にあるサブディレクトリーパスを指定します。

この値を絶対パスで指定することや、パス内に .. を追加できません。このディレクトリーが存在しない場合は、自動的に作成されます。

注記

ansible.cfg ファイルを使用してプライベートアカウントのトークンとその他の設定を Automation Hub サーバーに渡す場合、ここに設定ファイルのパスを文字列としてリストすると、ビルド引数としてビルドの初期フェーズに含めることができます。

15.2.2. additional_build_steps

ビルドステップは、任意のビルドフェーズのカスタムビルドコマンドを指定するものです。これらのコマンドは、コンテナーランタイムのビルド指示ファイル (Containerfile や Dockerfile など) に直接挿入されます。コマンドは、コンテナー化ツールで必要なルールに準拠する必要があります。

ビルドステップは、イメージ作成プロセスのどの段階の前後にも追加できます。たとえば、依存関係をインストールする前に git をインストールする必要がある場合は、ベースビルド段階の最後にビルドステップを追加できます。

有効なキーは次のとおりです。それぞれが複数行の文字列または文字列のリストをサポートします。

append_base

基本イメージの構築後に挿入するコマンド。

append_builder

ビルダーイメージの構築後に挿入するコマンド。

append_final

最終イメージの構築後に挿入するコマンド。

append_galaxy

Galaxy イメージの構築後に挿入するコマンド。

prepend_base

基本イメージを構築する前に挿入するコマンド。

prepend_builder

ビルダーイメージを構築する前に挿入するコマンド。

prepend_final

最終イメージを構築する前に挿入するコマンド。

prepend_galaxy

Galaxy イメージを構築する前に挿入するコマンド。

15.2.3. build_arg_defaults

これにより、ビルド引数のデフォルト値がディクショナリーとして指定されます。

これは、--build-arg CLI フラグの代わりに使用する方法です。

Ansible Builder は次のビルド引数を使用します。

ANSIBLE_GALAXY_CLI_COLLECTION_OPTS

-pre フラグやその他のフラグを渡して、プレリリースコレクションのインストールを有効にできます。

ANSIBLE_GALAXY_CLI_ROLE_OPTS

使用すると、--no-deps などのフラグをロールのインストールに渡すことができます。

PKGMGR_PRESERVE_CACHE

これは、イメージのビルドプロセス中にパッケージマネージャーのキャッシュがクリアされる頻度を制御します。

この値が設定されていない場合 (デフォルト)、キャッシュは頻繁にクリアされます。値が always の場合、キャッシュはクリアされません。それ以外の値を指定すると、最終ビルド段階でシステムの依存関係がインストールされた後にのみキャッシュが強制的にクリアされます。

Ansible Builder は、build_arg_defaults 内で指定された値をビルド指示ファイルにハードコーディングするため、コンテナーのビルドを手動で実行した場合でも値は保持されます。

定義と CLI build-arg フラグを使用したコマンドラインで同じ変数を指定すると、CLI の値によって定義の値がオーバーライドされます。

15.2.4. 依存関係

ansible-coreansible-runner、Python パッケージ、システムパッケージ、コレクションなど、最終イメージにインストールする依存関係を指定します。Ansible Builder は、ユーザーがインストールする Ansible コレクションの依存関係を自動的にインストールします。

一般に、標準の構文を使用してパッケージのバージョンを制限できます。dnfpipansible-galaxy、またはその他のパッケージ管理ユーティリティーに渡すのと同じ構文を使用します。パッケージまたはコレクションを別のファイルで定義し、定義ファイルの dependencies セクションで上記のファイルを参照することもできます。

有効なキーは次のとおりです。

ansible_core

インストールされる ansible-core Python パッケージのバージョン。

この値は、キー (package_pip) が 1 つ含まれるディクショナリーです。package_pip 値は、インストールのために pip に直接渡され、pip がサポートする任意の形式に指定できます。以下は、値の例です。

ansible_core:
    package_pip: ansible-core
ansible_core:
    package_pip: ansible-core==2.14.3
ansible_core:
    package_pip: https://github.com/example_user/ansible/archive/refs/heads/ansible.tar.gz

ansible_runner

インストールする Ansible Runner Python パッケージのバージョン。

この値は、キー (package_pip) が 1 つ含まれるディクショナリーです。package_pip 値は、インストールのために pip に直接渡され、pip がサポートする任意の形式に指定できます。以下は、値の例です。

ansible_runner:
    package_pip: ansible-runner
ansible_runner:
    package_pip: ansible-runner==2.3.2
ansible_runner:
    package_pip: https://github.com/example_user/ansible-runner/archive/refs/heads/ansible-runner.tar.gz

galaxy

Ansible Galaxy からインストールするコレクション。

これは、ファイル名、ディクショナリー、または Ansible Galaxy required.yml ファイルの複数行の文字列表現です。要件ファイル形式の詳細は、Galaxy ユーザーガイド を参照してください。

python

Python のインストール要件。

これには、ファイル名または要件のリストなどを使用できます。Ansible Builder は、requirements-parser ライブラリーを使用して、すべてのコレクションのすべての Python 要件ファイルを 1 つのファイルに結合します。

このライブラリーは、他のファイルへの参照を含む複雑な構文をサポートします。多数のコレクションに同じ パッケージ名 が必要な場合、Ansible Builder はそれらを 1 つのエントリーにまとめ、制約を結合します。

Ansible Builder は、コレクションにパッケージが依存関係としてリストされている場合でも、Python 依存関係の結合ファイル内の一部のパッケージを除外します。これには、テストパッケージと、Ansible 自体を提供するパッケージが含まれます。完全なリストは、src/ansible_builder/_target_scripts/introspect.pyEXCLUDE_REQUIREMENTS で確認できます。

このような除外されるパッケージ名のいずれかを含める必要がある場合は、introspect コマンドの --user-pip オプションを使用して、ユーザー要件ファイルにそのパッケージ名をリストします。

この方法で提供されたパッケージは、除外された Python パッケージのリストに対して処理されません。

python_interpreter

dnf によってインストールされる Python システムパッケージ名 (package_system) または使用される Python インタープリターへのパス (python_path) を定義するディクショナリー。

system

インストールされるシステムパッケージ (bindep 形式)。ファイル名または要件のリストを指定できます。

bindingep の詳細は、OpenDev のドキュメント を参照してください。

システムパッケージの場合、bindep 形式を使用してクロスプラットフォーム要件を指定すると、実行環境が使用するパッケージ管理システムによってシステムパッケージをインストールできます。コレクションで、[platform:rpm] に必要な要件を指定する必要があります。Ansible Builder は、複数のコレクションのシステムパッケージエントリーを 1 つのファイルに結合します。プロファイルのない要件 (ランタイム要件) のみがイメージにインストールされます。互いに重複している多数のコレクションのエントリーを、結合ファイルに統合できます。

次の例では、さまざまな依存関係を含むファイル名を使用しています。

dependencies:
  python: requirements.txt
  system: bindep.txt
  galaxy: requirements.yml
  ansible_core:
      package_pip: ansible-core==2.14.2
  ansible_runner:
      package_pip: ansible-runner==2.3.1
  python_interpreter:
      package_system: "python310"
      python_path: "/usr/bin/python3.10"

この例ではインライン値を使用します。

dependencies:
  python:
    - pywinrm
  system:
    - iputils [platform:rpm]
  galaxy:
    collections:
      - name: community.windows
      - name: ansible.utils
        version: 2.10.1
  ansible_core:
      package_pip: ansible-core==2.14.2
  ansible_runner:
      package_pip: ansible-runner==2.3.1
  python_interpreter:
      package_system: "python310"
      python_path: "/usr/bin/python3.10"
注記

これらの依存関係ファイル (requirements.txt、bindep.txt、requirements.yml) のいずれかがコレクションの build_ignore に含まれている場合、ビルドが失敗します。

コレクションのメンテナーは、introspect コマンドを使用して、期待される要件を ansible-builder が認識していることを確認できます。

ansible-builder introspect --sanitize ~/.ansible/collections/

--sanitize オプションは、すべてのコレクション要件を確認し、重複を削除します。また、通常は除外される Python 要件も削除されます (Python の依存関係を参照)。

-v3 オプションを使用して イントロスペクト を行い、除外されている要件に関するログメッセージを確認します。

15.2.5. images

使用するベースイメージを指定します。少なくとも、ベースイメージのソース、イメージ、およびタグを指定する必要があります。基本イメージはオペレーティングシステムを提供し、いくつかのパッケージも提供することもできます。標準の host/namespace/container:tag 構文を使用してイメージを指定します。代わりに Podman または Docker のショートカット構文を使用することもできますが、完全な定義の方が信頼性と移植性が高くなります。

このセクションの有効なキーは次のとおりです。

base_image

実行環境の親イメージを定義するディクショナリー。

使用するコンテナーイメージには name キーを指定する必要があります。イメージがリポジトリー内でミラーリングされているが、イメージの元の署名キーで署名されている場合は、signature_original_name キーを使用します。

15.2.6. Image verification

podman コンテナーランタイムを使用している場合は、署名されたコンテナーイメージを検証できます。

Container-policy CLI オプションを設定して、コンテナーイメージの署名検証のための Podman policy.json ファイルに関連してこのデータがどのように使用されるかを制御します。

  • ignore_all ポリシー: 署名検証が実行されないビルドの context directory <context> に、policy.json ファイルを生成します。
  • システム ポリシー: 署名の検証は、標準のシステムの場所にある既存の policy.json ファイルを使用して実行されます。ansible-builder は、これらのファイル内のコンテンツに対する責任を負わず、ユーザーがコンテンツを完全に制御できます。
  • Signature_required ポリシー: ansible-builder は、コンテナーイメージ定義で、ビルド中にイメージを検証するために使用される、ビルドの context directory <context> 内に policy.json ファイルを生成します。

15.2.7. options

Ansible Builder のランタイム機能に影響を与える可能性のあるキーワードまたはオプションのディクショナリー。

このセクションの有効なキーは次のとおりです。

  • context_init: コンテナーの ENTRYPOINT および CMD ディレクティブ (および関連する動作) のカスタマイズを可能にするキーを含むディクショナリー。これらの動作のカスタマイズは高度なタスクであり、デバッグが困難な障害が発生する可能性があります。下記のデフォルト値は、複数の密接な動作を制御するものです。そのため、いずれかの値をオーバーライドすると、このディクショナリー内の残りのデフォルトがすべてスキップされます。

    有効なキーは次のとおりです。

    • cmd : CMD Containerfile ディレクティブのリテラル値。デフォルト値は ["bash"] です。
    • entrypoint: ENTRYPOINT Containerfile ディレクティブのリテラル値。デフォルトのエントリーポイントの動作は、サブプロセスへのシグナルの伝播を処理するだけでなく、実行時に、コンテナーユーザーが有効で書き込み可能なホームディレクトリーが含まれる適切な環境が含まれます。このディレクトリーは、/etc/passwd で表現されており、HOME 環境変数と一致するように設定されています。デフォルトのエントリーポイントスクリプトは、ユーザーのランタイム環境を適切に調整できない場合に、stderr に警告を発行できます。この動作は無視されるか、致命的なエラーに格上げされる可能性があります。詳細は、エントリーポイント ターゲットスクリプトのソースを参照してください。

      デフォルト値は ["/opt/builder/bin/entrypoint", "dumb-init"] です。

    • package_pip : エントリーポイントのサポートのために pip を使用してインストールするパッケージ。このパッケージは、最終的なビルドイメージにインストールされます。

      デフォルト値は Dam-init==1.2.5 です。

  • package_manager_path: 使用するパッケージマネージャー (dnf または microdnf) へのパスを含む文字列。デフォルトは /usr/bin/dnf です。この値は、dependency で指定されている場合、assemble スクリプトによるビルドフェーズ中に Python インタープリターをインストールするために使用されます。
  • Skip_ansible_check: このブール値は、Ansible および Ansible Runner のインストールのチェックを最終イメージで実行するかどうかを制御します。

    このチェックを実行しない場合は、この値を True に設定します。

    デフォルトは False です。

  • Relax_passwd_permissions : このブール値は、ルート グループ (GID 0) に、最終コンテナーイメージ内の /etc/passwd への書き込みパーミッションを明示的に付与するかどうかを制御します。デフォルトのエントリーポイントスクリプトは、完全に機能する POSIX ユーザー環境とホームディレクトリーを確保するために、動的に作成されたユーザーを使用して一部のコンテナーランタイムで /etc/passwd の更新を試みることができます。この機能を無効にすると、有効で書き込み可能なホームディレクトリーを持つユーザーを /etc/passwd にリストする必要があるソフトウェア機能 (たとえば、ansible-core の async~username シェル拡張など) が失敗する可能性があります。

    デフォルトは True です。

  • workdir: 最終コンテナーイメージで開始される新しいプロセスのデフォルトとして設定されている現在の作業ディレクトリー。一部のコンテナーランタイムは、root (GID 0) グループ内で動的に作成されたユーザーの HOME としてもこの値を使用します。この値を指定すると、ディレクトリーがまだ存在しない場合はディレクトリーが作成され、root グループの所有権が設定され、rwx グループのアクセス許可が再帰的に適用されます。

    デフォルト値は /runner です。

  • user: 最終的なコンテナーイメージのデフォルトユーザーとして使用するユーザー名または UID を設定します。

    デフォルト値は 1000 です。

オプションの例:

options:
    container_init:
        package_pip: dumb-init>=1.2.5
        entrypoint: '["dumb-init"]'
        cmd: '["csh"]'
    package_manager_path: /usr/bin/microdnf
    relax_password_permissions: false
    skip_ansible_check: true
    workdir: /myworkdir
    user: bob

15.2.8. version

実行環境定義ファイルのスキーマバージョンを設定する整数値。

デフォルトは 1 です。

Ansible Builder 3.x を使用している場合、値は 3 である必要があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.