21.2. podman RHEL システムロールを使用した Podman ボリュームを持つルートフルコンテナーの作成
podman
RHEL システムロールを使用すると、Ansible Playbook を実行して Podman ボリュームを持つルートフルコンテナーを作成し、アプリケーション設定を管理できます。
サンプルの Ansible Playbook は、ubi8-httpd
という名前の Kubernetes Pod をデプロイします。この Pod は、registry.access.redhat.com/ubi8/httpd-24
イメージから HTTP サーバーコンテナーを実行します。コンテナーの Web コンテンツは、ubi8-html-volume
という名前の永続ボリュームからマウントされます。デフォルトでは、podman
ロールはルートフルコンテナーを作成します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。- name: Configure Podman hosts: managed-node-01.example.com tasks: - name: Start Apache server on port 8080 ansible.builtin.include_role: name: rhel-system-roles.podman vars: podman_firewall: - port: 8080/tcp state: enabled podman_kube_specs: - state: started kube_file_content: apiVersion: v1 kind: Pod metadata: name: ubi8-httpd spec: containers: - name: ubi8-httpd image: registry.access.redhat.com/ubi8/httpd-24 ports: - containerPort: 8080 hostPort: 8080 volumeMounts: - mountPath: /var/www/html:Z name: ubi8-html volumes: - name: ubi8-html persistentVolumeClaim: claimName: ubi8-html-volume
サンプル Playbook で指定されている設定は次のとおりです。
kube_file_content
db
という名前の 1 つ目コンテナーを定義する Kubernetes YAML ファイルが含まれています。Kubernetes YAML ファイルは、podman kube generate
コマンドを使用して生成できます。-
ubi8-httpd
コンテナーは、registry.access.redhat.com/ubi8/httpd-24
コンテナーイメージに基づいています。 -
ubi8-html-volume
は、ホスト上の/var/www/html
ディレクトリーをコンテナーにマップします。Z
フラグはコンテンツにプライベート非共有ラベルを付けるため、ubi8-httpd
コンテナーのみがコンテンツにアクセスできます。 -
Pod は、マウントパス
/var/www/html
を使用して、ubi8-html-volume
という名前の既存の永続ボリュームをマウントします。
-
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.podman/README.md
ファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.podman/README.md
ファイル -
/usr/share/doc/rhel-system-roles/podman/
ディレクトリー