Documentation

4. 인벤토리 파일 가져오기

컨트롤러를 사용하면 처음부터 인벤토리 파일을 생성하는 대신 소스 제어에서 선택할 수 있습니다. 이 기능은 콘텐츠 브라우저를 편집하지 않고 소스 제어에서 콘텐츠를 가져온다는 점을 제외하고 사용자 지정 인벤토리 스크립트와 동일합니다. 즉, 파일은 편집할 수 없으며 인벤토리가 소스에서 업데이트되므로 연결된 group_varshost_vars 파일 또는 디렉터리를 포함하여 프로젝트 내의 인벤토리도 적절하게 업데이트됩니다. SCM 유형은 인벤토리 파일과 스크립트를 모두 사용할 수 있으며, 인벤토리 파일과 사용자 지정 유형은 둘 다 스크립트를 수행한다는 점에서 겹칩니다.

가져온 모든 호스트에는 기본적으로 《가져오기》에 대한 설명이 있습니다. 이는 지정된 호스트에서 _awx_description 변수를 설정하여 재정의할 수 있습니다. 예를 들어 소스가 지정된 .ini 파일에서 가져오는 경우 다음 호스트 변수를 추가할 수 있습니다.

[main]
127.0.0.1 _awx_description="my host 1"
127.0.0.2 _awx_description="my host 2"

마찬가지로 그룹 설명도 기본적으로 《가져오기》로 설정되지만 _awx_description 에서도 재정의할 수 있습니다.

소스 제어에서 이전 인벤토리 스크립트를 사용하려면 |atu|에서 :ref:`ug_customscripts`를 참조하십시오.

4.1. 사용자 지정 동적 인벤토리 스크립트

버전 제어에 저장된 사용자 지정 동적 인벤토리 스크립트를 가져와서 실행할 수 있습니다. 이렇게 하면 인벤토리 스크립트를 훨씬 쉽게 변경할 수 있습니다. 즉, 인벤토리 스크립트를 복사하여 컨트롤러에 붙여넣을 필요 없이 소스 제어에서 직접 가져온 다음 실행합니다. 작업을 수행하는 데 필요한 인증 정보를 처리하도록 스크립트를 작성해야 하며, 스크립트에 필요한 Python 라이브러리(사용자 지정 동적 인벤토리 스크립트와 동일한 요구 사항)를 설치해야 합니다. 이 요구 사항은 플레이북과 관련된 Ansible virtualenv 요구 사항에 노출되는 사용자 정의 인벤토리 소스 스크립트와 SCM 소스에 둘 다 적용됩니다.

SCM 인벤토리 소스 자체를 편집할 때 환경 변수를 지정할 수 있습니다. 일부 스크립트의 경우 이 작업만으로도 충분하지만, 클라우드 공급자 또는 인벤토리에 대한 액세스를 제공하는 시크릿 정보를 저장하는 안전한 방법은 아닙니다.

더 나은 방법은 사용할 인벤토리 스크립트에 대한 새 인증 정보 유형을 생성하는 것입니다. 인증 정보 유형은 필요한 모든 입력 유형을 지정해야 합니다. 그런 다음, 이 유형의 인증 정보를 생성하면 시크릿이 암호화된 형식으로 저장됩니다. 인벤토리 소스에 해당 인증 정보를 적용하면 스크립트가 환경 변수 또는 파일과 같은 입력에 액세스할 수 있습니다.

자세한 내용은 :ref:`Credential types <userguide:ug_credential_types>`를 참조하십시오.

4.2. SCM 인벤토리 소스 필드

사용되는 소스 필드는 다음과 같습니다.

  • source_project: 사용할 프로젝트입니다.

  • source_path: 디렉터리 또는 파일을 나타내는 프로젝트 내부 상대 경로입니다. 비어 있는 경우 《》도 프로젝트의 루트 디렉터리를 나타내는 상대 경로입니다.

  • source_vars: 《파일》 유형 인벤토리 소스에 설정된 경우 실행 시 환경 변수에 전달됩니다.

프로젝트 업데이트 시 사용된 위치에서 인벤토리 업데이트가 자동으로 트리거됩니다. 인벤토리 소스가 생성된 후 즉시 실행되도록 프로젝트 업데이트가 스케줄링됩니다. 관련 작업이 실행되는 동안 인벤토리 또는 프로젝트 업데이트가 차단되지 않습니다. 큰 프로젝트(약 10GB)가 있는 경우 ``/tmp``의 디스크 공간이 문제가 될 수 있습니다.

컨트롤러 사용자 인터페이스의 인벤토리 소스 생성 페이지에서 수동으로 위치를 지정할 수 있습니다. 인벤토리 소스 생성 방법에 대한 지침은 |atu|의 인벤토리 섹션을 참조하십시오.

이 목록을 프로젝트 업데이트에 대한 최신 SCM 정보로 새로 고쳐야 합니다. 프로젝트를 SCM 인벤토리 소스로 사용하는 인벤토리 소스가 없는 경우에는 인벤토리 목록이 업데이트 시 새로 고쳐지지 않을 수 있습니다.

SCM 소스를 사용하는 인벤토리의 경우 인벤토리 업데이트의 작업 세부 정보 페이지에 프로젝트 업데이트 상태 표시와 프로젝트 이름이 표시됩니다. 상태 표시는 프로젝트 업데이트 작업에 연결됩니다. 프로젝트 이름은 프로젝트에 연결됩니다.

_images/jobs-details-scm-sourced-inventories.png

관련 작업이 실행되는 동안 인벤토리 업데이트를 수행할 수 있습니다.

4.2.1. 지원되는 파일 구문

|at|에서는 Ansible의 ansible-inventory 모듈을 사용하여 인벤토리 파일을 처리하고, 컨트롤러에 필요한 모든 유효한 인벤토리 구문을 지원합니다.