mwallraf.oneos_upgrader
oneos_upgrader
Ansible 角色用于升级运行 OneOS 软件的 Ekinops OneAccess 设备。主要有两个操作系统版本:OneOS 5 和 OneOS 6。
OneOS 5 与 Cisco IOS-XE 非常相似,软件镜像应该存储在闪存中,并且需要一个启动命令来指示应加载哪个软件。
OneOS 6 有主软件库和冗余软件库,每个软件库可能加载不同的软件。在重新加载路由器之前,您必须指明哪个软件库是主库。
这个角色自动支持这两个版本。
要求
- ansible.utils
- mwallraf.ekinops
故障
如果发生故障,过程将被中止,这可能意味着报告不会生成。失败的主机在报告中也不会显示。
角色标签
您可以使用四个标签来定义角色的模式,如果没有指定标签,则将执行完整的升级:
- report:仅运行预检查并生成状态报告(默认情况下此标签始终会执行)
- staging:执行所有可能的任务以准备升级,但不会造成任何停机,通常这意味着在准备过程结束后只需重启
- upload:仅执行文件上传过程,仅上传升级所需的文件
- upgrade:执行完成升级所需的所有必要步骤
默认角色变量
以下变量默认配置,但可根据需要进行覆盖:
- auto_configure_pre_requisites:切换预配置的自动配置(例如启用 SCP 服务器) 默认值 = true
计算变量
以下变量将根据给定的变量和运行配置进行计算:
- running_os_is_compliant:指示运行的操作系统是否已符合要求(与所需的操作系统版本进行比较)
- boot_os_is_compliant:指示引导的操作系统是否已符合要求(与所需的引导版本进行比较)
- scp_is_enabled:指示SCP是否已启用
升级过程
根据标签,升级过程可能会有所不同。默认情况下将进行 完整升级。
报告模式
在 报告模式 中,我们只会进行一些基本检查并生成报告,指示路由器是否应该升级以及是否有足够的磁盘空间。
使用方式:
ansible-playbook -i hosts playbook.yml --tags report
Playbook 任务:
- 连接并获取信息
- 设置额外信息以确定路由器和升级过程的状态
- 为每个主机显示调试信息
详细信息:
- 任务:
- oneos_upgrader : GATHER FACTS > 主机名 标记: [always]
- oneos_upgrader : GATHER FACTS > 获取系统详细信息 标记: [always]
- oneos_upgrader : GATHER FACTS > 获取 SSH 详细信息 标记: [always]
- oneos_upgrader : SET FACT > 获取所需操作系统文件统计 标记: [always]
- oneos_upgrader : SET FACT > 所需操作系统文件统计 标记: [always]
- oneos_upgrader : SET FACT > 获取所需引导文件统计 标记: [always]
- oneos_upgrader : SET FACT > 所需引导文件统计 标记: [always]
- oneos_upgrader : SET FACT > 获取所需恢复文件统计 标记: [always]
- oneos_upgrader : SET FACT > 所需恢复文件统计 标记: [always]
- oneos_upgrader : GATHER FACTS > 显示内存 标记: [always]
- oneos_upgrader : SET FACT > 内存信息 标记: [always]
- oneos_upgrader : MAIN > 运行特定于操作系统的 gather_facts 任务 标记: [report, staging, upgrade]
- oneos_upgrader : SET FACT > 计算是否需要升级 标记: [always]
- oneos_upgrader : SET FACT > scp_is_enabled 标记: [always]
- oneos_upgrader : SET FACT > 检查文件是否存在于磁盘或软件库 标记: [always]
- oneos_upgrader : SET FACT > 文件上传需求 标记: [always]
- oneos_upgrader : SET FACT > 恢复文件是否存在于磁盘 标记: [always]
- oneos_upgrader : SET FACT > 磁盘空间是否足够计算 标记: [always]
- oneos_upgrader : REPORT > 获取主机详细信息 标记: [report, staging, upgrade]
- DEBUG > 输出所有变量 标记: [always]
- 将文件模板化到 /etc/file.conf 标记: [always]
计划生成概述CSV报告的模板,由于这应该作为最后一步在剧本中运行,因此必须从剧本中调用。
post_tasks:
- name: REPORT > 保存到文件
ansible.builtin.template:
src: "roles/oneos_upgrader/templates/report_overview.j2"
dest: report.txt
tags:
- always
准备模式
在 准备模式 中,所有必要的检查都完成,所有文件都上传,升级正在准备中,不会造成任何中断。
使用方式:
ansible-playbook -i hosts playbook.yml --tags staging
Playbook 任务:
- 连接并获取信息
- 设置额外信息以确定路由器和升级过程的状态
- 如果设备上没有空间,则会删除旧文件
- 重新计算磁盘空间
- 如果有任何预配置作业,则会执行(例如启用 SCP)
- 如有必要,上传文件
- 如果所有文件没有空间,则首先将引导文件复制
- 如果没有待处理的引导镜像升级,则正在准备软件库或引导文件
如果需要多个升级(引导 + 恢复 + 操作系统),则无法同时准备所有内容。如果所有文件的磁盘空间足够,则上传将完成。文件的加载只能在第一个文件上进行(例如引导),因为需要重启才能继续。因此,多阶段升级应逐步进行,或在升级过程中执行额外步骤。