14장. 인벤토리
Red Hat Ansible Automation Platform은 인벤토리 파일을 사용하여 논리적으로 구성된 인프라의 관리 노드 또는 호스트 목록에 대해 작동합니다. Red Hat Ansible Automation Platform 설치 프로그램 인벤토리 파일을 사용하여 설치 시나리오를 지정하고 Ansible에 대한 호스트 배포를 설명할 수 있습니다. 인벤토리 파일을 사용하면 Ansible에서 단일 명령으로 많은 수의 호스트를 관리할 수 있습니다. 또한 인벤토리를 사용하면 지정해야 하는 명령줄 옵션 수를 줄임으로써 Ansible을 더 효율적으로 사용할 수 있습니다. 인벤토리는 그룹으로 나뉩니다. 이러한 그룹에는 호스트가 포함됩니다.
그룹은 자동화 컨트롤러에 호스트 이름을 입력하거나 지원되는 클라우드 공급자 중 하나에서 수동으로 가져올 수 있습니다.
사용자 지정 동적 인벤토리 스크립트 또는 자동화 컨트롤러에서 아직 지원되지 않는 클라우드 공급자가 있는 경우 이를 자동화 컨트롤러로 가져올 수도 있습니다.
자세한 내용은 자동화 실행 구성에서 인벤토리 파일 가져오기 를 참조하십시오.
탐색 패널에서
인벤토리 세부 정보 페이지에는 다음이 포함됩니다.
- name: 인벤토리 이름입니다.
상태
상태는 다음과 같습니다.
- 성공: 인벤토리 소스 동기화가 성공적으로 완료되면
- disabled: 인벤토리에 인벤토리 소스가 추가되지 않음
- 오류: 인벤토리 소스 동기화가 오류와 함께 완료된 경우
- 유형: 표준 인벤토리, 스마트 인벤토리 또는 구성된 인벤토리인지를 나타냅니다.
Organization: 인벤토리가 속한 조직입니다. 선택한 인벤토리에 다음 작업을 수행할 수 있습니다.
-
편집
: 선택한 인벤토리의 속성 편집
-
중복
: 새 인벤토리를 생성하기 위한 템플릿으로 기존 인벤토리 복사본 만들기
- 인벤토리 삭제: 선택한 인벤토리 삭제
-
편집
인벤토리 이름을 클릭하여 선택한 인벤토리에 대한 세부 정보 페이지를 표시합니다. 이 페이지가 인벤토리의 그룹 및 호스트를 표시합니다.
14.1. 스마트 인벤토리 링크 복사링크가 클립보드에 복사되었습니다!
스마트 인벤토리는 저장된 검색으로 정의된 호스트 컬렉션으로, 표준 인벤토리처럼 볼 수 있으며 작업 실행과 함께 쉽게 사용할 수 있습니다. 조직 관리자에게는 조직의 인벤토리에 대한 관리자 권한이 있으며 스마트 인벤토리를 생성할 수 있습니다.
스마트 인벤토리는 KIND=smart 로 식별됩니다.
검색에 사용되는 것과 동일한 방법을 사용하여 스마트 인벤토리를 정의할 수 있습니다. 인벤토리 소스 는 인벤토리와 직접 연결됩니다.
스마트 인벤토리는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다. 개선 사항 및 교체를 위해 구성된 인벤토리로 이동하는 것이 좋습니다.
인벤토리 모델에는 기본적으로 비어 있지만 스마트 인벤토리에 대해 적절하게 설정된 다음과 같은 새 필드가 있습니다.
-
스마트 인벤토리에 대해
kind가smart로 설정됩니다. -
host_filter가 AND로 설정되어 스마트 인벤토리에 대해smart로 설정됩니다.
호스트 모델에는 호스트가 연결된 모든 스마트 인벤토리 세트를 식별하는 관련 끝점인 smart_inventories 가 있습니다. 멤버십 테이블은 작업이 스마트 인벤토리에 대해 실행될 때마다 업데이트됩니다.
멤버십을 더 자주 업데이트하려면 AWX_REBUILD_SMART_MEMBERSHIP 파일 기반 설정을 True 로 변경할 수 있습니다. (기본값은 False입니다.) 이렇게 하면 다음 이벤트가 발생하는 경우 멤버십이 업데이트됩니다.
- 새 호스트가 추가됨
- 기존 호스트가 수정됨(업데이트 또는 삭제됨)
- 새 스마트 인벤토리가 추가됨
- 기존 스마트 인벤토리가 수정됨(업데이트 또는 삭제됨)
편집할 수 없는 인벤토리를 볼 수 있습니다.
- 인벤토리 소스 동기화로 생성된 호스트 및 그룹의 이름입니다.
- 그룹 레코드는 편집하거나 이동할 수 없습니다.
일반 인벤토리와 마찬가지로 스마트 인벤토리 호스트 끝점(/inventories/N/hosts/)에서 호스트를 생성할 수 없습니다. 스마트 인벤토리 관리자는 이름, 설명, 변수, 삭제 기능과 같은 필드를 편집할 수 있는 권한이 있지만, 이는 스마트 인벤토리에 포함된 호스트(다른 인벤토리에 기본 멤버십이 있는)에 영향을 미치기 때문에 host_filter 를 수정할 수 있는 권한이 없습니다.
host_filter 는 스마트 인벤토리 조직 내부의 인벤토리 내부의 호스트에만 적용됩니다.
host_filter 를 수정하려면 인벤토리 조직의 조직 관리자여야 합니다. 조직 관리자에게는 조직 내부의 모든 인벤토리에 대한 암시적 "관리자" 액세스 권한이 있으므로 아직 소유하지 않은 권한은 전달되지 않습니다.
스마트 인벤토리 관리자는 다른 사용자(조직 관리자가 아닌 사용자)에게 스마트 인벤토리에 대한 "사용" 및 "임시"와 같은 권한을 부여할 수 있습니다. 이러한 작업에서는 다른 표준 인벤토리와 마찬가지로 역할에 표시된 작업을 허용합니다. 그러나 (다른 인벤토리에 있는) 호스트에는 특별한 권한을 부여하지 않습니다. 호스트에 대한 직접 읽기 권한을 허용하지 않거나 스마트 인벤토리 호스트 목록에 있는 호스트를 계속 볼 수 있지만 /#/hosts/ 아래의 추가 호스트를 볼 수 있도록 허용하지 않습니다.
경우에 따라 다음을 수정할 수 있습니다.
- 인벤토리 소스를 사용하여 인벤토리에 수동으로 생성된 새 호스트입니다.
- 인벤토리 소스 동기화로 생성된 그룹입니다.
- 호스트 및 그룹의 변수는 로컬 시스템 관리자로도 변경할 수 없습니다.
스마트 인벤토리와 연결된 호스트는 조회 시 표시됩니다. 스마트 인벤토리 결과에 호스트 이름이 동일한 호스트가 두 개 이상 포함된 경우 일치하는 호스트 중 하나만 호스트 ID로 정렬되어 스마트 인벤토리의 일부로 포함됩니다.
14.1.1. 스마트 호스트 필터 링크 복사링크가 클립보드에 복사되었습니다!
검색 필터를 사용하여 인벤토리의 호스트를 채울 수 있습니다. 이 기능은 팩트 검색 기능을 사용합니다.
자동화 컨트롤러는 use_fact_cache=True 가 작업별 템플릿을 설정할 때마다 데이터베이스에 Ansible 플레이북에서 생성한 팩트를 저장합니다. 새 사실은 기존 사실과 병합되고 호스트별로 제공됩니다. 이러한 저장된 팩트는 GET 쿼리 매개변수 host_filter 를 사용하여 /api/v2/hosts 엔드포인트로 호스트를 필터링하는 데 사용할 수 있습니다.
예를 들면 다음과 같습니다.
/api/v2/hosts?host_filter=ansible_facts__ansible_processor_vcpus=8
host_filter 매개변수는 다음을 허용합니다.
- ()로 그룹화
부울 및 연산자 사용
-
__관계형 필드에서 관련 필드를 참조 -
__은 JSON 키 경로에서 키를 분리하기 위해 ansible_facts에 사용됩니다. - '[]는 경로 사양에서 json 배열을 표시하는 데 사용됩니다.
-
""는 값에 공백이 필요한 경우 값에 사용할 수 있습니다.
-
-
"classic" Django 쿼리가
host_filter에 포함될 수 있습니다.
예:
/api/v2/hosts/?host_filter=name=localhost
/api/v2/hosts/?host_filter=ansible_facts__ansible_date_time__weekday_number="3"
/api/v2/hosts/?host_filter=ansible_facts__ansible_processor[]="GenuineIntel"
/api/v2/hosts/?host_filter=ansible_facts__ansible_lo__ipv6[]__scope="host"
/api/v2/hosts/?host_filter=ansible_facts__ansible_processor_vcpus=8
/api/v2/hosts/?host_filter=ansible_facts__ansible_env__PYTHONUNBUFFERED="true"
/api/v2/hosts/?host_filter=(name=localhost or name=database) and (groups__name=east or groups__name="west coast") and ansible_facts__an
호스트 이름 , 그룹 이름, Ansible 팩트 로 host _filter 를 검색할 수 있습니다.
그룹 검색 형식은 다음과 같습니다.
groups.name:groupA
사실 검색 형식은 다음과 같습니다.
ansible_facts.ansible_fips:false
호스트 이름 및 호스트 설명으로 구성된 스마트 검색을 수행할 수도 있습니다.
host_filter=name=my_host
host_filter 의 검색 용어가 문자열 유형인 경우 값을 숫자(예: 2.66) 또는 JSON 키워드(예: null,true 또는 false)로 만들려면 컨트롤러에서 문자열을 구문 분석하지 못하도록 값 주위에 큰따옴표를 추가합니다.
host_filter=ansible_facts__packages__dnsmasq[]__version="2.66"