Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ansible for Junos OS 컬렉션 및 모듈 이해

Junos OS를 실행하는 디바이스와 진화한 Junos OS를 실행하는 디바이스를 관리하는 데 사용할 수 있는 Ansible 컬렉션 및 모듈에 대해 알아보십시오.

Junos 디바이스 관리를 위한 Ansible 컬렉션 및 모듈 이해

Ansible은 인프라 구성 관리에 사용할 수 있는 IT 자동화 프레임워크입니다. 개별 코드 단위인 Ansible 모듈을 사용하여 매니지드 노드에서 특정 기능을 수행합니다. 원격 호스트에서 개별 모듈을 실행하여 임시 작업을 수행할 수 있습니다. 플레이북을 통해 모듈을 실행할 수도 있습니다.

주니퍼 네트웍스는 Junos 디바이스를 관리하는 데 사용할 수 있는 Ansible 모듈을 제공합니다. Ansible 모듈은 Ansible Galaxy 리포지토리에서 호스팅되는 Ansible Content Collections를 통해 그룹화되고 배포됩니다. Ansible 컬렉션은 Ansible 코어 설치의 일부로 포함되지 않은 Ansible 콘텐츠를 배포하기 위한 형식입니다. 컬렉션에는 모듈, 플레이북, 플러그인 및 역할을 포함한 광범위한 콘텐츠가 포함될 수 있습니다. 컬렉션에는 자체 리포지토리도 있으므로 Ansible 코어 설치와 독립적으로 개발 및 릴리스할 수 있습니다.

표 1 은 Junos 디바이스 관리에 사용할 수 있는 콘텐츠 세트를 간략하게 보여줍니다. 주니퍼 네트웍스가 컬렉션을 juniper.device 제공합니다. 릴리스 2.0.0부터 juniper.device 주니퍼는 주니퍼 네트웍스 juniper.device 컬렉션과 Red Hat Ansible junipernetworks.junos 컬렉션을 두 모듈 세트를 모두 포함하는 단일 컬렉션으로 통합했습니다.

표 1: Junos 디바이스 관리를 위한 Ansible 콘텐츠 세트
컬렉션 모듈 세트 설명
juniper.device

juniper.device

Junos 디바이스 관리를 위한 모듈입니다. 주니퍼 네트웍스는 이 컬렉션을 오픈 소스 프로젝트로 제공하고 관리합니다.

junipernetworks.junos

(juniper.device.junos_*)

Junos 디바이스 관리를 위한 모듈입니다. Red Hat Ansible Networking 팀은 원래 이 컬렉션을 유지 관리했습니다. 릴리스 2.0.0에서는 juniper.device 모듈을 컬렉션에 병합했습니다. juniper.device 주니퍼 네트웍스는 이러한 모듈을 앞으로도 유지할 것입니다. 로 시작하는 junos_모듈 이름으로 이러한 모듈을 식별할 수 있습니다.

병합된 컬렉션 이해 juniper.device

병합 개요

릴리스 2.0.0 이전 juniper.device 에는 주니퍼 네트웍스 juniper.device 컬렉션과 Red Hat Ansible junipernetworks.junos 컬렉션은 별개의 컬렉션이었습니다. 각 컬렉션 소유자는 각자의 컬렉션을 유지했습니다. 릴리스 2.0.0부터 juniper.device 컬렉션을 junipernetworks.junos 컬렉션에 juniper.device 병합했습니다. 주니퍼 네트웍스는 병합된 컬렉션을 앞으로도 유지할 것입니다.

결합된 모듈 세트를 나타내기 위해 컬렉션juniper.device 참조합니다. 컬렉션 내의 모듈 세트를 구별하기 위해 다음과 같이 모듈을 참조합니다.

  • juniper.device 모듈 또는 juniper.device 원본 모듈

  • junipernetworks.junos 모듈 또는 juniper.device.junos_* 모듈

컬렉션을 juniper.device 설치할 때 을 사용하여 juniper.device.module_name 모듈 세트에서 모듈을 실행할 수 있습니다. 를 참조 junipernetworks.junos.module_name하는 기존 플레이북을 계속 사용하려면 컬렉션도 junipernetworks.junos 설치해야 합니다. 네임스페이스 중 하나를 사용하여 모듈을 junipernetworks.junos 실행하려면 로 설정 ansible_network_os 해야 합니다. juniper.device.junos 그렇지 않으면 모듈 세트를 사용할 때 다른 모든 것이 동일하게 유지됩니다.

