Red Hat Training

A Red Hat training course is available for RHEL 8

15.3. 시크릿을 사용하여 Quadlet 애플리케이션 생성

Podman 시스템 역할을 사용하여 Ansible 플레이북을 실행하여 시크릿과 함께 Quadlet 애플리케이션을 생성할 수 있습니다.

참고

podman_quadlet_specs 변수는 Podman v4.6부터 사용할 수 있습니다.

주의

Quadlets는 rootful 컨테이너에서만 작동합니다.

사전 요구 사항

  • Red Hat Ansible Engine이 다른 시스템을 구성하는 시스템인 제어 노드에 대한 액세스 및 권한.
  • 제어 노드에서 다음을 수행합니다.

    • rhel-system-roles 패키지가 설치되어 있어야 합니다.
    • 관리할 호스트가 나열되고 적용할 다른 매개변수가 나열된 Ansible 인벤토리 파일입니다.
    • 보안 - Ansible Vault 암호화 변수를 사용하여 다음을 정의해야 합니다.
    • MySQL의 루트 암호 ("root_password_from_vault")
    • TLS 인증서 및 키(cert_from_vault 및 "key_from_vault")
참고
  • ansible-playbook 명령은 rhel-system-roles 패키지의 종속성으로 자동 설치해야 하는 ansible-core 패키지에서 제공합니다.
  • 이 예제에서 사용하는 파일은 / usr/share/ansible/roles/ rhel-system-roles.podman/tests/files 및 / usr/share/ansible/rhel-system -roles.podman/tests/templates 디렉터리의 rhel-system-roles 패키지에서 제공합니다.

절차

  1. 다음 내용으로 새 playbook.yml 파일을 생성합니다.

    podman_create_host_directories: true
    podman_activate_systemd_unit: false
    podman_quadlet_specs:
      - name: quadlet-demo
        type: network
        file_content: |
          [Network]
          Subnet=192.168.30.0/24
          Gateway=192.168.30.1
          Label=app=wordpress
      - file_src: quadlet-demo-mysql.volume
      - template_src: quadlet-demo-mysql.container.j2
      - file_src: envoy-proxy-configmap.yml
      - file_src: quadlet-demo.yml
      - file_src: quadlet-demo.kube
        activate_systemd_unit: true
    podman_firewall:
      - port: 8000/tcp
        state: enabled
      - port: 9000/tcp
        state: enabled
    podman_secrets:
      - name: mysql-root-password-container
        state: present
        skip_existing: true
        data: "{{ root_password_from_vault }}"
      - name: mysql-root-password-kube
        state: present
        skip_existing: true
        data: |
          apiVersion: v1
          data:
            password: "{{ root_password_from_vault | b64encode }}"
          kind: Secret
          metadata:
            name: mysql-root-password-kube
      - name: envoy-certificates
        state: present
        skip_existing: true
        data: |
          apiVersion: v1
          data:
            certificate.key: {{ key_from_vault | b64encode }}
            certificate.pem: {{ cert_from_vault | b64encode }}
          kind: Secret
          metadata:
            name: envoy-certificates

    이 절차에서는 MySQL 데이터베이스와 페어링된 grub 콘텐츠 관리 시스템을 생성합니다. podman_quadlet_specs 역할 변수는 특정 방식으로 함께 작동하는 컨테이너 또는 서비스 그룹을 참조하는 Quadlet의 구성 세트를 정의합니다. 여기에는 다음 사양이 포함됩니다.

    • Wordpress 네트워크는 쿼드릿-demo 네트워크 단위로 정의됩니다.
    • MySQL 컨테이너의 볼륨 구성은 file_src: quadlet-demo-mysql.volume 필드에 의해 정의됩니다.
    • template_src: quadlet-demo-mysql.j2 필드는 MySQL 컨테이너에 대한 구성을 생성하는 데 사용됩니다.
    • 다음 두 YAML 파일은 file_src: envoy-proxy-configmap.ymlfile_src: quadlet-demo.yml. .yml은 유효한 Quadlet 유닛 유형이 아니므로 이러한 파일은 복사되고 Quadlet 사양으로 처리되지 않습니다.
    • Wordpress 및 envoy 프록시 컨테이너 및 구성은 file_src: quadlet-demo.kube 필드에 의해 정의됩니다. kube 장치는 [Kube] 섹션의 이전 YAML 파일을 Yaml=quadlet-demo.ymlConfigMap=envoy-proxy-configmap.yml 로 참조합니다.
  2. 선택 사항: 플레이북 구문을 확인합니다.

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

    # ansible-playbook -i inventory_file playbook.yml

추가 리소스