Ansible 모듈을 juniper.device.software 사용하여 Junos 디바이스에 소프트웨어 설치
Ansible 모듈을 사용하여 juniper.device.software Junos OS를 실행하는 디바이스 또는 Junos OS Evolved를 실행하는 디바이스에 소프트웨어를 설치할 수 있습니다.
Ansible을 사용하여 소프트웨어 설치
주니퍼 네트웍스는 Junos 디바이스에 소프트웨어 이미지를 설치할 수 있는 Ansible 모듈을 제공합니다. 표 1은 모듈의 개요를 보여줍니다. 컬렉션에서 juniper.device 지정된 모듈 세트를 이미 사용하고 있는 경우 해당 세트에 대한 모듈을 사용합니다.
|
컬렉션 |
모듈 세트 |
모듈 이름 |
|---|---|---|
|
|
||
|
|
다음 섹션에서는 모듈을 juniper.device.software 사용하여 Junos 디바이스에 소프트웨어 패키지를 설치하는 방법에 대해 설명합니다. 이 섹션에서는 소프트웨어 이미지 위치를 지정하는 방법과 일반적인 소프트웨어 설치 프로세스 및 옵션에 대해 간략하게 설명합니다. 또한 이 섹션에서는 이러한 기능을 지원하는 디바이스에서 VM 호스트 업그레이드, 통합 ISSU(In-Service Software Upgrade) 또는 NSSU(Nonstop Software Upgrade)와 같은 보다 전문화된 업그레이드 시나리오를 수행하는 방법에 대해서도 설명합니다.
소프트웨어 이미지 위치를 지정하는 방법
모듈을 juniper.device.software 사용하여 Junos 디바이스에 소프트웨어를 설치할 때 소프트웨어 패키지를 Ansible 제어 노드에 다운로드할 수 있습니다. 모듈은 기본적으로 설치를 수행하기 전에 패키지를 대상 장치에 복사합니다. 혼합 Virtual Chassis 환경의 경우 소프트웨어 패키지가 Ansible 제어 노드에 있어야 합니다. 독립형 디바이스 또는 혼합되지 않은 Virtual Chassis 환경의 경우, 대상 Junos 디바이스에 이미 상주하거나 대상 디바이스에서 도달할 수 있는 URL에 상주하는 소프트웨어 이미지를 설치하도록 모듈에 지시할 수도 있습니다.
표 2 는 소프트웨어 패키지 위치에 따라 설정해야 하는 모듈 인수를 간략하게 보여줍니다. 모듈은 항상 , pkg_set또는 remote_package 인수를 포함local_package해야 합니다. no_copy 인수는 기본적으로 로 설정되며false, 이는 모듈이 Ansible 제어 노드의 지정된 위치에서 대상 디바이스로 소프트웨어 패키지를 복사하도록 지시합니다.
|
소프트웨어 패키지 위치 |
|
|
|
|---|---|---|---|
|
Ansible 제어 노드 |
생략 또는 다음으로 설정 |
독립형 디바이스 또는 혼합되지 않은 Virtual Chassis 환경의 경우: 로컬 제어 노드에 있는 소프트웨어 패키지의 파일 이름을 포함한 파일 경로로 설정합니다 |
(선택 사항) 소프트웨어 패키지가 복사되는 대상 디바이스의 파일 경로입니다. 기본 디렉터리는 /var/tmp입니다. 파일 이름을 포함하는 경우 |
|
혼합 Virtual Chassis 환경의 경우: 로컬 제어 노드에 있는 하나 이상의 소프트웨어 패키지에 대한 파일 이름을 포함하여 파일 경로 목록으로 설정합니다 |
– |
||
|
원격 위치 |
– |
– |
소프트웨어 패키지가 설치된 대상 Junos 디바이스의 관점에서 본 URL입니다. |
|
대상 디바이스 |
다음으로 설정 |
– |
소프트웨어 패키지가 이미 있어야 하는 대상 디바이스의 파일 경로입니다. 기본 디렉터리는 /var/tmp입니다. |
소프트웨어 패키지가 Ansible 제어 노드에 있는 경우 설치에 적합한 인수를 포함합니다.
-
local_package- 독립형 Junos 디바이스 또는 혼합되지 않은 Virtual Chassis의 멤버에 소프트웨어를 설치합니다. 인수 값은 소프트웨어 이미지에 대한 절대 경로 또는 상대 경로를 지정하는 단일 문자열입니다. -
pkg_set- 혼합 Virtual Chassis의 멤버에게 소프트웨어를 설치합니다. 인수 값은 다양한 Virtual Chassis 멤버에 대해 소프트웨어 이미지의 절대 또는 상대 파일 경로를 특별한 순서 없이 지정하는 문자열 목록입니다.예를 들면 다음과 같습니다.
pkg_set: - 'software/jinstall-qfx-5-13.2X51-D35.3-domestic-signed.tgz' - 'software/jinstall-ex-4300-13.2X51-D35.3-domestic-signed.tgz'
기본적으로 or pkg_set 인수를 포함 local_package 하면 모듈은 Ansible 제어 노드의 모든 소프트웨어 패키지를 대상 Junos 디바이스(개별 디바이스 또는 Virtual Chassis 기본 디바이스)의 /var/tmp 디렉터리로 복사합니다. 이미지를 다른 디렉터리에 복사 local_package 하려면 인수를 정의 remote_package 하고 대상 디렉터리를 지정합니다. 인수에 remote_package 파일 이름이 포함된 경우 및 local_package remote_package 인수의 파일 이름이 동일해야 하며 그렇지 않으면 모듈에서 오류가 발생합니다.
소프트웨어 패키지가 대상 Junos 디바이스(개별 디바이스 또는 Virtual Chassis 기본 디바이스)에 이미 있는 경우, 모듈은 인수와 인수를 포함 no_copy: true 해야 합니다. remote_package remote_package 인수는 대상 디바이스의 기존 소프트웨어 패키지에 대한 파일 경로를 지정합니다. remote_package 디렉터리를 지정하지 않으면 기본값은 /var/tmp입니다.
소프트웨어 패키지가 Ansible 제어 노드 또는 대상 디바이스가 아닌 다른 위치에 있는 경우 모듈은 인수를 포함 remote_package 하고 소프트웨어 패키지의 위치를 지정해야 합니다. 의 remote_package 값은 대상 Junos 디바이스의 관점에서 바라본 URL입니다. 허용되는 URL 형식에 대한 정보는 Junos OS CLI 명령에서 파일 이름 및 URL 지정을 위한 형식을 참조하십시오.
설치 프로세스 개요
Ansible을 사용하여 Junos 디바이스에 소프트웨어 패키지를 설치하려면 모듈을 juniper.device.software 실행하고 필요한 인수를 제공합니다. 예를 들면 다음과 같습니다.
---
- name: Perform a Junos OS software upgrade
hosts: dc1
connection: local
gather_facts: no
tasks:
- name: Upgrade Junos OS
juniper.device.software:
local_package: "software/jinstall-ppc-17.3R1.10-signed.tgz"
no_copy: false
validate: true
register: response
- name: Print the response
ansible.builtin.debug:
var: response
모듈을 juniper.device.software 실행하면 다음 작업을 수행합니다.
소프트웨어 패키지가 대상 디바이스에 도착하면, 처음에 다운로드했든 모듈에서 복사했든 관계없이 모듈은 다음 작업을 수행합니다.
-
인수가 로 설정되지 않는 한
validate새 패키지에 대해 구성을 검증합니다.false참고: 릴리스 2.0.4부터juniper.device매개 변수는validatetrue기본적으로 입니다. 이전 릴리스의 기본값은false입니다. -
로
false설정되지 않는 한all_re각 개별 라우팅 엔진에 패키지를 설치합니다. -
인수가 로 설정되지 않는 한
reboot업그레이드된 각 라우팅 엔진을 재부팅합니다.false
software 이 모듈을 사용하면 인수를 포함하여 logfile 설치 진행률을 모듈 기록할 수 있습니다. 기본적으로 심각도 수준 WARNING 이상의 메시지만 기록됩니다. 일반 설치 프로세스에 대한 메시지를 기록하는 데 필요한 심각도 수준 INFO 이상의 메시지를 기록하려면 또는 --verbose 명령줄 옵션으로 -v 플레이북을 실행합니다.
시간 제한 값 지정 방법
이 모듈은 juniper.device.software NETCONF 세션을 통해 작업을 수행합니다. NETCONF RPC의 시간 초과 기본 시간은 30초입니다. 설치 프로세스 중에 특정 작업은 다음과 같이 RPC 시간 제한 간격을 증가시킵니다.
-
디바이스에 패키지 복사 및 설치 - 1800초(30분)
-
체크섬 계산—300초(5분)
-
스토리지 정리 수행 - 300초(5분)
경우에 따라 설치 프로세스, 체크섬 계산 또는 스토리지 정리가 이러한 시간 간격을 초과할 수 있습니다. , checksum_timeout, 및 cleanfs_timeout 인수를 모듈의 인수 목록에 필요한 시간(초)으로 설정install_timeout하여 이러한 작업의 시간 제한 값을 변경할 수 있습니다. 예를 들면 다음과 같습니다.
- name: Upgrade Junos OS
juniper.device.software:
local_package: "software/jinstall-ppc-17.3R1.10-signed.tgz"
validate: true
install_timeout: 2000
checksum_timeout: 420
cleanfs_timeout: 600
동등한 모듈 인수가 없는 설치 옵션을 지정하는 방법
이 모듈을 juniper.device.software 사용하여 디바이스에 소프트웨어를 설치할 때 모듈은 포함된 설치 인수에 대해 적절한 RPC를 호출합니다. 예를 들어, 이 모듈 <request-package-add> 은 표준 Junos OS 설치를 위한 RPC, <request-vmhost-package-add> VM 호스트 업그레이드를 위한 RPC, <request-package-in-service-upgrade> 통합 ISSU 시나리오를 위한 RPC 등을 호출합니다.
이 모듈은 많은 설치 옵션( validate 예: 옵션)에 대한 명시적 인수를 지원합니다. 이 모듈은 또한 인수를 지원합니다. kwargs 인수를 사용하면 RPC가 지원하는 추가 옵션을 포함할 수 있습니다. kwargs 인수는 추가로 지원되는 옵션의 키/값 쌍 사전을 사용합니다.
모듈에서 지원하는 현재 옵션 목록은 모듈에 대한 API 참조 문서를 참조하세요. 특정 RPC에 대해 사용 가능한 모든 옵션 목록은 해당 명령에 대한 설명서를 참조하거나 Junos XML API 탐색기에서 RPC의 요청 태그를 검색하십시오.
대상 Junos 디바이스가 해당 RPC에 대해 지원하는 설치 옵션만 포함해야 합니다.
다음 플레이북에서 모듈은 software 대상 호스트에 새 소프트웨어 이미지를 설치합니다. 이 모듈에는 kwargs 인수가 포함되어 있습니다.unlink: true 업그레이드에 성공한 후 디렉터리에서 소프트웨어 패키지를 제거하는 이 인수는 RPC에 <request-package-add> 옵션을 포함하는 <unlink/> 것과 같습니다.
---
- name: Perform a Junos OS software upgrade
hosts: router1
connection: local
gather_facts: no
tasks:
- name: Upgrade Junos OS
juniper.device.software:
local_package: "software/jinstall-ppc-17.3R1.10-signed.tgz"
kwargs:
unlink: true
register: response
- name: Print the response
ansible.builtin.debug:
var: response
VM 호스트 업그레이드를 수행하는 방법
VM 호스트를 지원하는 라우팅 엔진이 있는 디바이스에서 Junos OS는 Linux 기반 호스트(VM 호스트)를 통해 가상 머신(VM)으로 실행됩니다. VM 호스트를 업그레이드하려면 VM 호스트 설치 패키지(junos-vmhost-install-x.tgz)가 필요하며 호스트 OS 및 호환되는 Junos OS를 업그레이드합니다. CLI에서는 RPC에 해당하는 운영 모드 명령을 사용하여 request vmhost software add 업그레이드를 수행합니다.<request-vmhost-package-add>
이 모듈은 juniper.device.software VM 호스트 업그레이드를 수행하기 위한 인수를 지원합니다vmhost: true. 인수가 있으면 모듈은 RPC를 사용하여 설치를 수행합니다.<request-vmhost-package-add>
다음 플레이북은 지정된 디바이스에서 Junos OS와 호스트 OS를 업그레이드하고 재부팅합니다.
---
- name: Upgrade VM Hosts
hosts: vm_hosts
connection: local
gather_facts: no
tasks:
- name: Perform a VM host upgrade
juniper.device.software:
local_package: "junos-vmhost-install-qfx-x86-64-18.1R1.9.tgz"
vmhost: true
register: response
- name: Print the response
ansible.builtin.debug:
var: response
통합 ISSU 또는 NSSU를 수행하는 방법
juniper.device.software 이 모듈은 기능을 지원하고 필요한 요구 사항을 충족하는 디바이스에서 통합 ISSU 또는 NSSU 수행을 지원합니다. 통합 ISSU 및 NSSU 기능에 대한 자세한 내용은 해당 제품의 소프트웨어 설명서를 참조하십시오.
통합 ISSU 기능을 사용하면 컨트롤 플레인의 중단 없이 트래픽 중단을 최소화하면서 서로 다른 두 개의 Junos OS 릴리스 간에 업그레이드할 수 있습니다. 통합 ISSU를 수행하려면 모듈에 software 인수가 포함 issu: true 되어야 합니다. 예를 들면 다음과 같습니다.
---
- name: Perform a Junos OS software upgrade
hosts: mx1
connection: local
gather_facts: no
tasks:
- name: Perform a unified ISSU
juniper.device.software:
local_package: "junos-install-mx-x86-64-17.2R1.13.tgz"
issu: true
register: response
- name: Print the response
ansible.builtin.debug:
var: response
NSSU 기능을 사용하면 네트워크 트래픽 중단을 최소화하면서 중복 라우팅 엔진이 있는 스위치 또는 Virtual Chassis에서 실행되는 Junos OS 소프트웨어를 업그레이드할 수 있습니다. NSSU를 수행하려면 모듈에 software 인수가 포함되어야 합니다. nssu: true 예를 들면 다음과 같습니다.
---
- name: Perform a Junos OS software upgrade
hosts: ex1
connection: local
gather_facts: no
tasks:
- name: Perform an NSSU
juniper.device.software:
local_package: "jinstall-ex-4300-17.3R1.10-signed.tgz"
nssu: true
register: response
- name: Print the response
ansible.builtin.debug:
var: response
EX 시리즈 Virtual Chassis 멤버에 소프트웨어를 설치하는 방법
일반적으로 혼합되지 않은 EX 시리즈 Virtual Chassis를 업그레이드할 때는 설치 프로세스 개요 에 설명된 설치 프로세스를 따라 전체 Virtual Chassis를 업그레이드합니다. 그러나 Virtual Chassis의 특정 멤버 스위치에 소프트웨어를 설치해야 하는 경우가 있을 수 있습니다. 이 juniper.device.software 모듈을 사용하면 혼합되지 않은 EX 시리즈 Virtual Chassis의 개별 멤버 스위치에 소프트웨어 패키지를 설치할 수 있습니다.
특정 멤버에 소프트웨어를 설치하려면 인수를 포함 member_id 하고 멤버 ID를 지정하는 문자열 목록을 정의합니다. 시스템은 소프트웨어 패키지를 Virtual Chassis 기본 디바이스에서 지정된 멤버로 설치합니다.
다음 Ansible 플레이북은 EX 시리즈 Virtual Chassis의 멤버 0과 멤버 1의 소프트웨어를 업그레이드합니다.
---
- name: Upgrade specific EX VC members
hosts: ex_vc
connection: local
gather_facts: no
vars:
OS_version: "23.2R1.13"
OS_package: "junos-install-ex-x86-64-23.2R1.13.tgz"
pkg_dir: "software"
log_dir: /var/log/
tasks:
- name: Check NETCONF connectivity
ansible.builtin.wait_for:
host: "{{ inventory_hostname }}"
port: 830
timeout: 5
- name: Install package on EX VC members
juniper.device.software:
version: "{{ OS_version }}"
local_package: "{{ pkg_dir }}/{{ OS_package }}"
member_id: ["0","1"]
logfile: "{{ log_dir }}/software.log"
예: Ansible을 사용하여 소프트웨어 설치
이 예에서는 모듈을 juniper.device.software 사용하여 Junos OS를 실행하는 디바이스에 소프트웨어 이미지를 설치합니다.
요구 사항
이 예에서 사용되는 하드웨어 및 소프트웨어 구성 요소는 다음과 같습니다.
-
컬렉션이
juniper.device설치된 상태에서 Ansible 2.17 이상을 실행하는 구성 관리 서버 -
NETCONF가 활성화되고 적절한 권한으로 구성된 사용자 계정이 있는 Junos 디바이스
-
Ansible 제어 노드 및 Junos 디바이스에서 적절한 사용자에 대해 구성된 SSH 공개/비공개 키 쌍
-
필수 호스트가 정의된 기존 Ansible 인벤토리 파일
개요
이 예에서는 이 모듈을 juniper.device.software 사용하여 지정된 인벤토리 그룹의 호스트에서 Junos OS를 업그레이드하는 Ansible 플레이북을 보여줍니다. 이 예에서 소프트웨어 이미지는 Ansible 제어 노드에 상주하며 모듈은 이미지를 설치하기 전에 대상 디바이스에 복사합니다. 이 모듈은 인수를 명시적으로 정의 host 하지 않으므로 모듈은 기본 호스트인 {{ inventory_hostname }}에서 작동합니다.
이 플레이북에는 기본 NETCONF 포트 830을 사용하여 Junos 디바이스와의 NETCONF 세션을 설정하기 위해 모듈을 ansible.builtin.wait_for 활용하는 작업이 포함되어 Check NETCONF connectivity 있습니다. 제어 노드가 플레이북 실행 중에 디바이스와 NETCONF 세션을 설정하는 데 실패하면 해당 디바이스에 대한 재생의 나머지 작업을 건너뜁니다.
Install Junos OS package NETCONF 검사가 성공한 경우 이 작업은 모듈을 juniper.device.software 실행합니다. version 인수는 Junos 디바이스의 명령에 의해 show version 보고되는 대로 원하는 Junos OS 버전을 정의합니다. 플레이북을 실행하는 동안 모듈은 먼저 요청된 버전이 디바이스에 아직 설치되어 있지 않은지 확인합니다. 요청된 버전이 현재 설치된 버전과 다른 경우 모듈은 요청된 버전을 설치합니다.
local_package 이 인수는 Ansible 제어 노드에서 Junos OS 소프트웨어 패키지의 경로를 정의합니다. 설치하는 동안 모듈은 다음을 수행합니다.
-
대상 디바이스에서 스토리지 정리 작업을 수행합니다
-
소프트웨어 이미지를 디바이스의 /var/tmp 디렉터리에 복사합니다
-
파일의 체크섬을 확인합니다.
-
활성 구성에 대해 새 소프트웨어를 검증합니다
-
대상 호스트의 각 라우팅 엔진에 소프트웨어를 설치합니다
기본적으로 모듈은 juniper.device.software 설치가 완료된 후 각 라우팅 엔진을 재부팅하지만, 이 작업은 명확성을 위해 명시적으로 설정 reboot: true 됩니다.
작업은 변수에 response 모듈 결과를 저장하고 하나의 처리기에 알립니다. 검사 모드를 사용하여 플레이북을 실행하지 않으면 핸들러는 wait_reboot 디바이스가 다시 온라인 상태인지 확인하기 위해 디바이스와의 세션 설정을 시도합니다. 변수는 wait_time 제어 노드가 디바이스와의 재연결을 시도하는 시간을 정의합니다.
이 예에는 설치 진행률을 기록하는 매개 변수가 포함되어 logfile 있습니다. 이 로그는 설치가 실패할 경우 디버깅을 하고 디바이스에 설치된 날짜 및 시간을 기록하는 데 중요합니다. 플레이북을 실행하는 사용자에게는 지정된 로그 파일에 쓸 수 있는 권한이 있어야 합니다. 기본적으로 심각도 수준 WARNING 이상의 메시지만 기록됩니다. 이 예에서는 심각도 수준 INFO 이상의 메시지를 기록하여 설치를 모니터링하는 옵션과 함께 -v 플레이북을 실행합니다.
구성
Ansible 플레이북 만들기
모듈을 juniper.device.software 사용하여 Junos 디바이스에 소프트웨어 이미지를 설치하는 플레이북을 생성하려면 다음을 수행합니다.
-
모듈을 로컬에서 실행하는 플레이북과 이 플레이에 대한 상용구를 포함합니다.
--- - name: Install Junos OS hosts: mx1 connection: local gather_facts: no
-
이 예에서는 원하는 Junos OS 버전 및 새 이미지에 대한 경로를 포함하는 필요한 변수를 정의하거나 가져옵니다.
vars: OS_version: "23.4R1.9" OS_package: "junos-install-mx-x86-64-23.4R1.9.tgz" pkg_dir: "software" log_dir: "{{ playbook_dir }}" netconf_port: 830 wait_time: 3600 -
(선택 사항) NETCONF 연결을 확인하는 작업을 생성합니다.
tasks: - name: Check NETCONF connectivity ansible.builtin.wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: 5 -
디바이스에 Junos OS 패키지를 설치하고 핸들러에 알리는 작업을 생성합니다.
- name: Install Junos OS package juniper.device.software: version: "{{ OS_version }}" local_package: "{{ pkg_dir }}/{{ OS_package }}" reboot: true validate: true logfile: "{{ log_dir }}/software.log" register: response notify: - wait_reboot -
(선택 사항) 모듈 응답을 인쇄할 작업을 생성합니다.
- name: Print response ansible.builtin.debug: var: response -
재부팅 후 디바이스가 다시 온라인 상태가 되는지 확인하는 처리기를 만듭니다.
핸들러 이름은 설치 작업에서 참조되는 이름과 동일해야 합니다.
handlers: - name: wait_reboot ansible.builtin.wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: "{{ wait_time }}" when: not response.check_mode
결과
Ansible 제어 노드에서 완료된 플레이북을 검토합니다. 플레이북에 의도한 코드가 표시되지 않으면 이 예제의 지침을 반복하여 플레이북을 수정합니다.
---
- name: Install Junos OS
hosts: mx1
connection: local
gather_facts: no
vars:
OS_version: "23.4R1.9"
OS_package: "junos-install-mx-x86-64-23.4R1.9.tgz"
pkg_dir: "software"
log_dir: "{{ playbook_dir }}"
netconf_port: 830
wait_time: 3600
tasks:
- name: Check NETCONF connectivity
ansible.builtin.wait_for:
host: "{{ inventory_hostname }}"
port: "{{ netconf_port }}"
timeout: 5
- name: Install Junos OS package
juniper.device.software:
version: "{{ OS_version }}"
local_package: "{{ pkg_dir }}/{{ OS_package }}"
reboot: true
validate: true
logfile: "{{ log_dir }}/software.log"
register: response
notify:
- wait_reboot
- name: Print response
ansible.builtin.debug:
var: response
handlers:
- name: wait_reboot
ansible.builtin.wait_for:
host: "{{ inventory_hostname }}"
port: "{{ netconf_port }}"
timeout: "{{ wait_time }}"
when: not response.check_mode
플레이북 실행
플레이북을 실행하려면 다음을 수행합니다.
-
제어 노드에서 명령을 실행
ansible-playbook하고 플레이북 경로와 필요한 옵션을 제공합니다.user@ansible-cn:~/ansible$ ansible-playbook -v ansible-pb-junos-install-os.yaml Using /etc/ansible/ansible.cfg as config file PLAY [Install Junos OS] **************************************************** TASK [Check NETCONF connectivity] ****************************************** ok: [mx1a.example.com] => {"changed": false, "elapsed": 0, "match_groupdict": {}, "match_groups": [], "path": null, "port": 830, "search_regex": null, "state": "started"} TASK [Install Junos OS package] ******************************************** changed: [mx1a.example.com] => {"changed": true, "check_mode": false, "msg": "Package /home/user/ansible/software/junos-install-mx-x86-64-23.4R1.9.tgz successfully installed. Response from device is: \nVerified junos-install-mx-x86-64-23.4R1.9 signed by PackageProductionECP256_2023 method ECDSA256+SHA256\n [...output truncated...] NOTICE: 'pending' set will be activated at next reboot... Reboot successfully initiated. Reboot message: Shutdown NOW! [pid 79385]"} TASK [Print response] ****************************************************** ok: [mx1a.example.com] => { "response": { "changed": true, "check_mode": false, "failed": false, "msg": "Package /home/user/ansible/software/junos-install-mx-x86-64-23.4R1.9.tgz successfully installed. Response from device is: \nVerified junos-install-mx-x86-64-23.4R1.9 signed by PackageProductionECP256_2023 method ECDSA256+SHA256\nVerified auto-snapshot signed by PackageProductionECP256_2023 method ECDSA256+SHA256\n [...output truncated...] NOTICE: 'pending' set will be activated at next reboot... Reboot successfully initiated. Reboot message: Shutdown NOW! [pid 79385]" } } RUNNING HANDLER [wait_reboot] ********************************************** ok: [mx1a.example.com] => {"changed": false, "elapsed": 250, "match_groupdict": {}, "match_groups": [], "path": null, "port": 830, "search_regex": null, "state": "started"} PLAY RECAP ***************************************************************** mx1a.example.com : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
검증
설치 확인
목적
소프트웨어 설치가 성공했는지 확인합니다.
작업
플레이북 출력에는 실패한 작업이 표시되어야 합니다. 그러나 설치에 대한 자세한 내용은 플레이북에 정의된 로그 파일의 내용을 검토할 수도 있습니다. 샘플 로그 파일 출력은 다음과 같습니다. 간결성을 위해 일부 출력이 생략되었습니다.
2024-08-23 22:20:49,455 - ncclient.transport.ssh - INFO - Connected (version 2.0, client OpenSSH_7.9) 2024-08-23 22:20:52,950 - ncclient.transport.ssh - INFO - Authentication (publickey) successful! ... 2024-08-23 22:21:00,770 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] computing checksum on local package: /home/user/ansible/software/junos-install-mx-x86-64-23.4R1.9.tgz 2024-08-23 22:21:08,070 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] cleaning filesystem ... ... 2024-08-23 22:21:08,329 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] before copy, computing checksum on remote package: /var/tmp/junos-install-mx-x86-64-23.4R1.9.tgz ... 2024-08-23 22:21:08,491 - paramiko.transport - INFO - Connected (version 2.0, client OpenSSH_7.9) 2024-08-23 22:21:08,958 - paramiko.transport - INFO - Authentication (publickey) successful! 2024-08-23 22:21:16,846 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 363528192 / 3635202890 (10%) 2024-08-23 22:21:24,405 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 727056384 / 3635202890 (20%) 2024-08-23 22:21:31,966 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 1090568192 / 3635202890 (30%) 2024-08-23 22:21:39,652 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 1454096384 / 3635202890 (40%) 2024-08-23 22:21:47,631 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 1817608192 / 3635202890 (50%) 2024-08-23 22:21:55,343 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 2181136384 / 3635202890 (60%) 2024-08-23 22:22:02,878 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 2544648192 / 3635202890 (70%) 2024-08-23 22:22:11,395 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 2908176384 / 3635202890 (80%) 2024-08-23 22:22:19,949 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 3271688192 / 3635202890 (90%) 2024-08-23 22:22:27,522 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 3635202890 / 3635202890 (100%) 2024-08-23 22:22:27,533 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] after copy, computing checksum on remote package: /var/tmp/junos-install-mx-x86-64-23.4R1.9.tgz ... 2024-08-23 22:22:44,891 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] checksum check passed. 2024-08-23 22:22:44,892 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] validating software against current config, please be patient ... ... 2024-08-23 22:27:52,538 - ncclient.transport.ssh - INFO - [host mx1a.example.com session-id 27526] Received message from host 2024-08-23 22:27:52,542 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] software validate package-result: 0 Output: Verified junos-install-mx-x86-64-23.4R1.9 signed by PackageProductionECP256_2023 method ECDSA256+SHA256 Adding junos-mx-x86-64-23.4R1.9 ... ... Validating against /config/juniper.conf.gz mgd: commit complete Validation succeeded 2024-08-23 22:27:52,542 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] installing software on RE0 ... please be patient ... ... 2024-08-23 22:30:57,510 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] software pkgadd package-result: 0 Output: Verified junos-install-mx-x86-64-23.4R1.9 signed by PackageProductionECP256_2023 method ECDSA256+SHA256 ... NOTICE: 'pending' set will be activated at next reboot... 2024-08-23 22:30:57,510 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] installing software on RE1 ... please be patient ... ... 2024-08-23 22:34:30,228 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] software pkgadd package-result: 0 Output: Pushing /var/tmp/junos-install-mx-x86-64-23.4R1.9.tgz to re1:/var/tmp/junos-install-mx-x86-64-23.4R1.9.tgz Verified junos-install-mx-x86-64-23.4R1.9 signed by PackageProductionECP256_2023 method ECDSA256+SHA256 ... NOTICE: 'pending' set will be activated at next reboot... ... 2024-08-23 22:34:30,732 - ncclient.operations.rpc - INFO - [host mx1a.example.com session-id 27526] Requesting 'CloseSession'
의미
로그 파일 내용은 플레이북이 대상 디바이스의 두 라우팅 엔진에 이미지를 성공적으로 복사하고 설치했음을 나타냅니다.
변경 내역 표
기능 지원은 사용 중인 플랫폼과 릴리스에 따라 결정됩니다. 기능 탐색기를 사용하여 플랫폼에서 기능이 지원되는지 확인합니다.
juniper.device 매개 변수는 validate true기본적으로 입니다. 이전 릴리스의 기본값은 false입니다.