Red Hat Training
A Red Hat training course is available for RHEL 8
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
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.podman/README.md
ファイル - Podman システムロールのドキュメント