Red Hat Training
A Red Hat training course is available for RHEL 8
第15章 Ansible Playbook を使用したコンテナーの管理
Podman 4.2 以降では、Podman RHEL システムロールを使用して、Podman 設定、コンテナー、および Podman コンテナーを実行する systemd サービスを管理できます。
RHEL システムロールは、複数の RHEL システムをリモートで管理するための設定インターフェイスを提供します。このインターフェイスを使用すると、RHEL の複数のバージョンにわたるシステム設定を管理したり、新しいメジャーリリースを導入したりできます。詳細は、RHEL System Roles を使用したシステム管理の自動化 を参照してください。
15.1. バインドマウントを使用したルートレスコンテナーの作成
Podman システムロールを使用すると、Ansible Playbook を実行してバインドマウントによりルートレスコンテナーを作成し、アプリケーション設定を管理できます。
前提条件
- コントロールノード (このシステムから Red Hat Ansible Engine は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
rhel-system-roles
パッケージがインストールされている。 - マネージドのホストと適用するその他のパラメーターをリストした Ansible インベントリーファイル。
-
ansible-playbook
コマンドは、rhel-system-roles
パッケージの依存関係として自動的にインストールされる ansible-core
パッケージによって提供されます。
手順
以下のコンテンツを含む新しい playbook.yml ファイルを作成します。
- hosts: all vars: podman_create_host_directories: true podman_firewall: - port: 8080-8081/tcp state: enabled - port: 12340/tcp state: enabled podman_selinux_ports: - ports: 8080-8081 setype: http_port_t podman_kube_specs: - state: started run_as_user: dbuser run_as_group: dbgroup kube_file_content: apiVersion: v1 kind: Pod metadata: name: db spec: containers: - name: db image: quay.io/db/db:stable ports: - containerPort: 1234 hostPort: 12340 volumeMounts: - mountPath: /var/lib/db:Z name: db volumes: - name: db hostPath: path: /var/lib/db - state: started run_as_user: webapp run_as_group: webapp kube_file_src: /path/to/webapp.yml roles: - linux-system-roles.podman
この手順では、2 つのコンテナーを持つ Pod を作成します。
podman_kube_specs
ロール変数は Pod を記述します。-
run_as_user
フィールドとrun_as_group
フィールドは、コンテナーがルートレスであることを指定します。 Kubernetes YAML ファイルを含む
kube_file_content
フィールドは、db
という名前の最初のコンテナーを定義します。podman generate systemd
コマンドを使用して、Kubernetes YAML ファイルを生成できます。-
db
コンテナーは、quay.io/db/db:stable
コンテナーイメージに基づいています。 -
db
バインドマウントは、ホスト上の/var/lib/db
ディレクトリーをコンテナー内の/var/lib/db
ディレクトリーにマップします。Z
フラグはコンテンツにプライベート非共有ラベルを付けるため、db
コンテナーのみがコンテンツにアクセスできます。
-
-
kube_file_src
フィールドは 2 番目のコンテナーを定義します。コントローラーノードの/path/to/webapp.yml
ファイルの内容は、マネージドノードのkube_file
フィールドにコピーされます。 -
ホスト上にディレクトリーを作成するには、
podman_create_host_directories: true
を設定します。これにより、hostPath
ボリュームの kube 仕様を確認し、ホスト上にそれらのディレクトリーを作成するようにロールに指示します。所有権と権限をさらに細かく制御する必要がある場合は、podman_host_directories
を使用します。
-
オプション: 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 システムロールのドキュメント