21.2. 구성 옵션


정의 파일에서 다음 구성 YAML 키를 사용합니다.

Ansible Builder 3.x 실행 환경 정의 파일에는 7개의 최상위 섹션이 허용됩니다.

21.2.1. additional_build_files

빌드 파일은 빌드 컨텍스트 디렉터리에 추가할 항목을 지정합니다. 그런 다음 모든 빌드 단계에서 additional_build_steps 에서 참조하거나 복사할 수 있습니다.

형식은 사전 값 목록으로, 각각 srcdest 키와 value가 있습니다.

각 목록 항목은 다음 필수 키가 포함된 사전이어야 합니다.

src

빌드 컨텍스트 디렉터리에 복사할 소스 파일을 지정합니다.

이는 절대 경로(예: /home/user/.ansible.cfg ) 또는 파일과 관련된 경로일 수 있습니다. 상대 경로는 하나 이상의 파일(예: files/\*.cfg )과 일치하는 glob 표현식일 수 있습니다. 절대 경로는 정규식을 포함하지 않아야 합니다. src 가 디렉터리이면 해당 디렉토리의 전체 콘텐츠가 dest 로 복사됩니다.

dest

소스 파일이 포함된 빌드 컨텍스트 디렉터리의 _build 하위 디렉터리 아래에 있는 하위 디렉터리 경로를 지정합니다(예: files/configs ).

절대 경로이거나 경로 내에 포함할 수 없습니다. 이 디렉터리가 없는 경우 사용자를 위해 생성됩니다.

참고

ansible.cfg 파일을 사용하여 개인 계정의 토큰 및 기타 설정을 자동화 허브 서버에 전달하는 경우 여기에 구성 파일 경로를 문자열로 나열하면 빌드 초기 단계에서 빌드 인수로 포함될 수 있습니다.

21.2.2. additional_build_steps

빌드 단계에서는 모든 빌드 단계에 대해 사용자 정의 빌드 명령을 지정합니다. 이러한 명령은 컨테이너 런타임의 빌드 명령 파일에 직접 삽입됩니다(예: Containerfile 또는 Dockerfile). 명령은 컨테이너화 툴에 필요한 모든 규칙을 준수해야 합니다.

이미지 생성 프로세스의 단계 전후에 빌드 단계를 추가할 수 있습니다. 예를 들어 종속 항목을 설치하기 전에 git 을 설치해야 하는 경우 기본 빌드 단계 끝에 빌드 단계를 추가할 수 있습니다.

다음은 유효한 키입니다. 각각 여러 줄 문자열 또는 문자열 목록을 지원합니다.

append_base

기본 이미지를 빌드한 후 삽입할 명령입니다.

append_builder

빌더 이미지를 빌드한 후 삽입할 명령입니다.

append_final

최종 이미지를 빌드한 후 삽입할 명령입니다.

append_galaxy

Galaxy 이미지를 빌드한 후 삽입할 명령입니다.

prepend_base

기본 이미지를 빌드하기 전에 삽입할 명령입니다.

prepend_builder

빌더 이미지를 빌드하기 전에 삽입할 명령입니다.

prepend_final

최종 이미지를 빌드하기 전에 삽입할 명령입니다.

prepend_galaxy

Galaxy 이미지를 빌드하기 전에 삽입할 명령입니다.

21.2.3. build_arg_defaults

빌드 인수의 기본값을 사전으로 지정합니다.

이는 --build-arg CLI 플래그를 사용하는 대신 사용됩니다.

Ansible Builder는 다음 빌드 인수를 사용합니다.

ANSIBLE_GALAXY_CLI_COLLECTION_OPTS

사용자가 -pre 플래그 및 기타 플래그를 전달하여 사전 릴리스 컬렉션을 설치할 수 있습니다.

ANSIBLE_GALAXY_CLI_ROLE_OPTS

이를 통해 사용자는 --no-deps 와 같은 플래그를 역할 설치에 전달할 수 있습니다.

PKGMGR_PRESERVE_CACHE

이렇게 하면 이미지 빌드 프로세스 중에 패키지 관리자 캐시가 지워지는 빈도가 제어됩니다.

기본값인 이 값을 설정하지 않으면 캐시가 자주 지워집니다. 값이 항상 이면 캐시가 지워지지 않습니다. 다른 모든 값은 시스템 종속 항목이 최종 빌드 단계에 설치된 경우에만 캐시를 지워야 합니다.

