Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos 디바이스 관리를 위한 Ansible 플레이북 생성 및 실행

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

주니퍼 네트웍스는 Ansible을 사용한 Junos 디바이스 관리를 지원하며, Ansible과 주니퍼 네트웍스는 디바이스에서 운영 및 구성 작업을 수행할 수 있는 Ansible 모듈을 제공합니다. 이 주제에서는 Junos 디바이스에서 주니퍼 네트웍스 모듈을 실행하기 위해 간단한 Ansible 플레이북을 생성하는 방법을 간략하게 설명합니다.

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

  • 작업이 작동하는 호스트

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

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

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

주니퍼 네트웍스 모듈은 Junos PyEZ 및 NETCONF를 통한 Junos XML API를 사용하여 디바이스와 상호 작용하기 때문에 Junos 디바이스에서 Python을 필요로 하지 않습니다. 따라서 Junos 디바이스에서 작업을 수행하려면 Python이 설치된 Ansible 제어 노드에서 로컬로 모듈을 실행해야 합니다. 플레이북 플레이에 포함하여 connection: local 모듈을 로컬로 실행할 수 있습니다. 를 사용할 connection: local때 Ansible은 연결이 필요한 플레이의 각 작업에 대해 호스트에 대한 별도의 연결을 설정합니다. 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/user_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 Ansible 설정에 맞게 컬렉션 또는 Juniper.junos 역할을 참조합니다.
    • 컬렉션이 설치된 Ansible 2.10 이상을 juniper.device 실행하는 Ansible 제어 노드에서는 키를 생략 collections 하고 대신 FQCN(정규화된 컬렉션 이름)으로 컬렉션 콘텐츠를 참조하는 것이 좋습니다.

    • 역할이 설치된 Ansible 제어 노드에서 Juniper.junos 역할을 포함합니다.

    나머지 단계에서는 컬렉션 및 모듈 이름을 사용합니다 juniper.device . 역할을 사용하려면 Juniper.junos 역할 및 역할 모듈 이름을 사용하도록 최종 플레이북을 업데이트합니다.

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

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

  11. (선택 사항) 필요에 따라 3단계부터 10단계까지 반복하여 추가 재생을 정의합니다.

플레이북 실행

플레이북을 실행하려면:

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