使用 juniper.device.system Ansible 模块将 Junos 设备恢复到出厂默认状态
使用 juniper.device.system Ansible 模块将运行 Junos OS 的设备或运行 Junos OS 演化版的设备恢复到其出厂默认配置设置。
瞻博网络提供 Ansible 模块,您可以使用这些模块将 Junos 设备恢复到出厂默认配置设置。 表 1 概述了模块。如果您已经在使用集合中的 juniper.device 一组给定模块,请使用该集的模块。
|
收藏 |
模块集 |
模块名称 |
|---|---|---|
|
|
||
|
|
juniper.device.junos_config (zeroize 选项) |
本主题讨论如何使用该 juniper.device.system 模块将 Junos 设备重置为出厂默认状态。有关使用模块重置 juniper.device.junos_config 设备的信息,请参阅 将设备恢复到出厂默认配置设置。
如何恢复出厂默认配置设置
要使用该 juniper.device.system 模块将设备恢复到出厂默认配置设置,请将模块的 action 参数 'zeroize'设置为 。将设备恢复到出厂默认状态后,您必须以 root 身份通过控制台登录才能访问该设备。
该 action: "zeroize" 参数使模块在目标主机上执行 <request-system-zeroize> RPC。此命令将移除指定路由引擎上的所有配置信息,重置设备上的所有键值,然后重新启动设备并将其重置为出厂默认配置设置。归零操作通过将文件与目录中的链接断开来删除所有数据文件,包括自定义配置和日志文件。它还会从系统中移除所有用户创建的文件,包括用于 SSH、本地加密、本地身份验证、IPsec、RADIUS、TACACS+ 和 SNMP 的所有纯文本密码、机密和私钥。
有关相应操作命令的更多信息,请参阅:
以下 Ansible 操作指南将该 juniper.device.system 模块与 action: "zeroize".该模块会将清单组中每台主机上的所有路由引擎重置为出厂默认配置设置。
---
- name: Restore Junos devices to factory-default state
hosts: dc1
connection: local
gather_facts: no
tasks:
- name: Restore all Routing Engines to factory-default state
juniper.device.system:
action: "zeroize"
默认情况下,该 action: "zeroize" 操作会将双路由引擎设置中的所有路由引擎重置为出厂默认配置设置。Junos OS 演化版始终将两个路由引擎归零。但是,在运行 Junos OS 的设备上,您还可以指示模块仅在应用连接到的路由引擎上执行操作。在由 EX 系列 台交换机(EX8200 虚拟机箱 除外)或QFX 系列交换机组成的 虚拟机箱 或 虚拟机箱交换矩阵 (VCF) 中,该操作仅在连接的成员交换机上运行。
要显式指示应在双路由引擎设置中的所有路由引擎上执行路由引擎,请包含 all_re: True 参数,这是默认值。
tasks:
- name: Restore all Routing Engines to factory-default state
juniper.device.system:
action: "zeroize"
all_re: True
在运行 Junos OS 的设备上,要仅在应用连接的路由引擎上执行请求的操作,请包含 all_re: False 参数。
tasks:
- name: Restore connected Routing Engine to its factory-default state
juniper.device.system:
action: "zeroize"
all_re: False
要指示模块除了删除所有配置和日志文件外还清理所有内存和介质,请包含 media: True 参数。包含 media: True 参数等同于执行 request system zeroize media 操作模式命令。该 media 选项会清理连接到系统的每个存储设备,包括磁盘、闪存设备、可移动 USB 等。擦洗过程的持续时间取决于被擦除介质的大小。
tasks:
- name: Restore device to its factory-default state and scrub media
juniper.device.system:
action: "zeroize"
media: True
示例:使用 Ansible 恢复出厂默认配置设置
此示例使用该 juniper.device.system 模块将 Junos 设备恢复到其出厂默认配置设置。您可以使用任何类型的连接来执行该模块。但是,重置设备后,只能通过控制台服务器或 控制台 端口以 root 身份再次访问它。此示例通过控制台服务器连接到设备。
要求
此示例使用以下硬件和软件组件:
-
运行 Ansible 2.17 或更高版本并安装集合的
juniper.device配置管理服务器 -
可通过控制台服务器访问控制台端口并具有配置了适当权限的用户帐户的 Junos 设备
-
定义了所需主机的现有 Ansible 清单文件
概述
此示例创建了一个 Ansible 操作指南,该操作指南使用该 juniper.device.system 模块将清单组中的每台主机重置为其出厂默认配置设置。模块的 action 参数设置为 "zeroize",它在每个主机上执行 <request-system-zeroize> RPC。该操作将移除路由引擎上的所有配置信息,重置设备上的所有键值,然后重新启动设备并将其重置为出厂默认状态。
该 request system zeroize 命令通过将文件与目录中的链接断开,从而删除所有数据文件,包括自定义配置和日志文件。该命令还会从系统中移除所有用户创建的文件,包括SSH、本地加密、本地身份验证、IPsec、RADIUS、TACACS+和SNMP的所有纯文本密码、机密和私钥。
从 playbook 调用模块时,建议使用交互式提示来确认用户确实打算重置设备。如果用户无意中运行了操作指南,而您没有实施检查,则可能会恢复设备并中断任何需要这些设备的网络。作为预防措施,此操作指南使用交互式提示来验证用户是否打算重置设备。该操作指南要求用户在命令行上手动键入 'yes' 才能执行该模块。如果 Confirmation check 任务失败,Ansible 控制节点将跳过该设备正在执行的其他任务。
如果确认检查成功,则操作指南将执行该 juniper.device.system 模块。该模块通过指定端口上的控制台服务器连接到 Junos 设备,该端口在每个主机的 Ansible 清单文件中定义。该操作指南会提示输入设备密码并将其存储在变量中。重新启动后,您必须以 root 身份通过控制台登录才能访问设备。
配置
创建并执行 Ansible 剧本
分步程序
要创建使用该 juniper.device.system 模块将 Junos 设备恢复到出厂默认配置设置的操作指南:
-
包括 playbook 和 play(在本地执行模块)的样板。
--- - name: Restore Junos device to factory-default configuration settings hosts: dc1a_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: "{{ ansible_port }}" -
创建确认用户意图的任务。
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 未显示预期的代码,请重复此示例中的说明以更正 playbook。
---
- name: Restore Junos device to factory-default configuration settings
hosts: dc1a_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: "{{ ansible_port }}"
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命令,并提供 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 device 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