15.3. シークレットを使用した Quadlet アプリケーションの作成
Podman システムロールを使用して、Ansible Playbook を実行することにより、シークレットを含む Quadlet アプリケーションを作成できます。
podman_quadlet_specs 変数は、Podman v4.6 以降で使用可能です。
Quadlet はルートフルコンテナーでのみ機能します。
前提条件
- コントロールノード (このシステムから Red Hat Ansible Engine は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノード:
-
rhel-system-rolesパッケージがインストールされている。 - マネージドのホストと適用するその他のパラメーターをリストした Ansible インベントリーファイル。
- シークレット - できれば Ansible Vault 暗号化変数を使用して、以下を定義する必要があります。
-
MySQL の root パスワード (
"root_password_from_vault") -
TLS 証明書と鍵 (
"cert_from_vault" および "key_from_vault")
-
-
ansible-playbookコマンドは、rhel-system-rolesパッケージの依存関係として自動的にインストールされるansible-coreパッケージによって提供されます。 -
この例で使用するファイルは、
/usr/share/ansible/roles/rhel-system-roles.podman/tests/filesおよび/usr/share/ansible/roles/rhel-system-roles.podman/tests/templatesディレクトリーのrhel-system-rolesパッケージで提供されています。
手順
以下のコンテンツを含む新しい playbook.yml ファイルを作成します。
podman_create_host_directories: true podman_activate_systemd_unit: false podman_quadlet_specs: - name: quadlet-demo type: network file_content: | [Network] Subnet=192.168.30.0/24 Gateway=192.168.30.1 Label=app=wordpress - file_src: quadlet-demo-mysql.volume - template_src: quadlet-demo-mysql.container.j2 - file_src: envoy-proxy-configmap.yml - file_src: quadlet-demo.yml - file_src: quadlet-demo.kube activate_systemd_unit: true podman_firewall: - port: 8000/tcp state: enabled - port: 9000/tcp state: enabled podman_secrets: - name: mysql-root-password-container state: present skip_existing: true data: "{{ root_password_from_vault }}" - name: mysql-root-password-kube state: present skip_existing: true data: | apiVersion: v1 data: password: "{{ root_password_from_vault | b64encode }}" kind: Secret metadata: name: mysql-root-password-kube - name: envoy-certificates state: present skip_existing: true data: | apiVersion: v1 data: certificate.key: {{ key_from_vault | b64encode }} certificate.pem: {{ cert_from_vault | b64encode }} kind: Secret metadata: name: envoy-certificatesこの手順では、MySQL データベースと組み合わせた WordPress コンテンツ管理システムを作成します。
podman_quadlet_specsロール変数では、Quadlet の一連の設定を定義します。この設定は、特定の方法で連携するコンテナーまたはサービスのグループを参照します。これには次の仕様を含めます。-
Wordpress ネットワークを、
quadlet-demoネットワークユニットで定義します。 -
MySQL コンテナーのボリューム設定を、
file_src: quadlet-demo-mysql.volumeフィールドで定義します。 -
template_src: quadlet-demo-mysql.container.j2フィールドを使用して、MySQL コンテナーの設定を生成します。 -
その後に、2 つの YAML ファイル
file_src: envoy-proxy-configmap.ymlおよびfile_src: quadlet-demo.ymlを指定します。.yml は有効な Quadlet ユニットタイプではないため、これらのファイルはコピーされるだけで、Quadlet 仕様としては処理されないことに注意してください。 -
Wordpress および envoy プロキシーコンテナーと設定を、
file_src: quadlet-demo.kubeフィールドで定義します。kube ユニットは、[Kube]セクション内の上記の YAML ファイルを、Yaml=quadlet-demo.ymlおよびConfigMap=envoy-proxy-configmap.ymlとして参照します。
-
Wordpress ネットワークを、
オプション: Playbook の構文を確認します。
# ansible-playbook --syntax-check playbook.yml -i inventory_fileインベントリーファイルで Playbook を実行します。
# ansible-playbook -i inventory_file playbook.yml