Ansible을 사용하여 Junos 디바이스를 공장 기본 구성 설정으로 복원
요약 주니퍼 네트웍스 Ansible 모듈을 사용하여 Junos 디바이스를 초기 구성 설정으로 복원합니다.
Ansible을 사용하여 공장 기본 구성 설정을 복원하는 방법
주니퍼 네트웍스는 Junos 디바이스를 공장 기본 구성 설정으로 복원하는 데 사용할 수 있는 Ansible 모듈을 제공합니다. 표 1 에는 모듈이 요약되어 있습니다.
콘텐츠 세트 |
모듈 이름 |
---|---|
모듈을 사용하여 juniper.device.system
장치를 공장 기본 구성 설정으로 복원하려면 모듈의 인수를 action
로 'zeroize'
설정합니다. 디바이스를 공장 기본 구성 설정으로 복원한 후 디바이스에 액세스하려면 콘솔을 통해 루트로 로그인해야 합니다.
인수는 모듈이 action: "zeroize"
대상 호스트에서 작동 명령을 실행 request system zeroize
하도록 합니다. 이 명령은 지정된 라우팅 엔진의 모든 구성 정보를 제거하고, 디바이스의 모든 키 값을 재설정한 다음, 디바이스를 재부팅하고 공장 기본 구성 설정으로 재설정합니다. zeroize 작업은 디렉터리에서 파일의 링크를 해제하여 사용자 지정된 구성 및 로그 파일을 포함한 모든 데이터 파일을 제거합니다. 또한 SSH, 로컬 암호화, 로컬 인증, IPsec, RADIUS, TACACS+ 및 SNMP에 대한 모든 일반 텍스트 암호, 비밀 및 개인 키를 포함하여 시스템에서 모든 사용자 생성 파일을 제거합니다.
보다 자세한 정보는 아래를 참조하십시오.
다음 Ansible 플레이북은 모듈을 사용하여 juniper.device.system
action: "zeroize"
인벤토리 그룹의 각 호스트에 있는 모든 라우팅 엔진을 factory-default 구성 설정으로 재설정합니다.
--- - name: Restore Junos devices to factory-default configuration hosts: dc1 connection: local gather_facts: no tasks: - name: Restore all Routing Engines to factory-default configuration juniper.device.system: action: "zeroize"
기본적으로 action: "zeroize"
이 작업은 듀얼 라우팅 엔진 또는 Virtual Chassis 설정 시 모든 라우팅 엔진을 공장 기본 구성 설정으로 재설정합니다. 애플리케이션이 연결된 라우팅 엔진에서만 작업을 수행하도록 모듈에 지시할 수도 있습니다.
듀얼 라우팅 엔진 또는 Virtual Chassis 설정의 모든 라우팅 엔진에서 작업이 수행되어야 함을 명시적으로 나타내려면 기본값인 인수를 all_re: True
포함합니다.
tasks: - name: Restore all Routing Engines to factory-default configuration juniper.device.system: action: "zeroize" all_re: True
애플리케이션이 연결된 라우팅 엔진에서만 요청된 작업을 수행하려면 인수를 all_re: False
포함합니다.
tasks: - name: Restore connected Routing Engine to factory-default configuration juniper.device.system: action: "zeroize" all_re: False
모든 구성 및 로그 파일을 제거하는 것 외에도 모든 메모리와 미디어를 스크러빙하도록 모듈에 지시하려면 인수를 media: True
포함합니다. 인수를 media: True
포함하는 것은 운영 모드 명령을 실행하는 request system zeroize media
것과 같습니다. 이 media
옵션은 디스크, 플래시 메모리 장치, 이동식 USB 등을 포함하여 시스템에 연결된 모든 저장 장치를 스크러빙합니다. 스크러빙 프로세스의 지속 시간은 지워지는 미디어의 크기에 따라 다릅니다.
tasks: - name: Restore device to the factory-default configuration and scrub media juniper.device.system: action: "zeroize" media: True
예: Ansible을 사용하여 공장 기본 구성 설정 복원
이 예제는 juniper.device.system
모듈을 사용하여 Junos 디바이스를 초기 설정 구성 설정으로 복원하는 방법을 보여줍니다. 모든 유형의 연결을 사용하여 모듈을 실행할 수 있습니다. 그러나 장치를 재설정한 후에는 콘솔 서버 또는 CONSOLE 포트를 통해서만 루트로 다시 액세스할 수 있습니다. 이 예는 콘솔 서버를 통해 디바이스에 연결합니다.
요구 사항
이 예에서 사용되는 하드웨어 및 소프트웨어 구성 요소는 다음과 같습니다.
-
콜렉션이
juniper.device
설치된 Ansible 2.10 이상을 실행하는 구성 관리 서버 -
콘솔 서버를 통해 콘솔 포트에 액세스할 수 있고 적절한 권한으로 구성된 사용자 계정이 있는 Junos 디바이스
-
필수 호스트가 정의된 기존 Ansible 인벤토리 파일
개요
이 예제에서는 모듈을 사용하여 juniper.device.system
인벤토리 그룹의 각 호스트를 공장 기본 구성 설정으로 재설정하는 Ansible 플레이북을 생성합니다. 모듈의 action
인수 값은 호스트에서 실행할 작업을 정의합니다. 값을 로 "zeroize"
설정하면 action
각 호스트에서 명령이 실행된다request system zeroize
. 이 명령은 라우팅 엔진의 모든 구성 정보를 제거하고, 디바이스의 모든 키 값을 재설정한 다음, 디바이스를 재부팅하고 공장 기본 구성 설정으로 재설정합니다.
이 request system zeroize
명령은 디렉토리에서 파일의 링크를 해제하여 사용자 정의된 구성 및 로그 파일을 포함한 모든 데이터 파일을 제거합니다. 또한 이 명령은 SSH, 로컬 암호화, 로컬 인증, IPsec, RADIUS, TACACS+ 및 SNMP에 대한 모든 일반 텍스트 암호, 비밀 및 개인 키를 포함하여 모든 사용자 생성 파일을 시스템에서 제거합니다.
플레이북에서 모듈을 호출할 때 대화형 프롬프트를 사용하여 사용자가 디바이스를 재설정할 것인지 확인하는 것이 좋습니다. 사용자가 의도치 않게 플레이북을 실행하고 확인하지 않으면 실수로 디바이스를 공장 기본 구성으로 되돌리고 해당 디바이스가 필요한 모든 네트워크를 중단할 수 있습니다. 예방 조치로 이 플레이북은 대화형 프롬프트를 사용하여 사용자가 디바이스를 재설정할 의향이 있는지 확인하고 사용자가 모듈을 실행하기 위해 명령줄에 'yes'을 수동으로 입력하도록 요구합니다. Confirmation check
작업이 실패하면 Ansible 제어 노드는 해당 디바이스에 대한 재생의 다른 작업을 건너뜁니다.
플레이북은 juniper.device.system
확인 확인이 성공한 경우 모듈을 실행합니다. 및 port: 23
인수는 mode: "telnet"
모듈이 콘솔 서버의 포트 23에 텔넷하도록 지시합니다. password
매개 변수는 실행 중에 플레이북에서 묻는 메시지를 표시하는 변수 값으로 password
설정됩니다. 재부팅 후 디바이스에 액세스하려면 콘솔을 통해 루트로 로그인해야 합니다.
구성
Ansible 플레이북 생성 및 실행
단계별 절차
모듈을 사용하여 juniper.device.system
Junos 디바이스를 공장 기본 구성 설정으로 복원하는 플레이북을 생성하려면 다음 단계를 따르십시오.
플레이북에 대한 상용구와 모듈을 로컬에서 실행하는 이 플레이를 포함합니다.
--- - name: Restore Junos devices to factory-default configuration settings hosts: dc1_console connection: local gather_facts: no
모듈의 우발적인 실행을 방지하기 위해 대화형 프롬프트를 만듭니다.
vars_prompt: - name: reset_confirmation prompt: > This playbook resets hosts to factory-default configurations! Enter 'yes' to continue. default: "no" private: no
사용자 자격 증명이 다른 방법을 통해 아직 전달되지 않은 경우 변수에 대한
password
대화형 프롬프트를 만듭니다.- name: "device_password" prompt: "Device password" private: yes
연결 매개 변수를 정의합니다.
vars: password: "{{ device_password }}" mode: "telnet" port: 23
사용자의 의도를 확인하는 작업을 만듭니다.
tasks: - name: Confirmation check fail: msg="Playbook run confirmation failed" when: reset_confirmation != "yes"
디바이스의 모든 라우팅 엔진을 공장 기본 구성 설정으로 재설정하는 작업을 생성합니다.
- name: Restore all Routing Engines to factory-default configuration juniper.device.system: action: "zeroize" timeout: 120 register: result
(선택 사항) 응답을 인쇄하는 작업을 만듭니다.
- name: Print response ansible.builtin.debug: var: result
결과
Ansible 제어 노드에서 완료된 플레이북을 검토합니다. 플레이북에 의도한 코드가 표시되지 않으면 이 예제의 지침을 반복하여 플레이북을 수정합니다.
--- - name: Restore Junos devices to factory-default configuration settings hosts: dc1_console connection: local gather_facts: no vars_prompt: - name: reset_confirmation prompt: > This playbook resets hosts to factory-default configurations! Enter 'yes' to continue. default: "no" private: no - name: "device_password" prompt: "Device password" private: yes vars: password: "{{ device_password }}" mode: "telnet" port: 23 tasks: - name: Confirmation check fail: msg="Playbook run confirmation failed" when: reset_confirmation != "yes" - name: Restore all Routing Engines to factory-default configuration juniper.device.system: action: "zeroize" timeout: 120 register: result - name: Print response ansible.builtin.debug: var: result
플레이북 실행
플레이북을 실행하려면 다음을 수행합니다.
-
ansible-playbook
제어 노드에서 명령을 실행하고 플레이북 경로 및 원하는 옵션을 제공합니다.root@ansible-cn:~/ansible# ansible-playbook ansible-pb-junos-zeroize.yaml This playbook resets hosts to factory-default configurations! Enter 'yes' to continue. [no]: yes Device password: PLAY [Restore Junos devices to factory-default configuration settings] TASK [Confirmation check] ********************************************** skipping: [dc1a-console.example.net] TASK [Restore all Routing Engines to factory-default configuration] **** changed: [dc1a-console.example.net] TASK [Print response] ************************************************** ok: [dc1a-console.example.net] => { "result": { "action": "zeroize", "all_re": true, "changed": true, "failed": false, "media": false, "msg": "zeroize successfully initiated.", "other_re": false, "reboot": false "vmhost": false } } PLAY RECAP ************************************************************ dc1a-console.example.net : ok=2 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0