第20章 実行環境


従来の仮想環境とは異なり、実行環境は、システムレベルの依存関係とコレクションベースのコンテンツを組み込むことを可能にするコンテナーイメージです。各実行環境で、ジョブ実行用のカスタマイズイメージを使用できます。各実行環境には、ジョブの実行時に必要なもののみが含まれています。

20.1. 実行環境の構築

Ansible コンテンツがデフォルトの環境ではなくカスタム仮想環境に依存している場合は、追加の手順を実行する必要があります。各ノードにパッケージをインストールし、ホストシステムにインストールされている他のソフトウェアと適切に連携させ、パッケージの同期を維持する必要があります。

このプロセスを簡素化するために、Ansible コントロールノード として機能するコンテナーイメージをビルドできます。これらのコンテナーイメージは自動化実行環境と呼ばれ、ansible-builder を使用して作成できます。Ansible-runner は上記のようなイメージを利用できるようになります。

20.1.1. ansible-builder のインストール

イメージをビルドするには、Podman または Docker と ansible-builder Python パッケージがインストールされている必要があります。

--container-runtime オプションは、使用する Podman または Docker 実行可能ファイルに対応している必要があります。

実行環境イメージをビルドするときは、Ansible Automation Platform がデプロイされるアーキテクチャーをサポートする必要があります。

詳細は、Ansible Builder のクイックスタート または 実行環境の作成および消費 を参照してください。

20.1.2. 実行環境に必要なコンテンツ

実行環境の作成には Ansible-builder を使用します。

実行環境には以下が含まれている必要があります。

  • Ansible
  • Ansible Runner
  • Ansible コレクション
  • Python とシステムの依存関係:

    • コレクション内のモジュールまたはプラグイン
    • ansible-base のコンテンツ
    • カスタムのユーザーニーズ

新しい実行環境を構築するには、コレクション、Python 要件、システムレベルのパッケージなど、実行環境に含めるコンテンツを指定した定義が必要です。定義は .yml ファイルである必要があります。

実行環境への移行によって生成された出力の内容には、ファイルにパイプしたり、この定義ファイルに貼り付けたりできる必要なデータの一部が含まれています。

関連情報

詳細は、Migrate legacy venvs to execution environments を参照してください。仮想環境から移行しなかった場合は、実行環境の設定リファレンス で説明されている必要なデータを含む定義ファイルを作成できます。

コレクション開発者は、適切なメタデータを提供することで、コンテンツの要件を宣言できます。

詳細は、依存関係 を参照してください。

20.1.3. イメージをビルドするための YAML ファイルの例

ansible-builder build コマンドは、実行環境定義を入力として受け取ります。実行環境イメージのビルドに必要なビルドコンテキストを出力し、そのイメージをビルドします。このイメージは、ビルドコンテキストを使用して他の場所で再ビルドでき、同じ結果が得られます。デフォルトでは、ビルダーは現在のディレクトリーで execution-environment.yml という名前のファイルを検索します。

次の execution-environment.yml ファイルの例は、開始点として使用できます。

---
version: 3
dependencies:
  galaxy: requirements.yml

requirements.yml の内容:

---
collections:
  - name: awx.awx

上記のファイルを使用して実行環境を構築し、次のコマンドを実行します。

ansible-builder build
...
STEP 7: COMMIT my-awx-ee
--> 09c930f5f6a
09c930f5f6ac329b7ddb321b144a029dbbfcc83bdfc77103968b7f6cdfc7bea2
Complete! The build context can be found at: context

すぐに使用できるコンテナーイメージが生成されるだけでなく、ビルドコンテキストが保持されます。このイメージは、docker buildpodman build などの任意のツールを使用して、別の時間または場所で再ビルドできます。

関連情報

ansible-builder build コマンドの詳細は、Ansible の CLI Usage ドキュメントを参照してください。

20.1.4. 実行環境のマウントオプション

証明書の追加の方法として、実行環境の再構築が 1 つ挙げられますが、ホストから証明書を継承する方がより便利な解決策となります。仮想マシンベースのインストールの場合、Automation Controller はジョブの実行時に実行環境にシステムトラストストアを自動的にマウントします。

Job Settings ページの Paths to expose to isolated jobs フィールドで実行環境のマウントオプションとマウントパスをカスタマイズできます。このフィールドでは、Podman スタイルのボリュームマウント構文がサポートされています。

関連情報

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

20.1.4.1. 実行環境マウントオプションのトラブルシューティング

実行環境のカスタマイズにより実行環境イメージに /etc/ssh/* ファイルが追加された場合、SSH エラーが発生する場合があります。たとえば、/etc/ssh/ssh_config.d:/etc/ssh/ssh_config.d:O パスを公開すると、コンテナーをマウントできるようになりますが、所有権のアクセス許可は正しくマップされません。

このエラーが発生した場合、または古いバージョンの Automation Controller からアップグレードした場合は、次の手順を使用してください。

手順

  1. マウントされたボリュームのコンテナー所有権を root に変更します。
  2. ナビゲーションパネルから Settings Job を選択します。
  3. Edit をクリックします。
  4. 現在の例を使用して、Paths to expose to isolated jobs でパスを公開します。

    [
      "/ssh_config:/etc/ssh/ssh_config.d/:0"
    ]
    注記

    :O オプションはディレクトリーに対してのみサポートされます。特にシステムパスを指定する場合は、できるだけ詳細に指定してください。/etc または /usr を直接マウントすると、トラブルシューティングが困難になる影響があります。

    これにより、次の例と同様のコマンドを実行するように Podman に通知されます。このコマンドにより、設定がマウントされ、ssh コマンドが期待どおりに機能するようになります。

    podman run -v /ssh_config:/etc/ssh/ssh_config.d/:O ...

OpenShift または Kubernetes コンテナー内の分離されたパスを HostPath として公開するには、以下の設定を想定してください。

[
  "/mnt2:/mnt2",
  "/mnt3",
  "/mnt4:/mnt4:0"
]

有効にするには Expose host paths for Container GroupsOn に設定します。

Playbook が実行されると、結果として得られる Pod 仕様は次の例のようになります。volumeMounts セクションと volumes セクションの詳細に注目してください。

Pod specification

20.1.4.2. 実行ノード内のディレクトリーを実行環境コンテナーにマウントする

Ansible Automation Platform 2.1.2 では、O および z オプションのみが使用可能でした。Ansible Automation Platform 2.2 以降では、rw などの追加のオプションが利用可能になりました。これは、NFS ストレージを使用する場合に便利です。

手順

  1. ナビゲーションパネルから Settings Job を選択します。
  2. Paths to expose to isolated jobs を編集します。

    • 実行ノードまたはハイブリッドノードからコンテナーにボリュームをマウントするパスのリストを入力します。
    • 1 行に 1 つのパスを入力します。
    • サポートされている形式は、HOST-DIR[:CONTAINER-DIR[:OPTIONS] です。許可されるパスは、zOro、および rw です。

      [
        "/var/lib/awx/.ssh:/root/.ssh:O"
      ]

    • rw オプションの場合、SELinux ラベルを正しく設定します。たとえば、/foo ディレクトリーをマウントするには、次のコマンドを実行します。

      sudo su
      mkdir /foo
      chmod 777 /foo
      semanage fcontext -a -t container_file_t "/foo(/.*)?"
      restorecon -vvFR /foo

awx ユーザーには、少なくともこのディレクトリーでの読み取りまたは書き込みの許可が必要です。ここでは権限を 777 に設定します。

関連情報

ボリュームのマウントの詳細は、Podman ドキュメントの --volume option of the podman-run(1) を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.