이 섹션에는 execution environments 설정 및 빌드와 관련된 참조 정보가 포함되어 있습니다.
정의 파일은 |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
빌드 인수의 기본값은 정의 파일 내 default_build_args
섹션에 사전으로 지정될 수 있습니다. 이는 --build-arg
CLI 플래그를 사용하는 것의 대안입니다.
``ansible-builder``에서 사용하는 빌드 인수는 다음과 같습니다.
ANSIBLE_GALAXY_CLI_COLLECTION_OPTS``를 사용하면 ``–pre
플래그를 전달하여 사전 릴리스 컬렉션을 설치할 수 있습니다.
``EE_BUILDER_IMAGE``는 유형 작업을 컴파일하는 데 사용되는 이미지를 지정합니다.
default_build_args
내에 제공된 값은 Containerfile에 하드 코딩되므로 ``podman build``를 수동으로 호출하는 경우 값이 지속됩니다.
CLI --build-arg
플래그에 동일한 변수를 지정하는 경우 CLI 값의 우선순위가 더 높습니다.
ansible.cfg
파일을 사용하여 개인 계정의 토큰 및 기타 설정을 Automation Hub 서버에 전달할 때 여기에 구성 파일 경로를 문자열로 나열하면 초기 빌드 단계에서 해당 경로를 빌드 인수로 포함할 수 있습니다.
galaxy
항목은 ansible-galaxy collection install -r ...
명령에 유효한 요구 사항 파일을 가리킵니다.
requirements.yml
항목은 execution environment 정의 폴더 디렉터리의 상대 경로이거나 절대 경로일 수 있습니다.
Python 항목은 pip install -r ...
명령에 유효한 요구 사항 파일을 가리킵니다.
requirements.txt
항목은 execution environment 정의 폴더 디렉터리의 상대 경로이거나 절대 경로일 수 있습니다.
system
항목은 bindep
요구 사항 파일을 가리킵니다. 이 항목은 ``bindep``에 의해 처리된 다음 ``dnf``로 전달되며, 다른 플랫폼은 아직 지원되지 않습니다. bindep에 대한 자세한 내용은 `OpenDev documentation <https://docs.opendev.org/opendev/bindep/latest/readme.html>`_를 참조하십시오.
추가 명령은 기본 빌드 단계 이전(prepend
)이나 이후(append
) additional_build_steps
섹션에 지정될 수 있습니다. 구문은 다음 중 하나여야 합니다.
여러 줄의 문자열(관련 예는 위의 prepend
섹션에 표시되어 있음)
사전(``append``를 통해 표시됨)
다음 옵션을 ansible-builder build
명령과 함께 사용할 수 있습니다.
플래그 |
설명 |
구문 |
|
빌드된 이미지에 적용되며 태그가 지정된 이름을 사용자 지정 |
|
|
``execution-environment.yml``이 아닌 다른 이름이 지정된 정의 파일 사용 |
|
|
현재 작업 디렉터리에 생성된 ``context``라는 기본 디렉터리가 아닌 위치 지정 |
|
|
Podman 또는 Docker의 빌드 시간 변수를 사용하려면 |
|
사용자 지정 기본 이미지 사용(이전에 중단된 |
|
|
|
Podman 기본값 대신 Docker를 사용하여 이미지 빌드 |
|
|
상세 정보 표시 수준 사용자 지정 |
|
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>`_에서 확인할 수 있습니다.
|ee|의 galaxy
항목 내에 있는 컬렉션은 Python 및 시스템 요구 사항을 이미지에 제공합니다.
컬렉션의 요구 사항은 다음과 같은 방법으로 인식할 수 있습니다.
meta/execution-environment.yml
파일이 Python 및/또는 bindep 요구 사항 파일을 참조합니다.
``requirements.txt``라는 파일이 루트 수준의 컬렉션에 있습니다.
``bindep.txt``라는 파일이 루트 수준의 컬렉션에 있습니다.
위 파일이 컬렉션의 ``build_ignore``에 있는 경우 올바르게 작동하지 않습니다.
컬렉션 유지 관리자는 introspect
명령을 사용하여 ansible-builder가 필요한 요구 사항을 인식하는지 확인할 수 있습니다. 예를 들면 다음과 같습니다.
ansible-builder introspect --sanitize ~/.ansible/collections/
Python 요구 사항 파일은 다른 파일에 대한 참조와 같이 복잡한 구문을 지원하기 위해 requirements-parser
라이브러리를 사용하여 단일 파일로 결합됩니다.
동일한 패키지 이름을 제공하는 개별 컬렉션의 항목은 제약 조건이 결합된 동일한 항목으로 결합됩니다.
ansible-builder에서 구체적으로 무시하는, 즉 컬렉션에서 나열해도 결합된 파일에 포함되지 않는 여러 패키지 이름이 있습니다. 여기에는 Ansible 자체를 제공하는 패키지 및 테스트 패키지가 포함됩니다. 전체 목록은 EXCLUDE_REQUIREMENTS
모듈의 ``ansible_builder.requirements``에서 확인할 수 있습니다.
bindep
포맷을 사용하면 플랫폼 간 요구 사항을 지정할 수 있습니다. 최소 기대치는 컬렉션에서 ``[platform:rpm]``에 필요한 요구 사항을 지정하는 것입니다.
여러 컬렉션의 항목은 단일 파일로 결합됩니다. 프로필이 없는 요구 사항(런타임 요구 사항)만 이미지에 설치됩니다. 결합된 파일에는 서로 완전히 중복되는 여러 컬렉션의 항목이 통합될 수 있습니다.