第15章 RHEL システムロールを使用したコンテナーの管理
podman RHEL システムロールは、Red Hat Enterprise Linux システム上のコンテナーを管理します。このロールでは、Ansible を使用して Podman の設定やコンテナーのライフサイクル管理を行い、さらにはコンテナー化されたアプリケーションを systemd サービスとしてデプロイします。
15.1. Podman およびその他のコンテナーツールを対象としたイメージレジストリー管理の設定 リンクのコピーリンクがクリップボードにコピーされました!
podman RHEL システムロールを使用すると、複数の RHEL システムにわたる Podman の管理 (レジストリー設定を含む) を自動化できます。ファイルを手動で編集する代わりに、Ansible Playbook で必要なレジストリー設定を定義します。
podman RHEL システムロールは、podman_registries_conf 変数を使用します。この変数は、レジストリー設定を含むディクショナリーを受け取ります。その後、このロールは、システム設定を管理するためのベストプラクティスに従って、たとえば /etc/containers/registries.conf.d/ にドロップインファイルを作成し、設定を適用します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。--- - name: Configure Podman registries with RHEL system roles hosts: managed-node-01.example.com 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 tasks: - name: Include the podman system role ansible.builtin.include_role: name: redhat.rhel_system_roles.podmanサンプル Playbook で指定されている設定は次のとおりです。
-
unqualified-search-registries: 短いイメージ名 (例:podman pull <my-image>) を使用する場合に、Podman が検索対象とするレジストリーのリストを追加します。Podman は、デフォルトのレジストリーの後に my-company-registry.com でイメージを検索します。 -
[registry]: 特定のレジストリー用に特定のプロパティーを定義します。たとえば、my-local-registry:5000 で実行されているローカルレジストリーにinsecure=trueを設定することで、セキュアでない接続を有効にできます。
podman_use_new_toml_formatter変数は、Podman と互換性のある TOML 準拠の設定ファイルを生成します。この変数は、以前使用されていた Jinja テンプレートの代わりに、本格的な TOML フォーマッターを使用し、テーブルやインラインテーブルを含むすべての TOML 機能をサポートすることで、Podman ロールを強化します。以前のフォーマッターの動作との互換性を維持するために、新しいフォーマッターはデフォルトで無効になっています。新しいフォーマッターを有効にするには、設定で
podman_use_new_toml_formatter: trueを指定します。podman_use_new_toml_formatter: true podman_containers_conf: containers: annotations: - environment=production - status=tier2-
Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.ymlこのコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
検証
ホスト上で
podman infoコマンドを実行します。$ ansible managed-node-01.example.com -m command -a 'podman info'registeries セクションを確認します。
registries: my-company-registry.com: Blocked: false Insecure: false Location: my-company-registry.com MirrorByDigestOnly: false Mirrors: null Prefix: my-company-registry.com PullFromMirror: "" my-local-registry:5000: Blocked: false Insecure: true Location: my-local-registry:5000 MirrorByDigestOnly: false Mirrors: null Prefix: my-local-registry:5000 PullFromMirror: "" search: - registry.access.redhat.com - docker.io - my-company-registry.com