컬렉션에는 juniper.device 두 모듈 세트가 모두 포함되어 있지만 각 모듈 세트는 서로 다른 Ansible 연결 값과 네트워크 OS 값을 사용합니다. 따라서 두 모듈 세트는 동일한 인벤토리 파일을 사용할 수 없으며 동일한 플레이북에서 모듈 세트를 혼합할 수 없습니다. 따라서 플레이북 및 작업에 사용할 하나의 모듈 세트를 선택하는 것이 좋습니다. 선택하는 세트는 선호도의 문제입니다. 사용자 환경에 가장 적합한 모듈 세트를 결정하는 데 도움이 되도록 두 세트에 대한 개략적인 개요와 비교를 제공했습니다.

모듈 세트 비교

컬렉션과 컬렉션은 juniper.device junipernetworks.junos 원래 서로 다른 목적과 사용 사례를 위해 제작되었습니다. 주니퍼 네트웍스는 사용자가 Junos OS의 모든 기능에 직접 액세스할 수 있도록 모듈을 juniper.device 설계했습니다. Red Hat은 Red Hat에서 유지 관리하는 모든 네트워킹 컬렉션에 적용되는 일관된 접근 방식을 사용하여 모듈을 junipernetworks.junos 개발했습니다. 이 접근 방식은 간소화되고 반복 가능한 구성 관리를 위한 템플릿 구성을 제공했습니다.

몇 가지 뚜렷한 차이점을 제외하고는 모듈과 junipernetworks.junos 모듈 모두 juniper.device Junos 디바이스 관리를 위한 유사한 기능을 제공합니다. 두 모듈 세트 모두 다음을 수행할 수 있습니다.

  • 디바이스 팩트 확인하기

  • 디바이스에서 명령 및 RPC 실행

  • 소프트웨어 패키지 설치

  • 디바이스에서 ping 작업 실행

  • 디바이스 구성

두 모듈 세트 모두 디바이스 구성에 유사한 옵션을 제공합니다. 예를 들어 다음을 수행할 수 있습니다.

  • 파일에서 허용되는 형식 중 하나로 구성 데이터를 로드합니다

  • 구성 데이터를 모듈 인수에 제공된 명령으로 set 로드합니다

  • 구성 롤백

  • 전체 구성 교체

  • 구성 데이터 로드를 위한 형식 및 로드 작업을 지정합니다

  • 구성을 커밋하고 공통 커밋 옵션을 포함합니다

또한 모듈 세트는 구성 작업과 관련하여 몇 가지 차이점이 있습니다. 이 모듈은 junipernetworks.junos 구성 계층의 특정 영역에 대한 공통 문을 쉽게 구성할 수 있는 다양한 구성 템플릿을 제공합니다. 예를 들어, OSPF 또는 정적 경로에 대한 공통 옵션을 구성할 수 있습니다.

마찬가지로 모듈은 juniper.device 몇 가지 추가 구성 기능을 제공합니다. Jinja2 템플릿을 사용하여 구성을 비교하고, 구조 구성을 로드하고, 구성 데이터를 로드할 수 있습니다. 구성 모드를 선택할 수도 있습니다. 예를 들어 배치 모드를 사용할 수 있습니다. 후보 구성의 개인 사본을 구성합니다. 또는 동적 또는 임시 데이터베이스를 구성합니다. 또한 모듈은 juniper.device 구성을 동기화하고, 빈 변경 사항을 커밋하고, 커밋 경고를 무시하기 위한 추가 커밋 옵션을 제공합니다.

모듈 세트 간의 또 다른 주요 차이점은 모듈이 juniper.device 다른 여러 주니퍼 네트웍스 제품과 통합된다는 것입니다. 예를 들어 Ansible 플레이북은 Junos PyEZ 운영 테이블을 참조하여 디바이스에서 운영 상태 데이터를 검색할 수 있습니다. Ansible 플레이북은 Python(JSNAPy)의 Junos Snapshot Administrator 작업도 수행할 수 있습니다. JSNAPy를 사용하면 Junos 디바이스의 런타임 환경 스냅샷을 캡처하고 감사할 수 있습니다. 따라서 Ansible 플레이북에서 기존 Junos PyEZ 테이블과 JSNAPy 구성 및 테스트 파일을 사용할 수 있습니다.

