Ansible을 사용하여 Junos 디바이스에 소프트웨어 설치
요약 주니퍼 네트웍스 Ansible 모듈을 사용하여 Junos 디바이스에 소프트웨어를 설치합니다.
Ansible을 사용하여 소프트웨어 설치
주니퍼 네트웍스는 Junos 디바이스에 소프트웨어 이미지를 설치하거나 업그레이드할 수 있는 Ansible 모듈을 제공합니다. 표 1 에는 모듈이 요약되어 있습니다.
콘텐츠 세트 |
모듈 이름 |
---|---|
다음 섹션에서는 Ansible 모듈을 사용하여 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'
기본적으로 또는 pkg_set
인수를 local_package
포함하면 모듈은 Ansible 제어 노드에서 대상 Junos 디바이스(개별 디바이스 또는 Virtual Chassis 기본 디바이스)의 /var/tmp 디렉터리로 모든 소프트웨어 패키지를 복사합니다. 이미지를 다른 디렉터리에 local_package
복사하려면 인수를 remote_package
정의하고 대상 디렉터리를 지정합니다. 인수에 remote_package
파일 이름이 포함된 경우 및 remote_package
인수의 파일 이름은 local_package
동일해야 하며 그렇지 않으면 모듈에서 오류가 발생합니다.
소프트웨어 패키지가 대상 Junos 디바이스(개별 디바이스 또는 Virtual Chassis 기본 디바이스)에 이미 있는 경우, 모듈은 대상 디바이스의 no_copy: true
기존 소프트웨어 패키지에 대한 파일 경로를 지정하는 인수 remote_package
와 인수를 포함해야 합니다. remote_package
디렉터리를 지정하지 않으면 기본값은 /var/tmp입니다.
소프트웨어 패키지가 Ansible 제어 노드 또는 대상 디바이스 이외의 위치에 있는 경우 모듈은 인수를 remote_package
포함하고 소프트웨어 패키지의 위치를 지정해야 합니다. 의 remote_package
값은 대상 Junos 디바이스의 관점에서 본 URL입니다. 허용되는 URL 형식에 대한 자세한 내용은 Junos OS CLI 명령에서 파일 이름 및 URL 지정 형식을 참조하십시오.
설치 프로세스 개요
Ansible을 사용하여 Junos 디바이스에 소프트웨어 패키지를 설치하려면 모듈을 실행하고 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
모듈을 실행 software
하면 다음 작업이 수행됩니다.
소프트웨어 패키지가 대상 장치에 있으면 처음에 다운로드하든 모듈에서 복사하든 관계없이 모듈은 다음 작업을 수행합니다.
인수가 로 설정된 경우
validate
새 패키지에 대해 구성을 검증합니다true
.메모:기본적으로 모듈은
software
소프트웨어 패키지를 추가하기 위한 전제 조건으로 기존 구성에 대해 소프트웨어 패키지 또는 번들의 유효성을 검사하지 않습니다. 활성 구성이 새 소프트웨어 이미지에서 작동하도록 하려면 인수를validate
로true
설정합니다.으로 설정
false
되지 않는 한all_re
각 개별 라우팅 엔진에 패키지를 설치합니다.인수가 (으)로 설정되지 않는 한
reboot
업그레이드된 각 라우팅 엔진을 재부팅합니다false
.
module을 software
사용하면 module 인수를 포함하여 설치 진행률을 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의 요청 태그를 검색하십시오.
해당 RPC에 대해 대상 Junos 디바이스에서 지원되는 설치 옵션만 포함해야 합니다.
다음 플레이북에서 모듈은 software
대상 호스트에 새 소프트웨어 이미지를 설치합니다. 이 모듈에는 인수가 kwargs
포함되어 있습니다 unlink: true
. 업그레이드에 성공한 후 디렉터리에서 소프트웨어 패키지를 제거하는 이 인수는 RPC에 <unlink/>
<request-package-add>
옵션을 포함하는 것과 같습니다.
--- - 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(in-service software upgrade) 또는 NSSU(nonstop software upgrade) 수행을 지원합니다. 통합 ISSU 및 NSSU 기능에 대한 자세한 내용은 해당 제품의 소프트웨어 설명서를 참조하십시오.
통합 ISSU 기능을 사용하면 컨트롤 플레인의 중단 없이 트래픽 중단을 최소화하면서 서로 다른 두 개의 Junos OS 릴리스 간에 업그레이드할 수 있습니다. 통합 서비스 중인 소프트웨어 업그레이드를 수행하려면 모듈에 인수가 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 소프트웨어를 업그레이드할 수 있습니다. 논스톱 소프트웨어 업그레이드를 수행하려면 모듈에 인수가 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
릴리스 1.0.3부터 혼합되지 않은 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 디바이스에 소프트웨어 이미지를 설치합니다.
요구 사항
이 예에서 사용되는 하드웨어 및 소프트웨어 구성 요소는 다음과 같습니다.
-
콜렉션이
juniper.device
설치된 Ansible 2.10 이상을 실행하는 구성 관리 서버 -
NETCONF가 활성화되고 적절한 권한으로 구성된 사용자 계정이 있는 Junos 디바이스
-
Ansible 제어 노드 및 Junos 디바이스에서 적절한 사용자에 대해 구성된 SSH 퍼블릭/프라이빗 키 쌍
-
필수 호스트가 정의된 기존 Ansible 인벤토리 파일
개요
이 예시는 모듈을 사용하여 juniper.device.software
지정된 인벤토리 그룹의 호스트에서 Junos OS를 업그레이드하는 Ansible 플레이북을 보여줍니다. 이 예에서 소프트웨어 이미지는 Ansible 제어 노드에 상주하며, 모듈은 이미지를 설치하기 전에 대상 디바이스에 복사합니다. 모듈은 인수를 host
명시적으로 정의하지 않으므로 모듈은 기본 호스트인 {{ inventory_hostname }}
.
이 플레이북에는 Check NETCONF connectivity
기본 NETCONF 포트 830을 사용하여 Junos 디바이스로 NETCONF 세션을 설정하기 위해 모듈을 활용하는 ansible.builtin.wait_for
작업이 포함되어 있습니다. 제어 노드가 플레이북 실행 중 디바이스와 NETCONF 세션을 설정하지 못하면 해당 디바이스에 대한 플레이의 나머지 작업을 건너뜁니다.
Install Junos OS package
작업은 NETCONF 검사가 software
성공한 경우 모듈을 실행합니다. 인수는 version
Junos 디바이스의 명령에 의해 show version
보고되는 대로 원하는 Junos OS 버전을 정의합니다. 플레이북을 실행하는 동안 모듈은 먼저 요청된 버전이 디바이스에 아직 설치되어 있지 않은지 확인합니다. 요청된 버전이 현재 설치된 버전과 다른 경우 모듈은 요청된 버전을 설치합니다.
인수는 local_package
Ansible 제어 노드에서 Junos OS 소프트웨어 패키지의 경로를 정의합니다. 설치하는 동안 모듈은 대상 디바이스에서 스토리지 정리 작업을 수행하고, 소프트웨어 이미지를 디바이스의 /var/tmp 디렉토리에 복사하고, 파일의 체크섬을 확인하고, 활성 구성에 대해 새 소프트웨어를 검증한 다음, 대상 호스트의 각 라우팅 엔진에 소프트웨어를 설치합니다. 기본적으로 모듈은 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'
의미
로그 파일 내용은 이미지가 대상 디바이스의 두 라우팅 엔진 모두에 성공적으로 복사 및 설치되었음을 나타냅니다.