6.10. 작업 템플릿 검사
검사 작업은 자동화 컨트롤러 3.2부터 더 이상 지원되지 않습니다. 이 시스템 추적 기능은 사실을 기록 데이터로 캡처하고 저장하는 방법으로 사용되었습니다. 이제 사실은 사실 캐싱을 통해 컨트롤러에 저장됩니다. 자세한 내용은 팩트 캐싱 을 참조하십시오.
자동화 컨트롤러 3.2 전에 시스템의 작업 템플릿 검사 작업은 일반 작업 템플릿과 같이 유형 실행으로 변환됩니다. 인벤토리 및 인증 정보와 같은 관련 리소스를 유지합니다. 기본적으로 관련 프로젝트가 없는 작업 템플릿 검사 작업에는 특수 플레이북이 할당됩니다. 자체 검사 플레이북을 사용하여 프로젝트를 지정할 수도 있습니다. awx-facts-playbooks 를 가리키는 각 조직에 대해 프로젝트가 생성되고 작업 템플릿이 플레이북 https://github.com/ansible/tower-fact-modules/blob/master/scan_facts.yml 로 설정되었습니다.
6.10.1. 사실 검사 플레이북
검사 작업 플레이북인 scan_facts.yml
에는 Ansible의 표준 팩트 수집과 함께 패키지, 서비스 및 파일 등 세 가지 사실 검사 모듈
호출이 포함되어 있습니다. scan_facts.yml
Playbook 파일은 다음과 유사합니다.
- hosts: all vars: scan_use_checksum: false scan_use_recursive: false tasks: - scan_packages: - scan_services: - scan_files: paths: '{{ scan_file_paths }}' get_checksum: '{{ scan_use_checksum }}' recursive: '{{ scan_use_recursive }}' when: scan_file_paths is defined
scan_files
사실 모듈은 검사 작업 템플릿에서 extra_vars
를 통해 전달되는 매개변수를 허용하는 유일한 모듈입니다.
scan_file_paths
: /tmp/
scan_use_checksum
: true scan_use_recursive
: true
-
scan_file_paths
매개변수에는 여러 설정이 있을 수 있습니다(예:/tmp/
또는/var/log
). -
scan_use_checksum
및scan_use_recursive
매개변수를 false로 설정하거나 생략할 수도 있습니다. 생략은 False 설정과 동일합니다.
검사 작업 템플릿은
이 활성화되고 상태가 되는 become
인증 정보를
사용해야 합니다. 옵션 목록에서 권한 에스컬레이션 을 선택하여 become
을 활성화할 수 있습니다.
6.10.2. scan_facts.yml에서 지원되는 OS
scan_facts.yml
플레이북을 팩트 캐시와 함께 사용하는 경우 다음과 같은 지원되는 운영 체제 중 하나를 사용하고 있는지 확인합니다.
- Red Hat Enterprise Linux 5, 6, 7, 8, 9
- Ubuntu 23.04 ( Ubuntu 지원은 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정임)
- OEL 6 및 7
- SLES 11 및 12
- Debian 6, 7, 8, 9, 10, 11, 12
- Fedora 22, 23, 24
- Amazon Linux 2023.1.20230912
이러한 운영 체제 중 일부는 python을 실행하기 위해 초기 구성이 필요하거나 검사 모듈이 사용하는 python-apt
와 같은 python 패키지에 액세스할 수 있어야 합니다.
6.10.3. 사전 검사 설정
다음은 검사 작업을 실행할 수 있도록 특정 배포를 구성하는 플레이북의 예입니다.
Bootstrap Ubuntu (16.04) --- - name: Get Ubuntu 16, and on ready hosts: all sudo: yes gather_facts: no tasks: - name: install python-simplejson raw: sudo apt-get -y update raw: sudo apt-get -y install python-simplejson raw: sudo apt-get install python-apt Bootstrap Fedora (23, 24) --- - name: Get Fedora ready hosts: all sudo: yes gather_facts: no tasks: - name: install python-simplejson raw: sudo dnf -y update raw: sudo dnf -y install python-simplejson raw: sudo dnf -y install rpm-python
6.10.4. 사용자 정의 사실 검사
사용자 정의 사실 검사를 위한 플레이북은 팩트 검사 플레이북 섹션의 예제와 유사합니다. 예를 들어 사용자 지정 scan_foo
Ansible 사실 모듈만 사용하는 플레이북은 다음과 유사합니다.
scan_foo.py: def main(): module = AnsibleModule( argument_spec = dict()) foo = [ { "hello": "world" }, { "foo": "bar" } ] results = dict(ansible_facts=dict(foo=foo)) module.exit_json(**results) main()
사용자 지정 사실 모듈을 사용하려면 검사 작업 템플릿에 사용된 Ansible 프로젝트의 / Cryostat/
하위 디렉터리에 있어야 합니다. 이 사실 검사 모듈은 하드 코딩된 사실 세트를 반환합니다.
[ { "hello": "world" }, { "foo": "bar" } ]
자세한 내용은 Ansible 문서 의 모듈 개발 섹션을 참조하십시오.
6.10.5. 사실 캐싱
자동화 컨트롤러는 Ansible 팩트 캐시 플러그인을 통해 호스트별로 사실을 저장하고 검색할 수 있습니다. 이 동작은 작업별 템플릿을 기반으로 구성할 수 있습니다. 팩트 캐싱은 기본적으로 꺼져 있지만 실행 중인 작업과 관련된 인벤토리의 모든 호스트에 대한 사실 요청을 처리하기 위해 활성화할 수 있습니다. 이를 통해 호스트 팩트의 전체 인벤토리에 계속 액세스하는 동안 --limit
와 함께 작업 템플릿을 사용할 수 있습니다. 플러그인이 탐색 패널에서 호스트별로 강제 적용하는 글로벌 시간 초과 설정을 지정하고(초) 탐색 패널에서
팩트 캐시를 사용하는 작업(use_fact_cache=True
)을 시작한 후 각 호스트의 ansible_facts
는 모두 컨트롤러의 작업 인벤토리에 저장됩니다.
자동화 컨트롤러가 포함된 Ansible 사실 캐시 플러그인은 팩트 캐시가 활성화된 작업에서 활성화됩니다(use_fact_cache=True
).
팩트 캐시가 활성화된 작업(use_fact_cache=True
)이 실행된 경우 자동화 컨트롤러는 인벤토리의 호스트에 대한 모든 레코드를 복원합니다. 호스트당 현재 저장된 팩트보다 최신 업데이트 시간이 있는 모든 레코드는 데이터베이스에서 업데이트됩니다.
신규 및 변경된 사실은 자동화 컨트롤러의 로깅 기능을 통해 기록됩니다. 특히 system_tracking 네임스페이스
또는 로거에 대해 다음을 수행합니다. 로깅 페이로드에는 다음 필드가 포함됩니다.
-
host_name
-
inventory_id
-
ansible_facts
Ansible 사실은
자동화 컨트롤러 인벤토리 inventory, inventory_id
의 host_name
에 대한 모든 Ansible 사실로 이루어진 사전입니다.
호스트 이름에 슬래시(/)가 포함된 경우 해당 호스트에서 팩트 캐시가 작동하지 않습니다. 인벤토리에 100개의 호스트가 있고 하나의 호스트에 / 이름이 있는 경우 나머지 99개의 호스트는 여전히 팩트를 수집합니다.
6.10.6. 사실 캐싱의 이점
사실 캐싱은 팩트 수집을 실행하는 데 걸리는 시간을 절약할 수 있습니다. 작업에 1,000개의 호스트 및 포크에 대해 실행되는 플레이북이 있는 경우 해당 호스트 전체에서 팩트를 수집하는 데 10분을 할애할 수 있습니다. 그러나 작업을 정기적으로 실행하는 경우 첫 번째 실행에서는 이러한 팩트를 캐시하고 다음 실행에서는 데이터베이스에서 해당 작업을 가져옵니다. 이렇게 하면 스마트 인벤토리를 포함하여 대규모 인벤토리에 대한 작업 런타임이 줄어듭니다.
팩트 캐싱을 적용하려면 ansible.cfg 파일을 변경하지 마십시오. 사용자 정의 사실 캐싱은 컨트롤러의 사실 캐싱 기능과 충돌할 수 있습니다. 자동화 컨트롤러가 포함된 사실 캐싱 모듈을 사용해야 합니다.
작업 템플릿을 생성하거나 편집할 때 사실 스토리지 활성화 옵션을 선택하여 작업에 캐시된 팩트를 사용하도록 선택할 수 있습니다.
팩트를 지우려면 Ansible clear_facts
메타 작업을 실행합니다. 다음은 Ansible clear_facts
메타 작업을 사용하는 플레이북의 예입니다.
- hosts: all gather_facts: false tasks: - name: Clear gathered facts from all currently targeted hosts meta: clear_facts
다음에서 팩트 캐싱의 API 끝점을 찾을 수 있습니다.
HTTP://<controller 서버 이름>/api/v2/hosts/x/ansible_facts