15장. RHEL 시스템 역할을 사용하여 컨테이너 관리
podman RHEL 시스템 역할은 Red Hat Enterprise Linux 시스템에서 컨테이너를 관리합니다. 이 역할은 Ansible을 사용하여 Podman 을 구성하고, 컨테이너 라이프사이클을 관리하며, 컨테이너화된 애플리케이션을 systemd 서비스로 배포합니다.
15.1. Podman 및 기타 컨테이너 툴의 이미지 레지스트리 관리 구성 링크 복사링크가 클립보드에 복사되었습니다!
podman RHEL 시스템 역할을 사용하면 여러 RHEL 시스템에서 레지스트리 구성을 포함하여 Podman 관리를 자동화할 수 있습니다. 파일을 수동으로 편집하는 대신 Ansible 플레이북에서 원하는 레지스트리 구성을 정의합니다.
podman RHEL 시스템 역할은 레지스트리 설정이 포함된 사전을 허용하는 podman_registries_conf 변수를 사용합니다. 그런 다음 역할은 시스템 구성 관리에 대한 모범 사례에 따라 /etc/containers/registries.conf.d/ 에 드롭인 파일을 생성합니다.
사전 요구 사항
- 컨트롤 노드와 관리형 노드를 준비했습니다.
- 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
-
관리 노드에 연결하는 데 사용하는 계정에는 이러한 노드에 대한
sudo권한이 있습니다.
프로세스
다음 콘텐츠를 사용하여 플레이북 파일(예:
~/playbook.yml)을 생성합니다.--- - name: Configure Podman registries with RHEL system roles hosts: managed-node-01.example.com vars: podman_registries_conf: unqualified-search-registries: - "registry.access.redhat.com" - "docker.io" - "my-company-registry.com" registry: - location: "my-company-registry.com" - location: "my-local-registry:5000" insecure: true tasks: - name: Include the podman system role ansible.builtin.include_role: name: redhat.rhel_system_roles.podman예제 플레이북에 지정된 설정은 다음과 같습니다.
-
unqualified-search-registries: 짧은 이미지 이름을 사용할 때 Podman 레지스트리 목록을 확장합니다(예:podman pull <my-image>). Podman은 기본 레지스트리 이후 my-company-registry.com에서 이미지를 검색합니다. -
[registry]: 지정된 레지스트리에 대한 특정 속성을 정의합니다. 예를 들어insecure=true를 my-local-registry:5000에서 실행되는 로컬 레지스트리로 설정하여 비보안 연결을 활성화할 수 있습니다.
podman_use_new_toml_formatter변수는 Podman과 호환되는 TOML 호환 구성 파일을 생성합니다. 이 변수는 이전에 사용된 Jinja 템플릿 대신 실제 TOML 포맷터를 통해 테이블 및 인라인 테이블을 포함한 모든 TOML 기능을 지원하여 Podman 역할을 향상시킵니다.새 포맷터는 이전 포맷터의 동작과의 호환성을 유지하기 위해 기본적으로 비활성화되어 있습니다. 새 포맷터를 활성화하려면 구성에서
podman_use_new_toml_formatter: true를 설정합니다.podman_use_new_toml_formatter: true podman_containers_conf: containers: annotations: - environment=production - status=tier2-
플레이북 구문을 확인합니다.
$ ansible-playbook --syntax-check ~/playbook.yml이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.
Playbook을 실행합니다.
$ ansible-playbook ~/playbook.yml
검증
호스트에서
podman info명령을 실행합니다.$ ansible managed-node-01.example.com -m command -a 'podman info'registeries 섹션을 확인합니다.
registries: my-company-registry.com: Blocked: false Insecure: false Location: my-company-registry.com MirrorByDigestOnly: false Mirrors: null Prefix: my-company-registry.com PullFromMirror: "" my-local-registry:5000: Blocked: false Insecure: true Location: my-local-registry:5000 MirrorByDigestOnly: false Mirrors: null Prefix: my-local-registry:5000 PullFromMirror: "" search: - registry.access.redhat.com - docker.io - my-company-registry.com