Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ansible 플레이북을 생성 및 실행하여 Junos 디바이스 관리

주니퍼 네트웍스 모듈을 실행하여 Junos OS를 실행하는 디바이스와 진화한 Junos OS를 실행하는 디바이스에서 운영 및 구성 작업을 수행하는 Ansible 플레이북을 생성할 수 있습니다.

주니퍼 네트웍스는 Junos 디바이스에서 운영 및 구성 작업을 수행할 수 있도록 지원하는 Ansible 모듈을 제공합니다. 이 주제에서는 간단한 Ansible 플레이북을 만들어 Junos 디바이스에서 주니퍼 네트웍스 모듈을 실행하는 방법을 간략하게 설명합니다.

플레이북 개요

보다 복잡한 관리 작업을 처리하기 위해 Ansible 플레이북을 생성합니다. 플레이북은 정의된 호스트 집합에서 작동하는 하나 이상의 플레이 또는 작업 그룹으로 구성됩니다. 각 플레이북 플레이는 다음을 지정해야 합니다.

  • 작업이 작동하는 호스트

  • 각 호스트에서 실행할 작업 목록

  • 다른 곳에서 정의하지 않은 경우 인증 매개 변수를 포함한 모든 필수 변수 또는 모듈 매개 변수

플레이북에서 참조하는 모든 Ansible 호스트는 Ansible 인벤토리 파일에 정의되어야 합니다. Ansible 인벤토리 파일의 기본 위치는 /etc/ansible/hosts 입니다.

플레이북은 모듈을 호출하여 호스트에서 작업을 실행합니다. 주니퍼 네트웍스 Ansible 모듈은 Ansible Galaxy에서 호스팅되는 컬렉션을 juniper.device 통해 배포됩니다. 플레이북에서 주니퍼 네트웍스 모듈을 사용하려면 Ansible 제어 노드에 컬렉션을 설치해야 합니다. 컬렉션 및 모듈에 대한 자세한 내용은 Ansible for Junos OS 컬렉션 및 모듈 이해를 참조하십시오.

주니퍼 네트웍스 모듈은 Junos XML API 및 NETCONF를 사용하여 디바이스와 인터페이스하므로 Junos 디바이스에서 Python이 필요하지 않습니다. 따라서 Junos 디바이스에서 작업을 수행하려면 Python이 설치된 Ansible 제어 노드에서 모듈을 로컬로 실행해야 합니다. 적절한 Ansible 연결 및 네트워크 OS 매개 변수를 정의하여 모듈을 로컬에서 실행할 수 있습니다. 컬렉션에 있는 juniper.device 모듈의 연결 매개 변수 및 값에 대한 자세한 내용은 Junos 디바이스에서 모듈을 실행하는 방법을 참조하십시오.

기본적으로 Ansible 재생은 원격 호스트에서 시스템 팩트를 자동으로 수집합니다. 그러나 플레이를 로컬에서 실행하면 Ansible은 원격 호스트 대신 Ansible 제어 노드에서 팩트를 수집합니다. 제어 노드에 대한 팩트 수집을 방지하려면 플레이북에 포함 gather_facts: no 합니다.

SSH를 통한 NETCONF 세션을 사용하여 주니퍼 네트웍스 모듈을 실행할 때, Junos 디바이스에서 NETCONF를 활성화해야 합니다. 다른 작업을 실행하기 전에 각 디바이스에서 NETCONF가 활성화되었는지 명시적으로 테스트하는 간단한 작업을 플레이북에서 생성하는 것이 좋습니다. 호스트에 대해 이 작업이 실패하면 기본적으로 Ansible은 이 호스트에 대한 나머지 작업을 실행하지 않습니다. 이 테스트가 없으면 플레이북 실행 중에 이 문제 또는 다른 문제가 실패의 원인인지 여부를 나타내지 않는 일반 연결 오류가 발생할 수 있습니다.

YAML 형식으로 플레이북을 작성합니다. YAML은 공백에 민감하며 들여쓰기가 중요합니다. 따라서 플레이북은 항상 탭이 아닌 공백을 사용해야 합니다. YAML에서 하이픈(-)이 앞에 오는 항목은 목록 항목이며 표기법은 key: value 해시를 나타냅니다. Ansible 플레이북 생성에 대한 자세한 내용은 https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks.html 의 공식 Ansible 설명서를 참조하십시오.

Ansible 플레이북 생성

시작하기 전에:

  • Junos 디바이스를 관리하는 데 사용할 모듈 세트를 선택합니다. 컬렉션에는 juniper.device 원본 모듈과 모듈이 포함됩니다juniper.device.junipernetworks.junos

  • Junos 디바이스 관리 시 Ansible 인벤토리 파일 이해에 설명된 대로 모듈 세트에 적합한 Ansible 연결 및 네트워크 OS 변수로 인벤토리 파일을 업데이트합니다.

Junos 디바이스에서 작업을 수행하기 위한 간단한 플레이북을 만들려면:

  1. 즐겨찾는 편집기에서 .yaml 파일 확장자를 사용하는 설명이 포함된 플레이북 이름을 사용하여 새 파일을 만듭니다.
  2. YAML 문서의 시작을 나타내는 세 개의 대시를 포함합니다.
  3. 연극에 대한 설명적인 이름을 제공합니다.
  4. 모듈이 작동할 호스트 또는 호스트 그룹의 쉼표로 구분된(또는 콜론으로 구분된) 목록을 정의합니다. 인벤토리 파일의 모든 호스트를 나타내도록 지정합니다 all .

    Ansible 인벤토리 파일은 플레이북에서 참조하는 모든 호스트 또는 호스트 그룹을 정의해야 합니다.

  5. (옵션) 로컬 연결의 경우 Ansible 제어 노드인 대상 호스트에 대한 사실 수집을 방지하려면 포함 gather_facts: no 합니다.
  6. (선택 사항) 컬렉션을 참조합니다.

    플레이북에서 키를 정의 collections 한 다음 작업에서 모듈 이름만 참조할 수 있습니다. 그러나 권장되는 방법은 키를 생 collections 략하고 대신 정규화된 컬렉션 이름(FQCN)으로 컬렉션 콘텐츠를 참조하는 것입니다.

    이 예제에서는 키를 생략하고 collections 정규화된 컬렉션 이름을 사용합니다.

  7. 작업 섹션을 정의하고 하나 이상의 작업을 목록 항목으로 포함합니다.
  8. (선택 사항) SSH를 통한 NETCONF 세션에 대한 추가 점검으로 각 Junos 디바이스에 대한 NETCONF 연결을 확인하는 작업을 생성합니다.
  9. 주니퍼 네트웍스 모듈을 사용하는 작업을 생성하고 필요한 연결 및 인증 매개 변수를 제공합니다.

    이 예에서는 SSH 키 에이전트에 로드된 SSH 키를 사용하며 플레이북의 모듈에 대한 facts 자격 증명을 명시적으로 제공하지 않습니다.

  10. (선택 사항) 필요에 따라 추가 작업이나 추가 플레이를 정의합니다.

플레이북 실행

이 예제의 플레이북은 연결을 로 정의하는 다음 Ansible 인벤토리 파일을 사용합니다.local

플레이북을 실행하려면 다음을 수행합니다.

  • 제어 노드에서 명령을 실행 ansible-playbook 하고 플레이북 경로와 필요한 옵션을 제공합니다.