2.5. 정의 파일 콘텐츠 분석

자동화 실행 환경 컨테이너 이미지에 포함된 콘텐츠를 지정하므로 Ansible Builder를 사용하여 자동화 실행 환경을 빌드하는 데 정의 파일이 필요합니다.

다음 섹션에서는 정의 파일의 다른 부분을 나눕니다.

2.5.1. 인수 및 기본 이미지 빌드

정의 파일의 build_arg_defaults 섹션은 키가 Ansible 빌더에 인수의 기본값을 제공할 수 있는 사전입니다. build_arg_defaults 에 사용할 수 있는 값 목록은 다음 표를 참조하십시오.

현재의설명

ANSIBLE_GALAXY_CLI_COLLECTION_OPTS

사용자는 컬렉션 설치 단계에서 임의의 인수를 ansible-galvncy CLI에 전달할 수 있습니다. 예를 들어 사전 릴리스 컬렉션을 설치할 수 있는 -pre 플래그 또는 -c는 서버의 SSL 인증서 확인을 비활성화합니다.

EE_BASE_IMAGE

자동화 실행 환경의 상위 이미지를 지정하여 기존 이미지를 기반으로 새 이미지를 빌드할 수 있습니다. 일반적으로 ee-minimal 또는 ee-supported과 같이 지원되는 실행 환경 기본 이미지이지만 이전에 생성한 실행 환경 이미지일 수도 있으며 추가로 사용자 지정할 수도 있습니다.

기본 이미지는 registry.redhat.io/ansible-automation-platform-23/ee-minimal-rhel8:latest 입니다.

EE_BUILDER_IMAGE

Python 종속성 컬렉션 및 컴파일에 사용되는 중간 빌더 이미지를 지정합니다. EE_BASE_IMAGE 와 일치하는 Python 버전을 포함해야 하며 ansible-builder가 설치되어 있어야 합니다.

기본 이미지는 registry.redhat.io/ansible-automation-platform-23/ansible-builder-rhel8:latest 입니다.

build_arg_defaults 내에 지정된 값은 Containerfile 로 하드 코딩되므로 podman build 를 수동으로 호출하면 이러한 값이 유지됩니다.

참고

CLI --build-arg 플래그에 동일한 변수가 지정되면 CLI 값이 우선 순위가 높습니다.

2.5.2. Ansible 구성 파일 경로

ansible_config 지시문을 사용하면 빌드의 Collection 설치 단계에서 개인 계정의 토큰 및 기타 설정을 자동화 허브 서버에 전달할 ansible.cfg 파일의 경로를 지정할 수 있습니다. 구성 파일 경로는 정의 파일 위치를 기준으로 해야 하며 생성된 컨테이너 빌드 컨텍스트에 복사됩니다.

ansible.cfg 파일은 다음 예와 같이 포맷해야 합니다.

예 2.2. ansible.cfg 파일

[galaxy]
server_list = automation_hub

[galaxy_server.automation_hub]
url=https://cloud.redhat.com/api/automation-hub/
auth_url=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token
token=my_ah_token

자동화 허브에서 컬렉션을 다운로드하는 방법에 대한 자세한 내용은 관련 Ansible 설명서 페이지를 참조하십시오.

2.5.3. 종속 항목

자동화 실행 환경 이미지에 대한 문제를 방지하려면 Galaxy, Python 및 시스템 항목이 유효한 요구 사항 파일을 가리키는지 확인하십시오.

2.5.3.1. Galaxy

gal xxx y 항목은 ansible-galxxxy 컬렉션 install -r …​ 명령에 대해 유효한 요구 사항 파일을 가리킵니다.

항목 requirements.yml 은 자동화 실행 환경 정의 폴더의 디렉터리 또는 절대 경로의 상대 경로일 수 있습니다.

requirements.yml 파일의 내용은 다음과 같을 수 있습니다.

예 2.3. Galaxy에 대한 requirements.yml 파일

collections:
  - community.aws
  - kubernetes.core

2.5.3.2. Python

정의 파일의 python 항목은 pip install -r …​ 명령에 대해 유효한 요구 사항 파일을 가리킵니다.

항목 requirements.txt 는 컬렉션에서 이미 Python 종속 항목으로 나열하는 추가 Python 요구 사항을 설치하는 파일입니다. 자동화 실행 환경 정의 폴더의 디렉터리에서 상대 경로 또는 절대 경로로 나열될 수 있습니다. requirements.txt 파일의 내용은 pip freeze 명령의 표준 출력과 유사하게 다음 예와 같이 포맷해야 합니다.

예 2.4. Python용 requirements.txt 파일

boto>=2.49.0
botocore>=1.12.249
pytz
python-dateutil>=2.7.0
awxkit
packaging
requests>=2.4.2
xmltodict
azure-cli-core==2.11.1
python_version >= '2.7'
collection community.vmware
google-auth
openshift>=0.6.2
requests-oauthlib
openstacksdk>=0.13
ovirt-engine-sdk-python>=4.4.10

2.5.3.3. 시스템

정의의 시스템 항목은 bindep 요구 사항 파일을 가리키며, 이 파일은 컬렉션이 이미 종속 항목으로 포함된 시스템 수준 종속 항목을 설치합니다. 자동화 실행 환경 정의 폴더의 디렉터리에서 상대 경로 또는 절대 경로로 나열할 수 있습니다. 최소 기대치는 컬렉션이 [platform:rpm] 에 필요한 요구 사항을 지정하는 것입니다.

이를 설명하기 위해 다음은 libxml2하위 버전 패키지를 컨테이너에 추가하는 bindep.txt 파일의 예입니다.

예 2.5. bindep.txt 파일

libxml2-devel [platform:rpm]
subversion [platform:rpm]

여러 컬렉션의 항목이 단일 파일로 결합됩니다. 이 작업은 bindep 에 의해 처리된 다음 dnf 로 전달됩니다. 프로파일이 없거나 런타임 요구 사항이 없는 요구 사항만 이미지에 설치됩니다.

2.5.4. 추가적인 사용자 지정 빌드 단계

additional_build_steps 섹션에 prependappend 명령을 지정할 수 있습니다. 이러한 명령은 기본 빌드 단계가 실행되기 전 또는 후에 실행될 Containerfile 에 명령을 추가합니다.

additional_build_steps 의 구문은 다음 중 하나여야 합니다.

  • 여러 줄 문자열

    예 2.6. 여러 줄 문자열 항목

    prepend: |
       RUN whoami
       RUN cat /etc/os-release
  • 공지 사항

    예 2.7. 목록 항목

    append:
    - RUN echo This is a post-install command!
    - RUN ls -la /etc