13.3. podman RHEL システムロールを使用したシークレットを含む Quadlet アプリケーションの作成
podman
RHEL システムロールを使用して、Ansible Playbook を実行することで、シークレットを含む Quadlet アプリケーションを作成できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。 -
コンテナー内の Web サーバーが使用する証明書と対応する秘密鍵が、
~/certificate.pem
ファイルと~/key.pem
ファイルに保存されている。
手順
証明書と秘密鍵ファイルの内容を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この情報は後の手順で必要になります。
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault create
コマンドでエディターが開いたら、機密データを<key>: <value>
形式で入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow certificate
変数およびkey
変数のすべての行が 2 つのスペースで始まるようにします。- 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この手順では、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
として参照します。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.podman/README.md
ファイルを参照してください。
-
Wordpress ネットワークを、
Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow