15.2. Podman 볼륨을 사용하여 루트 컨테이너 생성

Podman 시스템 역할을 사용하여 Ansible 플레이북을 실행하고 이를 사용하여 애플리케이션 구성을 관리하여 Podman 볼륨에 rootful 컨테이너를 생성할 수 있습니다.

사전 요구 사항

  • 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

    이 절차에서는 하나의 컨테이너가 있는 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. 선택 사항: 플레이북 구문을 확인합니다.

    # ansible-playbook --syntax-check playbook.yml -i inventory_file
  3. 인벤토리 파일에서 플레이북을 실행합니다.

    # ansible-playbook -i inventory_file playbook.yml

추가 리소스