Documentation

15. 실행 환경 설정 참조

이 섹션에는 execution environments 설정 및 빌드와 관련된 참조 정보가 포함되어 있습니다.

15.1. Execution environment 정의

정의 파일은 |ee|의 이미지를 빌드하는 데 필요한 ``.yml`` 파일입니다. 다음은 |ee| 정의 스키마의 예제입니다.

---
version: 1

build_arg_defaults:
  EE_BASE_IMAGE: 'quay.io/ansible/ansible-runner:stable-2.10-devel'

ansible_config: 'ansible.cfg'

dependencies:
  galaxy: requirements.yml
  python: requirements.txt
  system: bindep.txt

additional_build_steps:
  prepend: |
    RUN whoami
    RUN cat /etc/os-release
  append:
    - RUN echo This is a post-install command!
    - RUN ls -la /etc

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

빌드 인수의 기본값은 정의 파일 내 default_build_args 섹션에 사전으로 지정될 수 있습니다. 이는 --build-arg CLI 플래그를 사용하는 것의 대안입니다.

``ansible-builder``에서 사용하는 빌드 인수는 다음과 같습니다.

  • ANSIBLE_GALAXY_CLI_COLLECTION_OPTS``를 사용하면 ``–pre 플래그를 전달하여 사전 릴리스 컬렉션을 설치할 수 있습니다.

  • ``EE_BASE_IMAGE``는 |ee|의 상위 이미지를 지정합니다.

  • ``EE_BUILDER_IMAGE``는 유형 작업을 컴파일하는 데 사용되는 이미지를 지정합니다.

default_build_args 내에 제공된 값은 Containerfile에 하드 코딩되므로 ``podman build``를 수동으로 호출하는 경우 값이 지속됩니다.

CLI --build-arg 플래그에 동일한 변수를 지정하는 경우 CLI 값의 우선순위가 더 높습니다.

15.1.2. Ansible 구성 파일 경로

ansible.cfg 파일을 사용하여 개인 계정의 토큰 및 기타 설정을 Automation Hub 서버에 전달할 때 여기에 구성 파일 경로를 문자열로 나열하면 초기 빌드 단계에서 해당 경로를 빌드 인수로 포함할 수 있습니다.

15.1.3. Ansible Galaxy 종속 항목

galaxy 항목은 ansible-galaxy collection install -r ... 명령에 유효한 요구 사항 파일을 가리킵니다.

requirements.yml 항목은 execution environment 정의 폴더 디렉터리의 상대 경로이거나 절대 경로일 수 있습니다.

15.1.4. Python 종속 항목

Python 항목은 pip install -r ... 명령에 유효한 요구 사항 파일을 가리킵니다.

requirements.txt 항목은 execution environment 정의 폴더 디렉터리의 상대 경로이거나 절대 경로일 수 있습니다.

15.1.5. 시스템 수준 종속 항목

system 항목은 bindep 요구 사항 파일을 가리킵니다. 이 항목은 ``bindep``에 의해 처리된 다음 ``dnf``로 전달되며, 다른 플랫폼은 아직 지원되지 않습니다. bindep에 대한 자세한 내용은 `OpenDev documentation <https://docs.opendev.org/opendev/bindep/latest/readme.html>`_를 참조하십시오.

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

추가 명령은 기본 빌드 단계 이전(prepend)이나 이후(append) additional_build_steps 섹션에 지정될 수 있습니다. 구문은 다음 중 하나여야 합니다.

  • 여러 줄의 문자열(관련 예는 위의 prepend 섹션에 표시되어 있음)

  • 사전(``append``를 통해 표시됨)

15.2. ansible-builder 빌드 옵션

다음 옵션을 ansible-builder build 명령과 함께 사용할 수 있습니다.

플래그

설명

구문

--tag

빌드된 이미지에 적용되며 태그가 지정된 이름을 사용자 지정

$ ansible-builder build --tag=my-custom-ee

--file

``execution-environment.yml``이 아닌 다른 이름이 지정된 정의 파일 사용

$ ansible-builder build --file=my-ee.yml

--context

현재 작업 디렉터리에 생성된 ``context``라는 기본 디렉터리가 아닌 위치 지정

$ ansible-builder build --context=/path/to/dir

--build-arg