Junos 디바이스에서 모듈을 실행하는 방법

Ansible Galaxy 리포지토리에서 호스팅되는 컬렉션을 사용하려면 먼저 제어 노드에 Ansible을 설치한 다음 컬렉션을 설치해야 합니다. 컬렉션 설치 juniper.device 에 대한 자세한 내용은 Junos OS 서버 요구 사항에 대한 Ansible을 참조하십시오.

Ansible 모듈은 매니지드 노드에서 작업을 수행할 수 있습니다. 일반적으로 Ansible 제어 노드는 작업을 수행하기 위해 관리 노드에 모듈을 보냅니다. 노드는 모듈을 실행한 다음 제거합니다. 이 시나리오에서 관리되는 노드에는 모듈을 실행할 수 있는 기능이 있어야 합니다. 대부분의 Ansible 모듈은 Python으로 작성되므로 Ansible에는 일반적으로 관리 노드에서 Python이 필요합니다.

그러나 컬렉션의 juniper.device 모듈에는 관리되는 노드에서 Python이 필요하지 않습니다. 일반적인 작업과 달리 Ansible 제어 노드는 모듈을 로컬에서 실행합니다. 모듈은 Junos XML API 및 NETCONF를 사용하여 매니지드 노드와 상호 작용합니다. 이 실행 방법을 사용하면 Ansible을 사용하여 지원되는 모든 Junos 디바이스를 관리할 수 있습니다. 그림 1 은 Ansible 제어 노드와 관리되는 Junos 디바이스 간의 통신을 보여줍니다.

그림 1: Junos 디바이스 Ansible Communication with a Junos Device 와의 Ansible 통신

모듈 또는 모듈을 junipernetworks.junos 사용하려면 juniper.device Ansible 플레이북 또는 명령이 다음을 수행해야 합니다.

  • 컬렉션 지정 또는 FQCN - 컬렉션을 지정하려면 재생에 키를 포함 collections 합니다. 또는 키를 생략 collections 하고 대신 권장되는 방법인 정규화된 컬렉션 이름(FQCN)으로 컬렉션 컨텐츠를 참조할 수 있습니다.

  • 제어 노드에서 로컬로 모듈 실행 - Ansible 모듈을 로컬로 실행하려면 플레이북, 인벤토리 파일 또는 명령 옵션에서 적절한 연결 매개 변수를 정의합니다. 플레이북에서 매개 변수를 connection 정의하거나 인벤토리 파일이나 호스트 또는 그룹 변수 파일에서 매개 변수를 정의 ansible_connection 합니다. 모듈의 junipernetworks.junos 경우 매개 변수도 ansible_network_os 지정해야 합니다. 일반적으로 인벤토리 파일에서 이 매개 변수를 정의합니다. 표 2 에는 지원되는 값에 대한 개요가 나와 있습니다.

    표 2: 연결 매개 변수
    모듈 세트 플레이북 인벤토리 파일

    juniper.device
    (오리지널 모듈)

    • connection: (local | juniper.device.pyez)

    • ansible_connection=(local | juniper.device.pyez)

    junipernetworks.junos
    (제외한 모든 junos_* 모듈
    junos_netconf 그리고 junos_ping)

    • connection: netconf

    • ansible_connection=netconf

    • ansible_network_os=juniper.device.junos

    junipernetworks.junos
    (junos_netconfjunos_ping)

    • connection: network_cli

    • ansible_connection=network_cli

    • ansible_network_os=juniper.device.junos

  • 매니지드 디바이스에 연결하기 위한 적절한 연결 및 인증 정보를 제공합니다.

관리되는 Junos 디바이스에 액세스할 수 있는 모든 사용자 계정을 사용하여 Ansible 모듈을 실행할 수 있습니다. Ansible 모듈을 실행하면 Junos OS 사용자 계정 액세스 권한이 적용됩니다. Junos OS 사용자 계정에 대해 구성된 클래스가 권한을 결정합니다. 따라서 사용자가 구성 변경 사항을 디바이스에 로드하는 모듈을 실행하는 경우 사용자는 구성의 관련 부분을 변경할 수 있는 권한이 있어야 합니다.

다음 섹션에서는 다양한 모듈 세트에 대한 몇 가지 샘플 플레이북 및 인벤토리 파일을 제공합니다.

juniper.device 모듈용 샘플 플레이북

