4.2. システムロールを使用した物理的にバインドされたイメージの作成
システムロールを使用すると、まだ起動していない環境を検出し、自身の動作を調整する物理的にバインドされたイメージを作成できます。たとえば、そのようなイメージは systemd ユニットを起動しようとしたり、ネットワークサービスと通信したりしてはならず、そのような処理をすべて初回の起動時まで延期する必要があります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
手順
以下の内容の Playbook ファイル (
./setup.ymlなど) を作成します。--- - name: Configure physically bound images with RHEL system roles hosts: all vars: podman_registries_conf: unqualified-search-registries: - "registry.access.redhat.com" - "docker.io" - "my-company-registry.com" registry: - location: "my-company-registry.com" - location: "my-local-registry:5000" insecure: true podman_quadlet_specs: - file_src: my-quadlet.container state: started tasks: - name: Run the podman role include_role: name: redhat.rhel_system_roles.podmanAnsible Playbook の Podman システムロールにより、レジストリーと quadlet アプリケーションを使用してシステムが設定されます。
Playbook の構文を検証します。
$ ansible-playbook --syntax-check ./setup.ymlこのコマンドは構文のみを検証するものであり、誤っているが有効な設定に対する保護機能はありません。
コンテナーアプリケーションを設定するための
quadlet.containerファイルを作成します。以下に例を示します。[Install] WantedBy=default.target [Container] Image=quay.io/my_org/my_image:20260326 ContainerName=my-quadlet以下の内容の
Containerfileファイルを作成します。FROM quay.io/centos-bootc/centos-bootc:stream10 RUN dnf -y install ansible-core rhel-system-roles COPY ./setup.yml . COPY ./quadlet.container . RUN ansible-playbook -c local setup.ymlイメージビルド内ですべてのアクションを実行し、Playbook を localhost に対して実行します。マルチステージビルドを使用することで、Ansible とロールを最終イメージから除外できます。このプロセスは完全に自己完結型であるため、自動コンテナービルドパイプラインでうまく機能します。
注記イメージに依存するコンテナーやサービス (たとえば、Quadlet) を起動する前に、そのイメージをコピーしておく必要があります。
bootcイメージをビルドします。以下に例を示します。$ podman build -t quay.io/<namespace>/<image>:<tag> .