検索

第15章 Ansible Playbook を使用したコンテナーの管理

download PDF

Podman 4.2 以降では、Podman RHEL システムロールを使用して、Podman 設定、コンテナー、および Podman コンテナーを実行する systemd サービスを管理できます。

RHEL システムロールは、複数の RHEL システムをリモートで管理するための設定インターフェイスを提供します。このインターフェイスを使用すると、RHEL の複数のバージョンにわたるシステム設定を管理したり、新しいメジャーリリースを導入したりできます。詳細は、RHEL System Roles を使用したシステム管理の自動化 を参照してください。

15.1. バインドマウントを使用したルートレスコンテナーの作成

podman RHEL システムロールを使用すると、Ansible Playbook を実行してバインドマウントによりルートレスコンテナーを作成し、アプリケーション設定を管理できます。

前提条件

  • 制御ノードと管理ノードを準備している
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    - hosts: managed-node-01.example.com
      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.podma

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

    • run_as_user フィールドと run_as_group フィールドは、コンテナーがルートレスであることを指定します。
    • Kubernetes YAML ファイルを含む kube_file_content フィールドは、db という名前の最初のコンテナーを定義します。podman kube generate コマンドを使用して 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 を使用します。
  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook --ask-vault-pass ~/playbook.yml

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.podman/README.md ファイル
  • /usr/share/doc/rhel-system-roles/podman/ ディレクトリー
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.