2.5. 정의 파일 콘텐츠 분석
자동화 실행 환경 컨테이너 이미지에 포함된 콘텐츠를 지정하므로 Ansible Builder를 사용하여 자동화 실행 환경을 빌드하는 데 정의 파일이 필요합니다.
다음 섹션에서는 정의 파일의 다른 부분을 나눕니다.
2.5.1. 인수 및 기본 이미지 빌드
정의 파일의 build_arg_defaults
섹션은 키가 Ansible 빌더에 인수의 기본값을 제공할 수 있는 사전입니다. build_arg_defaults
에 사용할 수 있는 값 목록은 다음 표를 참조하십시오.
현재의 | 설명 |
---|---|
| 사용자는 컬렉션 설치 단계에서 임의의 인수를 ansible-galvncy CLI에 전달할 수 있습니다. 예를 들어 사전 릴리스 컬렉션을 설치할 수 있는 -pre 플래그 또는 -c는 서버의 SSL 인증서 확인을 비활성화합니다. |
| 사용자가 -no-deps와 같은 플래그를 역할 설치에 전달할 수 있습니다. |
build_arg_defaults
내에 지정된 값은 Containerfile
로 하드 코딩되므로 podman build
를 수동으로 호출하면 이러한 값이 유지됩니다.
CLI --build-arg
플래그에 동일한 변수가 지정되면 CLI 값이 우선 순위가 높습니다.
정의 파일의 dependencies 섹션에 있는 최종 이미지에 설치해야 하는 종속성을 포함할 수 있습니다.
자동화 실행 환경 이미지 문제를 방지하려면 Galaxy, Python 및 시스템의 항목이 유효한 요구 사항 파일을 가리키거나 해당 파일 유형에 유효한 콘텐츠인지 확인하십시오.
2.5.1.1. Galaxy
galaxy
항목은 유효한 요구 사항 파일을 가리키거나 ansible-galaxy 컬렉션 install -r …
명령에 대한 인라인 콘텐츠를 포함합니다.
항목 requirements.yml
은 자동화 실행 환경 정의 폴더의 디렉터리 또는 절대 경로의 상대 경로일 수 있습니다.
콘텐츠는 다음과 같을 수 있습니다.
예 2.2. Galaxy 항목
collections: - community.aws - kubernetes.core
collections:
- community.aws
- kubernetes.core
2.5.1.2. Python
정의 파일의 python
항목은 올바른 요구 사항 파일을 가리키거나 pip install -r …
명령의 PEP508 형식의 Python 요구 사항 목록을 가리킵니다.
항목 requirements.txt
는 컬렉션에서 이미 Python 종속 항목으로 나열하는 추가 Python 요구 사항을 설치하는 파일입니다. 자동화 실행 환경 정의 폴더의 디렉터리에서 상대 경로 또는 절대 경로로 나열될 수 있습니다. requirements.txt
파일의 내용은 pip freeze
명령의 표준 출력과 유사하게 다음 예와 같이 포맷해야 합니다.
예 2.3. Python 항목
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 openshift>=0.6.2 requests-oauthlib openstacksdk>=0.13 ovirt-engine-sdk-python>=4.4.10
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
openshift>=0.6.2
requests-oauthlib
openstacksdk>=0.13
ovirt-engine-sdk-python>=4.4.10
2.5.1.3. 시스템
정의의 시스템
항목은 bindep 요구 사항 파일 또는 Bindep 항목의 인라인 목록을 가리킵니다. 이 목록은 컬렉션에 이미 포함되어 있는 항목 외부에 있는 시스템 수준 종속성을 설치합니다. 자동화 실행 환경 정의 폴더의 디렉터리에서 상대 경로로 나열하거나 절대 경로로 나열할 수 있습니다. 최소한 컬렉션에서 [platform:rpm]
에 필요한 요구 사항을 지정해야 합니다.
이를 설명하기 위해 다음은 libxml2
및 하위 버전
패키지를 컨테이너에 추가하는 bindep.txt
파일의 예입니다.
예 2.4. 시스템 항목
libxml2-devel [platform:rpm] subversion [platform:rpm]
libxml2-devel [platform:rpm]
subversion [platform:rpm]
여러 컬렉션의 항목이 단일 파일로 결합됩니다. 이 작업은 bindep
에 의해 처리된 다음 dnf
로 전달됩니다. 프로파일이 없거나 런타임 요구 사항이 없는 요구 사항만 이미지에 설치됩니다.
2.5.2. 이미지
정의 파일의 images
섹션은 기본 이미지를 식별합니다. podman
컨테이너 런타임에서는 서명된 컨테이너 이미지에 대한 확인이 지원됩니다.
이미지에서
사용할 수 있는 값 목록은 다음 표를 참조하십시오.
현재의 | 설명 |
---|---|
| 기존 이미지를 기반으로 새 이미지를 빌드할 수 있는 자동화 실행 환경의 상위 이미지를 지정합니다. 일반적으로 ee-minimal 또는 ee-supported 와 같은 지원되는 실행 환경 기본 이미지이지만 사용자가 생성하고 추가로 사용자 지정하려는 실행 환경 이미지일 수도 있습니다.
컨테이너 이미지를 사용하려면
기본 이미지는 |
CLI --build-arg
플래그에 동일한 변수가 지정되면 CLI 값이 우선 순위가 높습니다.
2.5.3. 추가 빌드 파일
정의 파일의 additional_build_steps
섹션에 참조하거나 복사하여 외부 파일을 빌드 컨텍스트 디렉터리에 추가할 수 있습니다. 형식은 사전 값 목록으로, 각각 src
및 dest
키와 value가 있습니다.
각 목록 항목은 다음 필수 키가 포함된 사전이어야 합니다.
src
-
빌드 컨텍스트 디렉터리에 복사할 소스 파일을 지정합니다. 절대 경로(예:
/home/user/.ansible.cfg
) 또는 실행 환경 파일과 관련된 경로일 수 있습니다. 상대 경로는 하나 이상의 파일(예:files/*.cfg
)과 일치하는 glob 표현식일 수 있습니다.
절대 경로는 정규식을 포함할 수 없습니다. src
가 디렉터리이면 해당 디렉토리의 전체 콘텐츠가 dest
로 복사됩니다.
dest
-
소스 파일(예:
files/configs
)을 포함하는 빌드 컨텍스트 디렉터리의_build
하위 디렉터리 아래에 하위 디렉터리 경로를 지정합니다. 이는 절대 경로이거나 경로 내에서포함할
수 없습니다. Ansible Builder가 아직 없는 경우 이 디렉터리를 생성합니다.
2.5.4. 추가적인 사용자 지정 빌드 단계
정의 파일의 additional_build_steps
섹션에서 모든 빌드 단계에 대한 사용자 정의 빌드 명령을 지정할 수 있습니다. 이를 통해 빌드 단계를 세부적으로 제어할 수 있습니다.
prepend_
및 append_
명령을 사용하여 기본 빌드 단계가 실행되기 전이나 후에 실행되는 Containerfile
에 지시문을 추가합니다. 명령은 런타임 시스템에 필요한 모든 규칙을 준수해야 합니다.
additional_build_steps
에서 사용할 수 있는 값 목록은 다음 표를 참조하십시오.
현재의 | 설명 |
---|---|
| 기본 이미지를 빌드하기 전에 명령을 삽입할 수 있습니다. |
| 기본 이미지를 빌드한 후 명령을 삽입할 수 있습니다. |
| Galaxy 이미지를 빌드하기 전에 삽입할 수 있습니다. |
| Galaxy 이미지를 빌드한 후 삽입할 수 있습니다. |
| Python 빌더 이미지를 빌드하기 전에 명령을 삽입할 수 있습니다. |
| Python 빌더 이미지를 빌드한 후 명령을 삽입할 수 있습니다. |
| 최종 이미지를 빌드하기 전에 삽입할 수 있습니다. |
| 최종 이미지를 빌드한 후 삽입할 수 있습니다. |
additional_build_steps
구문은 여러 줄 문자열과 목록을 모두 지원합니다. 다음 예제를 참조하십시오.
예 2.5. 여러 줄 문자열 항목
prepend_final: | RUN whoami RUN cat /etc/os-release
prepend_final: |
RUN whoami
RUN cat /etc/os-release
예 2.6. 목록 항목
append_final: - RUN echo This is a post-install command! - RUN ls -la /etc
append_final:
- RUN echo This is a post-install command!
- RUN ls -la /etc
2.5.5. 추가 리소스
- 일반적인 시나리오에 대한 정의 파일의 예는 Ansible Builder 설명서의 일반적인 시나리오 섹션을 참조하십시오.