Ansible Builder는 build_arg_defaults 내에서 빌드 명령 파일에 제공된 하드 코드 값을 빌드 명령 파일로 유지하므로 컨테이너 빌드를 수동으로 실행하면 지속됩니다.

CLI build-arg 플래그를 사용하여 정의 및 명령줄에서 동일한 변수를 지정하면 CLI 값이 정의의 값을 재정의합니다.

21.2.4. 종속 항목

ansible-core,ansible-runner, Python 패키지, 시스템 패키지 및 컬렉션을 포함하여 최종 이미지에 설치할 종속 항목을 지정합니다. Ansible Builder는 설치하는 Ansible 컬렉션에 대한 종속성을 자동으로 설치합니다.

일반적으로 표준 구문을 사용하여 패키지 버전을 제한할 수 있습니다. dnf,pip,ansible-galaxy 또는 기타 패키지 관리 유틸리티로 전달하는 것과 동일한 구문을 사용합니다. 별도의 파일에서 패키지 또는 컬렉션을 정의하고 정의 파일의 dependencies 섹션에서 해당 파일을 참조할 수도 있습니다.

다음 키가 유효합니다.

ansible_core

설치할 ansible-core Python 패키지의 버전입니다.

이 값은 단일 키 package_pip 가 있는 사전입니다. package_pip 값은 설치를 위해 pip로 직접 전달되며 pip가 지원하는 모든 형식으로 사용할 수 있습니다. 다음은 몇 가지 예제 값입니다.

ansible_core:
    package_pip: ansible-core
ansible_core:
    package_pip: ansible-core==2.14.3
ansible_core:
    package_pip: https://github.com/example_user/ansible/archive/refs/heads/ansible.tar.gz

ansible_runner

설치할 Ansible Runner Python 패키지의 버전입니다.

이 값은 단일 키 package_pip 가 있는 사전입니다. package_pip 값은 설치를 위해 pip로 직접 전달되며 pip가 지원하는 모든 형식으로 사용할 수 있습니다. 다음은 몇 가지 예제 값입니다.

ansible_runner:
    package_pip: ansible-runner
ansible_runner:
    package_pip: ansible-runner==2.3.2
ansible_runner:
    package_pip: https://github.com/example_user/ansible-runner/archive/refs/heads/ansible-runner.tar.gz

Galaxy

Ansible Galaxy에서 설치할 컬렉션입니다.

이는 Ansible Galaxy requirements.yml 파일의 파일 이름, 사전 또는 다중 줄 문자열 표현일 수 있습니다. 요구 사항 파일 형식에 대한 자세한 내용은 Galaxy 사용자 가이드를 참조하십시오.

python

Python 설치 요구 사항입니다.

파일 이름 또는 요구 사항 목록일 수 있습니다. Ansible Builder는 requirements-parser 라이브러리를 사용하여 모든 컬렉션의 모든 Python 요구 사항 파일을 단일 파일로 결합합니다.

이 라이브러리는 다른 파일에 대한 참조를 포함하여 복잡한 구문을 지원합니다. 많은 컬렉션에 동일한 패키지 이름이 필요한 경우 Ansible Builder는 이를 단일 항목에 결합하고 제약 조건을 결합합니다.

Ansible Builder는 컬렉션이 종속 항목으로 나열되는 경우에도 Python 종속 항목의 결합된 파일에서 일부 패키지를 제외합니다. 여기에는 Ansible 자체를 제공하는 패키지 및 테스트 패키지가 포함됩니다. 전체 목록은 src/ansible_builder/_target_scripts/introspect.pyEXCLUDE_REQUIREMENTS 에서 사용할 수 있습니다.

제외된 패키지 이름 중 하나를 포함해야 하는 경우 introspect 명령의 --user-pip 옵션을 사용하여 사용자 요구 사항 파일에 나열합니다.

이 방식으로 제공된 패키지는 제외된 Python 패키지 목록에 대해 처리되지 않습니다.

python_interpreter

dnf(package_system)에서 설치할 Python 시스템 패키지 이름을 정의하는 사전 또는 사용할 Python 인터프리터 경로(python_path) 입니다.

system

bindep 형식으로 설치할 시스템 패키지입니다. 파일 이름 또는 요구 사항 목록일 수 있습니다.

bindep에 대한 자세한 내용은 OpenDev 설명서 를 참조하십시오.

