使用 Ansible 将 Junos 设备恢复到出厂默认配置设置
使用瞻博网络 Ansible 模块将 Junos 设备恢复到出厂默认配置设置。
如何使用 Ansible 恢复出厂默认配置设置
瞻博网络提供了一个 Ansible 模块,可用于将 Junos 设备恢复到出厂默认配置设置。 表 1 概述了该模块。
内容集 |
模块名称 |
---|---|
要使用该 juniper.device.system
模块将设备恢复到其出厂默认配置设置,请将 action
模块的参数 'zeroize'
设置为。将设备恢复到出厂默认配置设置后,必须以 root 身份通过控制台登录才能访问设备。
该 action: "zeroize"
参数使模块在目标主机上执行 request system zeroize
作命令。此命令将移除指定路由引擎上的所有配置信息,重置设备上的所有键值,然后重新启动设备并将其重置为出厂默认配置设置。zeroize作通过将文件与其目录取消链接来删除所有数据文件,包括自定义配置和日志文件。它还会从系统中删除所有用户创建的文件,包括 SSH、本地加密、本地身份验证、IPsec、RADIUS、TACACS+ 和 SNMP 的所有纯文本密码、机密和私钥。
有关详细信息,请参阅:
以下 Ansible作指南使用 juniper.device.system
模块 with action: "zeroize"
将清单组中每台主机上的所有路由引擎重置为出厂默认配置设置。
--- - 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"
作会将双路由引擎或虚拟机箱设置中的所有路由引擎重置为出厂默认配置设置。您还可以指示模块仅在应用程序连接到的路由引擎上执行作。
要明确指示应在双路由引擎或虚拟机箱设置中的所有路由引擎上执行该作,请包含 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 设备恢复到其出厂默认配置设置。您可以使用任何类型的连接执行该模块;但是,重置设备后,只能通过控制台服务器或 控制台 端口以 root 身份再次访问它。此示例通过控制台服务器连接到设备。
要求
此示例使用以下硬件和软件组件:
-
运行 Ansible 2.18 或更高版本并安装集合的
juniper.device
配置管理服务器 -
能够通过控制台服务器访问控制台端口且用户帐户配置了相应权限的 Junos 设备
-
定义了所需主机的现有 Ansible 清单文件
概述
此示例创建一个 Ansible作指南,该指南使用该juniper.device.system
模块将清单组中的每台主机重置为其出厂默认配置设置。模块action
参数的值定义要在主机上执行的作。设置为action
"zeroize"
在每台主机上执行request system zeroize
命令。此命令移除路由引擎上的所有配置信息,重置设备上的所有键值,然后重新启动设备并将其重置为出厂默认配置设置。
命令 request system zeroize
将删除所有数据文件,包括自定义配置和日志文件,方法是将文件与其目录取消链接。该命令还会从系统中删除所有用户创建的文件,包括 SSH、本地加密、本地身份验证、IPsec、RADIUS、TACACS+ 和 SNMP 的所有纯文本密码、机密和私钥。
从 playbook 调用模块时,建议您使用交互式提示来确认用户是否打算重置设备。如果用户无意中运行了作指南,并且未进行检查,则可能会无意中将设备恢复为出厂默认配置,并中断需要这些设备的任何网络。作为预防措施,此作指南使用交互式提示来验证用户是否打算重置设备,并要求用户在命令行上手动键入“yes”才能执行模块。 Confirmation check
如果任务失败,Ansible 控制节点将跳过该设备播放中的其他任务。
如果确认检查成功,playbook 将 juniper.device.system
执行模块。 mode: "telnet"
和 port: 23
参数指示模块 telnet 到控制台服务器的端口 23。该password
参数设置为变量的 password
值,playbook 会在执行过程中提示输入该值。重新启动后,您必须以 root 身份通过控制台登录才能访问设备。
配置
创建并执行 Ansible 行动指南
分步过程
要创建使用该 juniper.device.system
模块将 Junos 设备恢复到出厂默认配置设置的作指南:
包括 playbook 的样板和 this play,它在本地执行模块。
--- - 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 控制节点上,查看已完成的作指南。如果 playbook 未显示预期的代码,请重复此示例中的说明以更正 playbook。
--- - 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
执行作手册
要执行 playbook,请执行以下作:
-
在控制节点上发出
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