15.2. Podman ボリュームを使用した rootful コンテナーの作成

Podman システムロールを使用すると、Ansible Playbook を実行して Podman ボリュームを持つルートフルコンテナーを作成し、アプリケーション設定を管理できます。

前提条件

  • コントロールノード (このシステムから Red Hat Ansible Engine は他のシステムを設定) へのアクセスおよびパーミッション。
  • コントロールノードでは、

    • rhel-system-roles パッケージがインストールされている。
    • マネージドのホストと適用するその他のパラメーターをリストした Ansible インベントリーファイル。
  • ubi8-html-volume ボリュームが作成されました。
注記

ansible-playbook コマンドは、rhel-system-roles パッケージの依存関係として自動的にインストールされる ansible-core パッケージによって提供されます。

手順

  1. 以下のコンテンツを含む新しい playbook.yml ファイルを作成します。

    - hosts: all
      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
      roles:
        - linux-system-roles.podman

    この手順では、1 つのコンテナーを含む Pod を作成します。podman_kube_specs ロール変数は Pod を記述します。

    • デフォルトでは、Podman ロールはルートフルコンテナーを作成します。
    • Kubernetes YAML ファイルを含む kube_file_content フィールドは、ubi8-httpd という名前のコンテナーを定義します。

      • 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 という名前の既存の永続ボリュームをマウントします。
  2. オプション: Playbook の構文を確認します。

    # ansible-playbook --syntax-check playbook.yml -i inventory_file
  3. インベントリーファイルで Playbook を実行します。

    # ansible-playbook -i inventory_file playbook.yml

関連情報