시스템 패키지의 경우 bindep 형식을 사용하여 플랫폼 간 요구 사항을 지정하므로 실행 환경에서 사용하는 패키지 관리 시스템에서 설치할 수 있습니다. 컬렉션은 [platform:rpm] 에 필요한 요구 사항을 지정해야 합니다. Ansible Builder는 여러 컬렉션의 시스템 패키지 항목을 단일 파일로 결합합니다. 프로필이 없는 요구 사항(런타임 요구 사항)만 이미지에 설치됩니다. 결합된 파일에 서로 중복되는 많은 컬렉션의 항목을 통합할 수 있습니다.

다음 예제에서는 다양한 종속성을 포함하는 파일 이름을 사용합니다.

dependencies:
  python: requirements.txt
  system: bindep.txt
  galaxy: requirements.yml
  ansible_core:
      package_pip: ansible-core==2.14.2
  ansible_runner:
      package_pip: ansible-runner==2.3.1
  python_interpreter:
      package_system: "python310"
      python_path: "/usr/bin/python3.10"

이 예에서는 인라인 값을 사용합니다.

dependencies:
  python:
    - pywinrm
  system:
    - iputils [platform:rpm]
  galaxy:
    collections:
      - name: community.windows
      - name: ansible.utils
        version: 2.10.1
  ansible_core:
      package_pip: ansible-core==2.14.2
  ansible_runner:
      package_pip: ansible-runner==2.3.1
  python_interpreter:
      package_system: "python310"
      python_path: "/usr/bin/python3.10"
참고

이러한 종속성 파일(requirements.txt, bindep.txt 및 requirements.yml) 중 하나라도 컬렉션의 build_ignore 에 있으면 빌드가 실패합니다.

컬렉션 유지 관리자는 introspect 명령을 사용하여 ansible-builder에서 예상 요구 사항을 인식하는지 확인할 수 있습니다.

ansible-builder introspect --sanitize ~/.ansible/collections/

--sanitize 옵션은 모든 컬렉션 요구 사항을 검토하고 중복을 제거합니다. 또한 일반적으로 제외되는 Python 요구 사항도 제거합니다(Python 종속 항목 참조).

제외되는 요구 사항에 대한 로깅 메시지를 보려면 -v3 옵션을 사용하여 세부 검사를 수행합니다.

21.2.5. 이미지

사용할 기본 이미지를 지정합니다. 최소한 기본 이미지에 대한 소스, 이미지, 태그를 지정해야 합니다. 기본 이미지는 운영 체제를 제공하며 일부 패키지도 제공할 수 있습니다. 표준 host/namespace/container:tag 구문을 사용하여 이미지를 지정합니다. Podman 또는 Docker 바로 가기 구문을 대신 사용할 수 있지만 전체 정의는 더 안정적이고 이식 가능합니다.

이 섹션의 유효한 키는 다음과 같습니다.

base_image

실행 환경에 대한 상위 이미지를 정의하는 사전입니다.

사용할 컨테이너 이미지와 함께 이름 키를 제공해야 합니다. 이미지가 저장소 내에 미러링되었지만 원본 이미지의 서명 키로 서명된 경우 signature_original_name 키를 사용합니다.

21.2.6. 이미지 확인

podman 컨테이너 런타임을 사용하는 경우 서명된 컨테이너 이미지를 확인할 수 있습니다.

컨테이너 이미지 서명 검증을 위해 Podman policy.json 파일과 관련하여 이 데이터를 사용하는 방법을 제어하려면 container-policy CLI 옵션을 설정합니다.

  • ignore_all 정책: 서명 유효성 검사가 수행되지 않는 빌드 컨텍스트 디렉터리 <context >에서 policy.json 파일을 생성합니다.
  • 시스템 정책: 서명 검증은 표준 시스템 위치의 기존 policy.json 파일을 사용하여 수행됩니다. Ansible-builder 는 이러한 파일 내의 콘텐츠에 대한 책임이 없으며 사용자는 콘텐츠를 완전히 제어할 수 있습니다.
  • signature_required 정책: ansible-builder 는 컨테이너 이미지 정의를 사용하여 빌드 중에 이미지를 검증하는 동안 사용되는 빌드 컨텍스트 디렉터리 <context >에 policy.json 파일을 생성합니다.

21.2.7. options

런타임 기능 Ansible Builder에 영향을 줄 수 있는 키워드 또는 옵션 사전입니다.