Podman 또는 Docker의 빌드 시간 변수를 사용하려면 podman build 또는 ``docker build``와 동일한 방식으로 지정합니다. 기본적으로 |ab|에서 출력하는 Containerfile/Dockerfile에는 파일을 수정하지 않고도 |ees|을 다시 빌드하는 데 유용할 수 있는 빌드 인수 ``EE_BASE_IMAGE,``가 포함되어 있습니다.

$ ansible-builder build --build-arg FOO=bar

사용자 지정 기본 이미지 사용(이전에 중단된 --base-image 옵션 교체)

$ ansible-builder build --build-arg EE_BASE_IMAGE=registry.example.com/another-ee

--container-runtime

Podman 기본값 대신 Docker를 사용하여 이미지 빌드

$ ansible-builder build --container-runtime=docker

--verbosity

상세 정보 표시 수준 사용자 지정

$ ansible-builder build --verbosity 2

15.2.1. 예제

test/data/pytz 예제에서는 execution environment 정의에 awx.awx 컬렉션이 있어야 합니다. 조회 플러그인 awx.awx.tower_schedule_rrule``이 작동하려면 PyPI ``pytz``와 함께 다른 라이브러리가 있어야 합니다. ``test/data/pytz/execution-environment.yml 파일을 ansible-builder build 명령에 제공하면 이미지 내에 컬렉션을 설치하고 컬렉션 내의 requirements.txt 파일을 읽은 다음, 이미지에 ``pytz``를 설치합니다.

생성된 이미지는 개인 데이터 디렉터리에 있는 env/settings 파일에 이러한 변수를 배치하여 ansible-runner 프로젝트 내에서 사용할 수 있습니다.

---
container_image: image-name
process_isolation_executable: podman # or docker
process_isolation: true

awx.awx 컬렉션은 기본 AWX |ee|에 포함된 콘텐츠의 서브 세트입니다. 자세한 내용은 `awx-ee repository <https://github.com/ansible/awx-ee>`_에서 확인할 수 있습니다.

15.3. 컬렉션 수준 메타데이터

|ee|의 galaxy 항목 내에 있는 컬렉션은 Python 및 시스템 요구 사항을 이미지에 제공합니다.

컬렉션의 요구 사항은 다음과 같은 방법으로 인식할 수 있습니다.

  • meta/execution-environment.yml 파일이 Python 및/또는 bindep 요구 사항 파일을 참조합니다.

  • ``requirements.txt``라는 파일이 루트 수준의 컬렉션에 있습니다.

  • ``bindep.txt``라는 파일이 루트 수준의 컬렉션에 있습니다.

위 파일이 컬렉션의 ``build_ignore``에 있는 경우 올바르게 작동하지 않습니다.

컬렉션 유지 관리자는 introspect 명령을 사용하여 ansible-builder가 필요한 요구 사항을 인식하는지 확인할 수 있습니다. 예를 들면 다음과 같습니다.

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

15.3.1. Python 종속 항목

Python 요구 사항 파일은 다른 파일에 대한 참조와 같이 복잡한 구문을 지원하기 위해 requirements-parser 라이브러리를 사용하여 단일 파일로 결합됩니다.

동일한 패키지 이름을 제공하는 개별 컬렉션의 항목은 제약 조건이 결합된 동일한 항목으로 결합됩니다.

ansible-builder에서 구체적으로 무시하는, 즉 컬렉션에서 나열해도 결합된 파일에 포함되지 않는 여러 패키지 이름이 있습니다. 여기에는 Ansible 자체를 제공하는 패키지 및 테스트 패키지가 포함됩니다. 전체 목록은 EXCLUDE_REQUIREMENTS 모듈의 ``ansible_builder.requirements``에서 확인할 수 있습니다.

15.3.2. 시스템 수준 종속 항목

bindep 포맷을 사용하면 플랫폼 간 요구 사항을 지정할 수 있습니다. 최소 기대치는 컬렉션에서 ``[platform:rpm]``에 필요한 요구 사항을 지정하는 것입니다.

여러 컬렉션의 항목은 단일 파일로 결합됩니다. 프로필이 없는 요구 사항(런타임 요구 사항)만 이미지에 설치됩니다. 결합된 파일에는 서로 완전히 중복되는 여러 컬렉션의 항목이 통합될 수 있습니다.