Ansible을 사용하여 Junos 디바이스에서 정보 검색
주니퍼 네트웍스는 Ansible을 사용한 Junos 디바이스 관리를 지원하며, 디바이스에서 운영 및 구성 작업을 수행할 수 있는 Ansible 모듈을 제공합니다. 모듈은 디바이스와 인터페이스하기 위해 NETCONF를 통해 Junos PyEZ 및 Junos XML API를 사용하기 때문에 매니지드 디바이스에서 Python을 필요로 하지 않습니다. 따라서 Ansible을 사용하여 Junos 디바이스에서 작업을 수행하는 경우 제어 노드에서 로컬로 Ansible 모듈을 실행해야 합니다. 결과적으로 Ansible은 기본적으로 관리 노드 대신 Ansible 제어 노드에서 팩트를 수집합니다.
주니퍼 네트웍스는 Junos 디바이스에서 활성 구성을 포함한 디바이스 팩트를 수집할 수 있는 모듈을 제공합니다. 표 1 에는 사용 가능한 모듈이 요약되어 있습니다. 모듈은 Junos PyEZ 팩트 수집 시스템을 사용하여 디바이스 팩트를 검색합니다. Junos PyEZ 사실 수집 시스템 및 반환된 사전 키의 전체 목록에 대한 자세한 내용은 jnpr.junos.facts를 참조하십시오.
콘텐츠 집합 |
모듈 이름 |
---|---|
facts
및 juniper_junos_facts
모듈은 딕셔너리의 디바이스 팩트를 ansible_facts.junos
반환합니다. 또한 모듈을 사용하면 반환된 데이터를 로컬 Ansible 제어 노드의 파일에 저장할 수 있습니다. 검색된 정보를 저장할 디렉터리를 지정하려면 module 인수를 savedir
포함하고 대상 디렉터리의 경로를 정의합니다. 인수를 savedir
포함하면 플레이북은 각 디바이스에 대해 다음 파일을 생성하며, 여기서 hostname 는 디바이스에서 검색된 팩트 hostname
값이며, 이는 모듈에 전달된 호스트 이름과 다를 수 있습니다.
-
hostname-facts.json—JSON 형식의 디바이스 팩트
-
hostname-inventory.xml: XML 형식의 디바이스 하드웨어 인벤토리
예를 들어, 다음 플레이북은 인벤토리 그룹의 각 디바이스에 대한 디바이스 팩트를 검색하고 각 디바이스에 대한 데이터를 Ansible 제어 노드의 플레이북 디렉터리에 있는 별도의 파일에 저장합니다. 플레이북은 주니퍼 네트웍스 모듈을 로컬에서 실행하기 때문에 Ansible은 기본적으로 제어 노드에서 팩트를 수집합니다. 플레이북에는 Ansible이 제어 노드에서 팩트를 수집하지 못하도록 하는 인수가 포함되어 gather_facts: no
있으며, 대신 컬렉션의 facts
juniper.device
모듈을 사용하여 매니지드 디바이스에서 팩트를 검색합니다. 디바이스로 인증하기 위해 이 예제에서는 기본 위치에 있는 기존 SSH 키를 사용하므로 플레이북의 모듈에 facts
대한 자격 증명을 명시적으로 제공하지 않습니다.
--- - name: Get device facts hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve device facts and save to file juniper.device.facts: savedir: "{{ playbook_dir }}"
기본적으로 facts
및 juniper_junos_facts
모듈은 디바이스 구성을 반환하지 않습니다. 디바이스에 대한 활성 구성을 반환하려면 디바이스 팩트와 함께 옵션을 포함하고 config_format
구성을 반환할 형식을 지정합니다. 사용할 수 있는 'json'
형식 값은 , 'set'
, 'text'
입니다 'xml'
. 요청된 형식은 디바이스에서 실행되는 Junos OS 릴리스에서 지원되어야 합니다.
옵션을 ansible_facts.junos
포함 config_format
하면 모듈 응답 config
의 딕셔너리에 지정된 형식의 구성이 포함된 키가 여러 줄 문자열로 된 단일 포함됩니다. savedir
옵션이 포함되어 있으면 구성 데이터가 파일에 기록되지 않습니다.
Ansible을 사용하여 Junos 디바이스에서 구성 데이터를 검색하고 데이터를 파일에 저장하려면 또는 juniper_junos_facts
모듈 대신 facts
또는 juniper_junos_config
모듈을 사용합니다config
. 자세한 내용은 Ansible을 사용하여 Junos OS 구성 검색 또는 비교를 참조하십시오.
다음 예제의 플레이북은 다음 작업을 수행합니다.
-
인벤토리 그룹의 각 장치에 대한 장치 팩트 및 활성 구성을 검색합니다
-
각 디바이스에 대한 팩트 및 하드웨어 인벤토리를 Ansible 제어 노드의 플레이북 디렉터리에 있는 별도의 파일에 저장합니다
-
각 장치의 구성을 표준 출력으로 인쇄합니다
--- - name: Get device facts and configuration hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve device facts and configuration and save facts to file juniper.device.facts: savedir: "{{ playbook_dir }}" config_format: "xml" register: result - name: Print configuration debug: var: result.ansible_facts.junos.config
user@ansible-cn:~$ ansible-playbook facts.yaml PLAY [Get device facts and configurations] ********************************** TASK [Retrieve device facts and configuration and save facts to file] ******* ok: [dc1a.example.net] TASK [Print configuration] ************************************************** ok: [dc1a.example.net] => { "result.ansible_facts.junos.config": "<configuration commit-seconds=\"1605564153\" commit-localtime=\"2020-11-16 14:02:33 PST\" commit-user=\"admin\">\n <version>20191212.201431_builder.r1074901</version>\n [...output truncated...] </configuration>\n" } PLAY RECAP ****************************************************************** dc1a.example.net : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0