이 섹션의 유효한 키는 다음과 같습니다.

  • container_init: 컨테이너 ENTRYPOINTCMD 지시문(및 관련 동작)을 사용자 지정할 수 있는 키가 포함된 사전입니다. 이러한 동작을 사용자 지정하는 것은 고급 작업이며 디버깅하기 어려운 오류가 발생할 수 있습니다. 제공된 기본값은 여러 상호 연결된 동작을 제어하므로 모든 값을 재정의하면 이 사전의 나머지 기본값을 모두 건너뜁니다.

    유효한 키는 다음과 같습니다.

    • cmd: CMD Containerfile 지시문의 Literal 값입니다. 기본값은 ["bash"] 입니다.
    • ENTRYPOINT: ENTRYPOINT Containerfile 지시문의 Literal 값입니다. 기본 진입점 동작은 subprocesses에 대한 신호 전파를 처리하고 런타임에 컨테이너 사용자에게 /etc/passwd 에 표시되는 쓰기 가능 홈 디렉터리가 유효한 환경이 있고 HOME 환경 변수가 일치하도록 설정되어 있는지 확인하려고 시도합니다. 기본 진입점 스크립트는 사용자 런타임 환경을 적절하게 조정할 수 없는 경우 stderr 에 경고를 내보낼 수 있습니다. 자세한 내용은 이 동작을 무시하거나 치명적인 오류로 승격할 수 있습니다. 진입점 대상 스크립트의 소스를 참조하십시오.

      기본값은 ["/opt/builder/bin/entrypoint", "dumb-init"] 입니다.

    • package_pip: entrypoint 지원을 위해 pip를 사용하여 설치할 패키지입니다. 이 패키지는 최종 빌드 이미지에 설치됩니다.

      기본값은 dumb-init==1.2.5 입니다.

  • package_manager_path: 패키지 관리자(dnf 또는 microdnf)의 경로가 있는 문자열입니다. 기본값은 /usr/bin/dnf 입니다. 이 값은 종속성 에 지정된 경우 및 assemble 스크립트에서 빌드 단계에서 Python 인터프리터를 설치하는 데 사용됩니다.
  • skip_ansible_check: 이 부울 값은 Ansible 및 Ansible Runner가 최종 이미지에서 수행되는지 여부를 제어합니다.

    이 검사를 수행하지 않으려면 이 값을 True 로 설정합니다.

    기본값은 False 입니다.

  • relax_passwd_permissions: 이 부울 값은 루트 그룹(GID 0)에 최종 컨테이너 이미지의 /etc/passwd 에 대한 쓰기 권한이 명시적으로 부여되는지 여부를 제어합니다. 기본 진입점 스크립트는 동적으로 생성된 사용자를 사용하여 일부 컨테이너 런타임에서 /etc/passwd 를 업데이트하여 완전히 작동하는 POSIX 사용자 환경 및 홈 디렉터리를 보장할 수 있습니다. 이 기능을 비활성화하면 사용자가 유효한 쓰기 가능한 홈 디렉터리(예: ansible-core의 async, ~username 쉘 확장)를 사용하여 /etc/passwd 에 나열해야 하는 소프트웨어 기능이 실패할 수 있습니다.

    기본값은 True 입니다.

  • WORKDIR: 최종 컨테이너 이미지에서 시작된 새 프로세스의 현재 작업 디렉터리입니다. 일부 컨테이너 런타임에서는 root (GID 0) 그룹에서 동적으로 생성된 사용자의 경우 이 값을 HOME 으로 사용합니다. 이 값을 지정하면 디렉터리가 없는 경우 디렉터리가 생성되어 루트 그룹 소유권으로 설정되고 rwx 그룹 권한이 재귀적으로 적용됩니다.

    기본값은 /runner 입니다.

  • user: 최종 컨테이너 이미지의 기본 사용자로 사용할 사용자 이름 또는 UID를 설정합니다.

    기본값은 1000 입니다.

예제 옵션:

options:
    container_init:
        package_pip: dumb-init>=1.2.5
        entrypoint: '["dumb-init"]'
        cmd: '["csh"]'
    package_manager_path: /usr/bin/microdnf
    relax_password_permissions: false
    skip_ansible_check: true
    workdir: /myworkdir
    user: bob

21.2.8. version

실행 환경 정의 파일의 스키마 버전을 설정하는 정수 값입니다.

기본값은 1 입니다.

Ansible Builder 3.x를 사용하는 경우 값은 3 이어야 합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.