다음 플레이북은 모듈을 juniper.device.facts 실행하여 디바이스 팩트를 검색하고 파일에 저장합니다. 이 예에서는 인벤토리 파일 대신 플레이북에서 연결 유형을 정의합니다. 사용자는 SSH 키 에이전트에 로드된 SSH 키를 사용하여 디바이스로 인증합니다.

명령줄에서 임시 작업을 수행할 수도 있습니다. 다음 명령은 모듈을 juniper.device.facts 실행하고 인벤토리 그룹 junos의 호스트에서 디바이스 팩트를 검색합니다.

junipernetworks.junos 모듈에 대한 샘플 인벤토리 파일 및 플레이북

모듈 세트를 junipernetworks.junos 사용하는 경우 인벤토리 파일이나 호스트 또는 그룹 변수 파일에서 및 ansible_network_os 변수를 정의 ansible_connection 할 수 있습니다. 다음 예제 인벤토리 파일은 아래의 dc1:vars그룹 dc1 에 대한 연결 매개 변수를 정의합니다.

다음 플레이북은 네임스페이스 아래에서 모듈을 junipernetworks.junos.junos_facts 실행합니다. juniper.device 플레이북은 dc1 인벤토리 파일에서 적절한 연결 및 네트워크 OS 값을 정의하는 그룹을 참조합니다.

juniper.device 모듈

표 3은 컬렉션의 원래 juniper.device 모듈을 간략하게 설명합니다. juniper.device 모듈에 대한 현재 모듈 목록, 설명서 및 사용 예제는 https://ansible-juniper-collection.readthedocs.io 를 참조하십시오.

표 3: juniper.device 모듈

모듈 이름

설명

지원되는 Ansible 연결

command

Junos 디바이스에서 운영 모드 명령을 실행하고 출력을 로컬에 저장합니다.

  • local

  • juniper.device.pyez

config

Junos 디바이스의 구성을 관리합니다.

  • local

  • juniper.device.pyez

facts

원격 호스트에서 Junos OS 버전, 일련 번호 및 하드웨어 모델 번호를 포함한 디바이스별 정보를 검색합니다.

  • local

  • juniper.device.pyez

file_copy

로컬 Ansible 제어 노드와 Junos 디바이스 간에 파일을 전송합니다.

  • local

  • juniper.device.pyez

jsnapy

Ansible을 통해 Python(JSNAPy) 테스트에서 Junos Snapshot Administrator를 실행합니다.

  • local

  • juniper.device.pyez

ping

Junos 디바이스에서 명령을 실행 ping 합니다.

  • local

  • juniper.device.pyez

pmtud

Junos 디바이스에서 경로 MTU 검색(PMTUD)을 수행합니다.

  • local

  • juniper.device.pyez

rpc

Junos OS RPC를 실행합니다.

  • local

  • juniper.device.pyez

software

소프트웨어 패키지를 설치하고 Junos 디바이스를 재부팅합니다.

  • local

  • juniper.device.pyez

srx_cluster

클러스터 지원 SRX 시리즈 방화벽을 위한 SRX 시리즈 섀시 클러스터을 생성합니다.

  • local

  • juniper.device.pyez

system

디바이스 재설정, 재부팅 또는 종료를 포함하여 Junos 디바이스에서 시스템 작업을 수행합니다.

  • local

  • juniper.device.pyez

table

Junos PyEZ 운영 테이블 및 보기를 사용하여 Junos 디바이스에서 운영 정보를 검색합니다.

  • local

  • juniper.device.pyez

junipernetworks.junos 모듈

릴리스 2.0.0부터 juniper.device 컬렉션에는 juniper.device 모듈이 포함됩니다. junipernetworks.junos 표 4는 컬렉션의 모듈을 junipernetworks.junos 간략하게 보여줍니다. juniper.device 모듈 세트를 사용하면 운영 작업을 수행할 수 있습니다. 또한 Junos 디바이스의 다양한 기능, 프로토콜 및 서비스에 대한 공통 설정을 구성하는 많은 구성 템플릿 모듈도 포함되어 있습니다.

표 4: junipernetworks.junos 모듈
모듈 이름 설명 지원되는 Ansible 연결
운영 모듈

junos_command

Junos 디바이스에서 운영 모드 명령을 실행합니다.

  • ansible.netcommon.netconf

  • ansible.netcommon.network_cli

