컨트롤러를 사용하면 처음부터 인벤토리 파일을 생성하는 대신 소스 제어에서 선택할 수 있습니다. 이 기능은 콘텐츠 브라우저를 편집하지 않고 소스 제어에서 콘텐츠를 가져온다는 점을 제외하고 사용자 지정 인벤토리 스크립트와 동일합니다. 즉, 파일은 편집할 수 없으며 인벤토리가 소스에서 업데이트되므로 연결된 group_vars
및 host_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`를 참조하십시오.
버전 제어에 저장된 사용자 지정 동적 인벤토리 스크립트를 가져와서 실행할 수 있습니다. 이렇게 하면 인벤토리 스크립트를 훨씬 쉽게 변경할 수 있습니다. 즉, 인벤토리 스크립트를 복사하여 컨트롤러에 붙여넣을 필요 없이 소스 제어에서 직접 가져온 다음 실행합니다. 작업을 수행하는 데 필요한 인증 정보를 처리하도록 스크립트를 작성해야 하며, 스크립트에 필요한 Python 라이브러리(사용자 지정 동적 인벤토리 스크립트와 동일한 요구 사항)를 설치해야 합니다. 이 요구 사항은 플레이북과 관련된 Ansible virtualenv 요구 사항에 노출되는 사용자 정의 인벤토리 소스 스크립트와 SCM 소스에 둘 다 적용됩니다.
SCM 인벤토리 소스 자체를 편집할 때 환경 변수를 지정할 수 있습니다. 일부 스크립트의 경우 이 작업만으로도 충분하지만, 클라우드 공급자 또는 인벤토리에 대한 액세스를 제공하는 시크릿 정보를 저장하는 안전한 방법은 아닙니다.
더 나은 방법은 사용할 인벤토리 스크립트에 대한 새 인증 정보 유형을 생성하는 것입니다. 인증 정보 유형은 필요한 모든 입력 유형을 지정해야 합니다. 그런 다음, 이 유형의 인증 정보를 생성하면 시크릿이 암호화된 형식으로 저장됩니다. 인벤토리 소스에 해당 인증 정보를 적용하면 스크립트가 환경 변수 또는 파일과 같은 입력에 액세스할 수 있습니다.
자세한 내용은 :ref:`Credential types <userguide:ug_credential_types>`를 참조하십시오.
사용되는 소스 필드는 다음과 같습니다.
source_project
: 사용할 프로젝트입니다.
source_path
: 디렉터리 또는 파일을 나타내는 프로젝트 내부 상대 경로입니다. 비어 있는 경우 《》도 프로젝트의 루트 디렉터리를 나타내는 상대 경로입니다.
source_vars
: 《파일》 유형 인벤토리 소스에 설정된 경우 실행 시 환경 변수에 전달됩니다.
프로젝트 업데이트 시 사용된 위치에서 인벤토리 업데이트가 자동으로 트리거됩니다. 인벤토리 소스가 생성된 후 즉시 실행되도록 프로젝트 업데이트가 스케줄링됩니다. 관련 작업이 실행되는 동안 인벤토리 또는 프로젝트 업데이트가 차단되지 않습니다. 큰 프로젝트(약 10GB)가 있는 경우 ``/tmp``의 디스크 공간이 문제가 될 수 있습니다.
컨트롤러 사용자 인터페이스의 인벤토리 소스 생성 페이지에서 수동으로 위치를 지정할 수 있습니다. 인벤토리 소스 생성 방법에 대한 지침은 |atu|의 인벤토리 섹션을 참조하십시오.
이 목록을 프로젝트 업데이트에 대한 최신 SCM 정보로 새로 고쳐야 합니다. 프로젝트를 SCM 인벤토리 소스로 사용하는 인벤토리 소스가 없는 경우에는 인벤토리 목록이 업데이트 시 새로 고쳐지지 않을 수 있습니다.
SCM 소스를 사용하는 인벤토리의 경우 인벤토리 업데이트의 작업 세부 정보 페이지에 프로젝트 업데이트 상태 표시와 프로젝트 이름이 표시됩니다. 상태 표시는 프로젝트 업데이트 작업에 연결됩니다. 프로젝트 이름은 프로젝트에 연결됩니다.
관련 작업이 실행되는 동안 인벤토리 업데이트를 수행할 수 있습니다.