Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

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

주니퍼 네트웍스는 Junos 디바이스에서 운영 및 구성 작업을 수행할 수 있는 Ansible 모듈을 제공합니다. 이 주제에서는 Junos 디바이스에서 주니퍼 네트웍스 모듈을 실행하기 위한 간단한 Ansible 플레이북을 생성하는 방법을 설명합니다.

Ansible 플레이북을 생성하여 더 복잡한 관리 작업을 처리할 수 있습니다. 플레이북은 정의된 호스트 집합에서 작동하는 하나 이상의 플레이 또는 작업 그룹으로 구성됩니다. 플레이북에서 참조되는 Ansible 호스트는 기본적으로 /etc/ansible/hosts 에 상주하는 Ansible 인벤토리 파일에 정의되어야 합니다.

각 플레이북 플레이는 다음을 지정해야 합니다.

  • 작업이 작동하는 호스트

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

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

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

주니퍼 네트웍스 모듈은 Junos PyEZ 및 NETCONF를 통해 Junos XML API를 사용하여 디바이스와 인터페이스하기 때문에 Junos 디바이스에서 Python을 필요로 하지 않습니다. 따라서 Junos 디바이스에서 작업을 수행하려면 Python이 설치된 Ansible 제어 노드에서 모듈을 로컬로 실행해야 합니다. 플레이북 플레이에 포함하여 connection: local 모듈을 로컬로 실행할 수 있습니다. 를 사용하면 connection: localAnsible은 연결이 필요한 플레이의 각 작업에 대해 호스트에 대한 별도의 연결을 설정합니다. 컬렉션 모듈은 juniper.device 도 지원합니다 connection: juniper.device.pyez. 이 연결 유형은 여전히 Ansible 제어 노드에서 로컬로 모듈을 실행하지만 플레이의 모든 작업 실행 동안 지속되는 호스트에 대한 연결을 설정합니다.

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

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

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

다음 섹션에서는 Junos 디바이스에서 Ansible 모듈을 실행하는 간단한 플레이북을 생성하고 실행하는 단계를 간략하게 설명합니다.

플레이북 만들기

Junos 디바이스에서 작업을 수행하기 위한 간단한 플레이북을 생성하려면 다음을 수행합니다.

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

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

  5. Junos 디바이스에서 Python에 대한 요구 사항이 없으므로 Python이 설치된 Ansible 제어 노드에서 로컬로 플레이 작업을 실행하도록 Ansible에 지시합니다.
    • 로컬에서 작업을 실행하지만 연결이 필요한 플레이의 각 작업에 대해 호스트에 대한 별도의 연결을 설정하려면 포함합니다 connection: local .

    • 로컬에서 작업을 실행하지만 플레이의 모든 작업 실행 동안 지속되는 호스트에 대한 영구 연결을 설정하려면 포함합니다 connection: juniper.device.pyez . 이 연결 형식은 컬렉션 모듈에서만 juniper.device 지원됩니다.

    나머지 단계에서는 를 사용합니다 connection: local. 영구 연결에서 juniper.device 컬렉션 모듈을 사용하려면 최종 플레이북을 사용하여 connection: juniper.device.pyez업데이트하십시오.

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

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

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

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

    이 예제에서는 기본 위치에 있는 기존 SSH 키를 사용하며 플레이북의 모듈에 facts 대한 자격 증명을 명시적으로 제공하지 않습니다.

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

플레이북 실행

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

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