junos_facts

원격 호스트에서 디바이스별 정보를 검색합니다.

  • ansible.netcommon.netconf

junos_package

소프트웨어 패키지를 설치하고 Junos 디바이스를 재부팅합니다.

  • ansible.netcommon.netconf

junos_ping

Junos 디바이스에서 명령을 실행 ping 합니다.

  • ansible.netcommon.network_cli

junos_rpc

Junos 디바이스에서 NETCONF를 통해 Junos OS RPC를 실행합니다.

  • ansible.netcommon.netconf

구성 모듈

junos_acl_interfaces

인터페이스에 방화벽 필터를 적용합니다.

  • ansible.netcommon.netconf

junos_acls

액세스 제어 목록 (ACL)이라고도 하는 방화벽 필터를 구성합니다.

  • ansible.netcommon.netconf

junos_banner

배너를 구성합니다.

  • ansible.netcommon.netconf

junos_bgp_address_family

인터페이스의 BGP 주소 패밀리 속성을 관리합니다.

  • ansible.netcommon.netconf

junos_bgp_global

BGP 전역 속성을 구성합니다.

  • ansible.netcommon.netconf

junos_config

Junos 디바이스의 구성을 관리합니다.

  • ansible.netcommon.netconf

junos_hostname

디바이스 호스트 이름을 구성합니다.

  • ansible.netcommon.netconf

junos_interfaces

기본적인 물리적 및 논리적 인터페이스 속성을 구성합니다.

  • ansible.netcommon.netconf

junos_l2_interfaces

L2 인터페이스를 구성합니다.

  • ansible.netcommon.netconf

junos_l3_interfaces

L3 인터페이스를 구성합니다.

  • ansible.netcommon.netconf

junos_lacp

어그리게이션 이더넷 인터페이스에 대한 글로벌 LACP(Link Aggregation Control Protocol) 속성을 구성합니다.

  • ansible.netcommon.netconf

junos_lacp_interfaces

인터페이스의 LACP 속성을 관리합니다.

  • ansible.netcommon.netconf

junos_lag_interfaces

링크 어그리게이션 그룹(LAG)을 구성합니다.

  • ansible.netcommon.netconf

junos_lldp_global

LLDP(Link Layer Discovery Protocol)에 대한 전역 설정을 구성합니다.

  • ansible.netcommon.netconf

junos_lldp_interfaces

인터페이스의 LLDP 속성을 관리합니다.

  • ansible.netcommon.netconf

junos_logging_global

시스템 로깅을 구성합니다.

  • ansible.netcommon.netconf

junos_netconf

NETCONF 시스템 서비스를 구성합니다.

  • ansible.netcommon.network_cli

junos_ntp_global

NTP(Network Time Protocol)를 구성합니다.

  • ansible.netcommon.netconf

junos_ospf_interfaces

인터페이스의 OSPF 구성을 관리합니다.

  • ansible.netcommon.netconf

junos_ospfv2

OSPFv2를 구성합니다.

  • ansible.netcommon.netconf

junos_ospfv3

OSPFv3을 구성합니다.

  • ansible.netcommon.netconf

junos_prefix_lists

라우팅 정책 접두사 목록을 구성합니다.

  • ansible.netcommon.netconf

junos_routing_instances

라우팅 인스턴스를 구성합니다.

  • ansible.netcommon.netconf

junos_routing_options

라우팅 옵션을 구성합니다.

  • ansible.netcommon.netconf

junos_security_policies

보안 정책을 구성하고 관리합니다.

  • ansible.netcommon.netconf

junos_security_policies_global

글로벌 보안 정책 설정을 구성합니다.

  • ansible.netcommon.netconf

junos_security_zones

보안 영역을 구성합니다.

  • ansible.netcommon.netconf

junos_snmp_server

SNMP 서버 구성을 관리합니다.

  • ansible.netcommon.netconf

junos_static_routes

정적 경로를 구성합니다.

  • ansible.netcommon.netconf

junos_system

호스트 이름 및 DNS 구성을 관리합니다.

  • ansible.netcommon.netconf

junos_user

로컬 사용자 계정을 구성합니다.

  • ansible.netcommon.netconf

junos_vlans

VLAN을 구성합니다.

  • ansible.netcommon.netconf

junos_vrf

디바이스에서 VRF 정의를 관리합니다.

  • ansible.netcommon.netconf