长期支持版本

    社区创新版本

      常用操作

      配置 repo 源

      前提条件

      • 已登录 x2openEuler 工具
      • 创建升级、信息收集分析或配置迁移任务

      操作步骤

      1. 在工具创建任务时,单击“添加节点”,下拉至 “repo 源名称”选项。单击右侧“选择”,进入选择 repo 源界面,如 图 1

        说明: 工具默认提供 openEuler 22.03-LTS-SP4 操作系统的 aarch 和 x86_64 源。建议使用镜像网站的 repo 源,以提高下载速率。

        图 1 选择 repo 源

      2. 在左侧 “repo 源名称”列表中,选择相应 repo 源,单击“确定”即完成 repo 源选择。

      3. (可选)repo 源管理。

        须知:

        • 请务必添加工具已支持的目标操作系统 repo 源,否则会导致升级出现异常,添加的 repo 源中最少需要包含 everything 和 update。
        • 修改 repo 源可能会导致使用该 repo 源的其他节点无法正常运行,请谨慎操作。
        • 删除 repo 源可能会导致使用该 repo 源的其他节点无法正常运行,请谨慎操作。
        • 添加 repo 源

          单击右上角“添加 repo 源”进入 repo 源配置界面参考默认 repo 源进行配置,repo 源名称后缀为 “.repo”,配置完成后单击“保存”即可完成 repo 源添加。

        • 修改 repo 源

          在左侧 repo 源列表中选择需要进行修改的 repo 源,单击对 repo 源进行修改。

        • 删除 repo 源

          在左侧 repo 源列表中选择需要删除的 repo 源,单击删除 repo 源。

      (可选)为 x2openEuler 工具导入根证书

      使用浏览器登录 x2openEuler 工具时,若弹出安全告警提示,可以在浏览器中为 x2openEuler 工具导入根证书来屏蔽此安全告警提示。

      本指南以 Chrome 105.0 为例介绍为 x2openEuler 工具导入根证书的操作步骤。

      1. 登录 x2openEuler 工具,在页面右上方选择“ > web 服务端证书”,单击“下载根证书“下载根证书。

      2. 打开浏览器,依次选择“设置 > 隐私设置和安全性 > 安全>管理证书”。

      3. 在弹出“证书”的对话框中,选择“受信任的根证书颁发机构”页签,单击“导入”,如 图 2 所示。

        图 2 证书

      4. 在弹出的“证书导入向导”对话框中,单击“下一步”,如 图 3 所示。

        图 3 证书导入向导欢迎页面

      5. 进入选择证书页面,单击“浏览”,如 图 4 所示。

        图 4 导入证书文件

      6. 从本地 PC 路径中选择待导入的证书。

      7. 单击“下一步”。

        进入选择证书存储位置页面,选择如 图 5 中的存放位置。

        图 5 选择证书存储位置

      8. 单击“下一步 > 完成”。

        弹出“安全警告”对话框。

      9. 单击“是”。

        弹出“导入成功”提示框,则表示成功导入证书。

      10. 单击“确定”完成证书导入。

      11. 由于颁发的证书是针对工具的名称,需要修改本地的 Hosts 映射。

        1. 在 C:\Windows\System32\drivers\etc 路径下,打开 hosts 文件。

          图 6 hosts文件

        2. 在 hosts 文件中增加如下内容后保存并退出。

          服务器 IP 地址 x2openEuler

          例如:10.254.206.190 x2openEuler

      12. 打开本地 PC 机的浏览器,在地址栏输入https://x2openEuler: 端口号(例如:https://x2openEuler:8084),按“Enter”。

      SSH 配置

      修改工具中的 SSH 配置文件,实现对 SSH 的超时配置。

      1. 登录 x2openEuler 工具部署节点,执行以下命令,进入相应路径后修改 conf.ini 文件。

        cd /usr/local/x2openEuler/portal/src/
        vi conf.ini
        
      2. 参考 表 1 根据需要修改配置文件中的部分内容。

        表 1 SSH 参数说明

        参数说明
        long_cmd_timeout长命令执行超时时间,比如获取节点日志的命令,默认值为 600。
        tail_line_number获取节点日志时,tail 追踪的日志行数,默认值为 100。
        hostname_length主机名的长度,用于动态配置命令回显一行的长度,默认值为 100。
        cmd_timeout短命令执行超时时间,比如 whoami 命令,默认值为 10。
      3. 按 “ESC”,输入 “:wq”,按 “Enter” 保存并退出。

      4. 执行以下命令重启 SSH 服务以生效配置。

        systemctl restart sshd.service
        

      关闭 SELinux

      若存在环境节点需要关闭 SElinux 强制模式,执行以下操作。

      • 临时关闭

        1. 执行以下命令查询 SELinux 状态。

          sestatus
          

          Current mode 显示 enforcing 表示 SELinux 已开启强制模式。

        2. 执行如下命令将 SELinux 模式设置为 permissive。

          setenforce 0
          
        3. 再次查询 SELinux 状态。

          Current mode 显示 permissive 表示 SELinux 已临时关闭强制模式。

        须知: 服务器重启后失效,工具使用过程中可能会出现服务异常。

      • 永久关闭

        1. 执行以下命令查询 SELinux 状态。

          sestatus
          

          SELinux status 显示 enabled 表示 SELinux 已开启。

        2. 执行如下命令修改 /etc/selinux/config 文件。

          vi /etc/selinux/config
          
        3. 按 “i” 进入编辑模式,将 SELINUX=enforcing 改为 SELINUX=disabled。

        4. 按 “ESC”,输入 “:wq”,按 “Enter” 保存并退出。

        5. 执行以下命令重启服务器。

          reboot
          
        6. 再次查询 SELinux 状态。

          SELinux status 显示 disabled 表示 SELinux 已关闭。

      修改 x2openEuler 工具的 IP 和端口

      前提条件

      已部署 x2openEuler 工具

      操作步骤

      1. 使用 SSH 工具远程登录 x2openEuler 部署环境,进入 Linux 操作系统命令行界面。

      2. 执行以下命令停止 x2openEuler 工具。

        说明: 用户须停止 x2openEuler 工具后,才能完成后续的修改 IP 和端口的操作。

        systemctl stop nginx_x2openEuler.service
        systemctl stop gunicorn_x2openEuler.service
        
      3. 执行如下命令修改 IP 或端口。

        cd /usr/local/x2openEuler/portal/service/
        bash change_ip_x2openEuler.sh
        

        回显交互信息如下:

        Start Nginx service and Gunicorn service
        =====================================================
        Original IP address and x2openEuler number: x.x.x.x:18082
        =====================================================
        Ip address list:
        sequence_number         ip_address              device
        [1]                     x.x.x.x                 br0
        [2]                     y.y.y.y                 br1
        Enter the sequence number of listed ip as web server ip(default: 1): 1
        Set the web server IP address y.y.y.y
        Please enter HTTPS port(default: 18082):19082
        The HTTPS port 19082 is valid.  Set the HTTPS port to 19082 (y/n default: y):y
        Set the HTTPS port 19082
        Please enter gunicorn port(default: 18080):
        The GUNICORN port 18080 is valid.  Set the GUNICORN port to 18080 (y/n default: y):
        Set the GUNICORN port 18080
        The Nginx and Gunicorn ports are set up successfully.
        

        说明: 其中,x.x.x.x 和 y.y.y.y 为工具部署环境 IP 地址。

        • 在执行修改 IP 和端口命令前,需要先进入 /usr/local/x2openEuler/portal/service 目录。
        • 执行命令后系统会列出可用的 IP 地址,用户可以自行选择。
        • 执行命令进行修改端口时,需确认该端口未被占用,避免产生端口冲突。若工具部署环境已经开启防火墙,则需要确保开通修改后端口,若修改前端口不再被使用,则需对其做关闭处理,避免影响部署环境安全。
        • 修改完端口后,重启工具相关服务,请参考章节 启动/停止/重启服务

      启动 / 停止 / 重启服务

      前提条件

      已部署 x2openEuler 工具

      操作步骤

      1. 使用 SSH 工具远程登录 x2openEuler 部署环境,进入 Linux 操作系统命令行界面。

      2. 执行以下命令进行工具服务启动 / 停止 / 重启 / 查看状态操作。

        systemctl start/stop/restart/status nginx_x2openEuler.service
        systemctl start/stop/restart/status gunicorn_x2openEuler.service
        

      管理日志

      日志说明

      操作日志说明

      操作日志主要用来记录用户的各种修改操作信息或者系统定时任务信息,记录的信息如下所示:

      • 用户登录或退出
      • 上传文件
      • 创建任务
      • 创建 / 删除用户
      • 用户锁定 / 解锁
      • 更改用户配置
      • 修改密码
      • 下载 / 删除报告
      • 设置最大在线用户
      • 设置运行日志级别
      • 导入 / 替换证书
      • 设置证书过期告警阈值
      • 管理弱口令字典
      • 更新工作密钥
      运行日志说明

      运行日志主要用来记录程序运行过程中一些必要的信息,用于帮助开发人员或客户快速定位问题,处理程序运行中的异常信息。

      一键下载的日志压缩包中包含如下模块:

      表 2 运行日志模块说明

      运行日志模块说明
      certificate_manager.log记录工具证书管理操作信息。
      config.log记录工具配置操作信息。
      operationlog_manager.log记录操作日志管理操作信息。
      requests.log记录访问请求信息。
      ssh_connect.log记录使用 SSH 协议进行连接的信息。
      user_manager.log记录用户管理信息操作的日志文件。
      work_key_manager.log记录工作密钥相关操作日志。
      cipher.log记录登录用户密码变更操作的日志文件。
      get_node_finger_print.log获取节点指纹信息输出日志。
      permission.log工具权限控制变更日志。
      runlog_manager.log主要用来记录获取运行日志操作时的动作信息。
      task_manager.log记录升级任务的操作信息。
      weakpassword_manager.log弱口令管理变更日志。
      pre-execute.log升级节点上前置脚本执行日志。
      post-execute.log升级节点上(重启后)后置脚本执行日志。
      execute.log升级节点上(重启前)后置脚本执行日志。
      说明: 运行日志保存在 /usr/local/x2openEuler/portal/logs/backend 目录下。

      前置脚本执行日志保存在 /opt/x2openEuler/scripts-execute/n-x.x.x.x/pre-execute/。

      (重启后)后置脚本执行日志保存在 /opt/x2openEuler/scripts-execute/n-x.x.x.x/post-execute/。

      (重启前)后置脚本执行日志保存在 /opt/x2openEuler/scripts-execute/n-x.x.x.x/post-execute-before-reboot。

      其中,n 表示待升级任务 ID,x.x.x.x 表示待升级节点 IP 地址。

      操作日志管理

      前提条件

      已成功登录 x2openEuler 工具。

      说明:

      • 普通用户只可查看和下载自己的操作日志,管理员可以查看所有用户的操作日志。
      • 操作日志保存在 MariaDB 的 x2openEuler 数据库中 operaitonlogmanager_operationlog 表中,日志文件为 /usr/local/x2openEuler/portal/logs/backend/operationlog_manager.log。
      • 操作日志默认保存 30 天,工具每天凌晨 1 点自动检查、删除超过 30 天的操作日志。

      操作步骤

      1. 在页面右上角下拉菜单中,选择“日志“。

        打开“日志“界面,选择“操作日志“,如 图 7 所示。

        图 7 操作日志

      2. (可选)下载操作日志。

        单击页面上的“下载”下载 csv 格式日志文件。

      运行日志管理

      前提条件

      已成功登录 x2openEuler 工具。

      说明:

      • 只有管理员(x2openEulerAdmin)可以查看,下载运行日志和修改运行日志级别。
      • 管理员可以在工具首页下拉菜单的“系统配置“,手动设置“日志级别“,工具只会记录配置的级别及以上级别的日志。

      操作步骤

      1. 在页面右上角下拉菜单中,选择“日志“。

        打开“日志“界面,选择“运行日志“,如 图 8 所示。

        图 8 运行日志

      2. 单击“一键下载”,可下载运行日志。

        下载的运行日志的格式如下:

        [时间] [日志级别] [进程 ID] [线程名称] [模块名称:函数名:行数] 日志详情

        例如:

        [2020-08-20 09:50:21] [INFO] [processID:18508] [MainThread] [solution_api:get_solution_category:143] get_solution_category
        

        日志级别用来表示日志信息的重要程度,默认为 INFO。工具运行日志级别分 DEBUG、INFO、WARNING、ERROR 四级。

        • DEBUG:调试级别,记录调试信息,便于开发人员或维护人员定位问题。
        • INFO:信息级别,记录服务正常运行的关键信息。
        • WARNING:警告级别,记录系统和预期的状态不一致的事件,但这些事件不影响整个系统的运行。
        • ERROR:一般错误级别,记录错误事件,但应用可能还能继续运行。

      管理用户

      重置密码

      前提条件

      已成功登录 x2openEuler 工具。

      说明: 只有管理员(x2openEulerAdmin)可以执行重置密码操作。

      操作步骤

      1. 在页面右上角下拉菜单中,选择“用户管理“。

        打开用户管理界面。

      2. 单击操作栏中指定用户后的“重置密码”。打开“重置密码”界面,如 图 9 所示,需配置的参数如 表 2 所示。

        图 9 重置密码

        表 2 重置密码参数说明

        参数说明
        用户名待重置密码的用户名。重置密码时不允许修改。
        管理员密码输入管理员密码。
        新密码

        输入新建用户的密码。密码需要满足如下复杂度要求:

        • 密码长度为 8~32 个字符
        • 必须包含大写字母、小写字母、数字、特殊字符(`~!@#$%^&*()-_=+\|[{}];:'",<.>/?)中的两种及以上类型的组合
        • 密码不能包含空格
        • 密码不能是用户名
        • 密码不能在弱口令字典中
        确认密码再次输入设置的密码。
      3. 参考 表 2 重置完密码后,单击“确认”。

        说明: 重置密码后,被重置密码的用户如果处于登录状态将会自动退出到登录页面,需要使用重置后的密码重新登录入页面。

      删除用户

      前提条件

      已成功登录 x2openEuler 工具。

      说明:

      • 只有管理员(x2openEulerAdmin)可以执行删除用户操作。
      • 系统默认的管理员不可删除。

      操作步骤

      1. 在页面右上角下拉菜单中,选择“用户管理“。

        打开用户管理界面。

      2. 单击操作栏中指定用户后的“删除”。

        须知: 删除用户后,该用户相关的所有历史数据都会被删除,请谨慎操作。

      3. 输入管理员的密码,单击“确认”。

      修改当前登录用户密码

      前提条件

      已成功登录 x2openEuler 工具。

      说明: x2openEuler 工具用户的密码默认有效期为 90 天,建议在密码有效期到达之前设置新密码。若密码已过期,则需要在登录后先进行密码修改操作。

      操作步骤

      1. 在页面右上角登录用户的下拉菜单中,选择“修改密码“。

        打开用户修改密码界面,如 图 10 所示,需配置的参数如 表 3 所示。

        图 10 修改密码

        表 3 修改密码参数说明

        参数说明
        用户名当前登录用户的用户名。
        旧密码输入用户当前密码。
        新密码

        输入新密码。密码需要满足如下复杂度要求:

        • 密码长度为 8~32 个字符
        • 必须包含大写字母、小写字母、数字、特殊字符(`~!@#$%^&*()-_=+\|[{}];:'",<.>/?)中的两种及以上类型的组合
        • 密码不能包含空格
        • 密码不能是用户名
        • 新密码与旧密码必须不同
        • 新密码不能是旧密码的逆序
        • 新密码不能在弱口令字典中
        确认密码再次输入设置的密码。
      2. 参考 表 3 修改密码后,单击“确认”。

        说明: 密码修改完成后,当前用户会退出到登录页面,需要使用修改后的密码重新进行登录。

      管理弱口令字典

      弱口令通常是指容易被别人猜测到或被破解工具破解的口令。在设置或修改密码时,如果密码是弱口令字典中的口令,则系统会强制用户重新设置,以提升用户密码的安全性。

      前提条件

      已成功登录 x2openEuler 工具。

      说明:

      • 用户可以查看和搜索弱口令。
      • 只有管理员(x2openEulerAdmin)可以添加和删除弱口令。
      • 工具提供 52 条默认的弱口令。
      • 最多可添加至 1000 条弱口令。

      操作步骤

      1. 菜单选项中选择“弱口令字典“。

      2. 单击“添加“,弹出对话框,如所示。

        图 11 添加弱口令

      3. 在文本框中输入需要添加的弱口令。弱口令需要满足如下要求:

        • 长度为 8~32 个字符
        • 至少包含以下字符中的两种:
          • 大写字母:A~Z
          • 小写字母:a~z
          • 数字:0~9
          • 特殊字符:`~!@#$%^&*()-_=+\|[{}];:'",<.>/?
      4. 单击“确认”添加弱口令。

        说明: 如需删除弱口令,单击对应弱口令“操作”列的“删除”。在弹出的“删除弱口令”对话框中单击“确认”。

      管理 web 服务端证书

      Web 服务端证书用于客户端浏览器和 web 服务器之间的通讯,实现数据信息在客户端和 web 服务器之间的加密传输,可以防止数据信息的泄露。为提高安全性,建议替换成自己的证书,并及时更新证书,保证证书的有效性。

      前提条件

      已成功登录 x2openEuler 工具。

      说明: 只有管理员(x2openEulerAdmin)可以执行生成 CSR 文件、导入 web 服务器证书、下载根证书,重启和更换工作密钥的操作。

      操作步骤

      1. 在页面右上方选择“ > web 服务端证书”。

      2. 查看证书信息,如 图 12 所示,界面参数描述如 表 4 所示。

        图 12 web 服务端证书信息

        表 4 web 服务端证书参数说明

        参数说明
        证书名称显示证书名称。
        证书到期时间显示证书到期时间。
        状态显示证书的当前状态。
        有效:证书剩余有效时间超过证书过期告警阈值。
        即将过期:证书剩余有效时间小于或等于证书过期告警阈值。
        已过期:已过证书到期时间。
        说明:
        • 工具每天自动检查并更新证书状态
        • web服务证书自动告警时间默认为 90 天。管理员可在 x2openEuler 工具首页中的选项中选择“系统配置”,手动配置“证书过期告警阈值”,可配置范围为 7~180 天。
        操作可执行操作:
        • 下载根证书 说明:
          使用浏览器登录 x2openEuler 工具时,若弹出安全告警提示,可以在浏览器中为 x2openEuler 工具导入根证书来屏蔽此安全告警提示
        • 生成 CSR 文件
          说明:
          CSR(Certificate Signing Request)是证书请求文件。证书申请者在申请数字证书时,由 CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件。证书申请者把 CSR 文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,即证书。
        • 导入 web 服务器证书
        • 重启服务
        • 更新工作密钥

      自定义服务器证书信息并导入

      1. 在 “web 服务端证书”页面中单击“生成 CSR 文件”。

        打开“生成 CSR 文件”对话框,如 图 13 所示,界面参数描述如 表 5 所示。

        图 13 生成 CSR 文件

        表 5 CSR 文件参数说明

        参数说明
        国家使用者所在的国家。
        支持字母,长度为 2 个字符,为必填项。
        省份使用者所在的省份。
        支持字母、数字、“-”、“_”、“.” 和空格,最大长度 128 个字符。
        城市使用者所在的城市。
        支持字母、数字、“-”、“_”、“.” 和空格,最大长度 128 个字符。
        公司使用者所在的公司。
        支持字母、数字、“-”、“_”、“.” 和空格,最大长度 64 个字符。
        部门使用者所在部门。
        支持字母、数字、“-”、“_”、“.” 和空格,最大长度 64 个字符。
        常用名使用者的名称。
        支持字母、数字、“-”、“_”、“.” 和空格,最大长度 64 个字符,为必填项。
      2. 单击“确认“生成 CSR 文件。

      3. 将导出的 CSR 文件发往 SSL 证书颁发机构,并申请 SSL 证书。获取到正式的证书后,保存到本地。

        说明: 用户也可以使用其根证书进行自签名获取正式的证书。

      4. 单击“导入 web 服务端证书“。弹出“导入 web 服务端证书“对话框。

      5. 单击,选择需要导入证书文件,单击“导入“。

        说明:

        • 导入的证书文件不得大于 1MB,支持的格式为 *.crt、*.cer、*.pem。
        • 1 中生成的 CSR 文件与向 CA 机构申请的服务器证书是一一对应的,在导入服务器证书之前请不要再次生成新的 CSR 文件,否则需要向 CA 机构重新申请服务器证书。
        • 导入的 SSL 证书如果不是从正式的证书颁发机构获取,而是用户自己使用工具生成,在导入该 SSL 证书后,还需要确认客户端浏览器中是否已存在对应的根证书。
      6. 单击“确认“导入 web 服务端证书。

      7. 单击“更多 > 重启服务“使证书生效。

        说明: 用户手动在服务器上重启 Nginx 服务,证书不会生效,必须在 web 上进行重启操作。

      更新工作密钥

      工作密钥用于加密启动 Nginx 服务的口令。为提高系统安全性,建议定期更新。

      1. 在页面右上方选项中选择 “web 服务端证书”。

      2. 单击“更多 > 更新工作密钥“,如 图 14 所示。

        图 14 更新工作密钥

      3. 单击“更多 > 重启服务“使工作密钥生效。

      查询工具发布信息

      前提条件

      已成功登录 x2openEuler 工具。

      操作步骤

      1. 在页面右上方选择“ > 关于”。

      2. 查询工具的版本信息和发布时间,如 图 15 所示。

        图 15 工具详细发布信息

      查看工具免责声明

      前提条件

      已成功登录 x2openEuler 工具。

      操作步骤

      1. 在页面右上方选择“ > 免责声明”,如 图 16 所示。

        图 16 免责声明

      2. 仔细阅读免责声明。

      配置生成秘钥

      前提条件

      • 已部署 x2openEuler 工具
      • 本地已安装 SSH 远程连接工具

      操作步骤

      1. 使用 SSH 工具远程登录待升级节点,进入 Linux 操作系统命令行界面。执行以下命令生成秘钥并修改公钥名称。

        ssh-keygen
        cd /root/.ssh
        mv id_rsa.pub authorized_keys
        

        说明:

        • 执行 ssh-keygen 命令后,请根据终端交互信息进行操作。
        • 修改 id_rsa.pub 文件名称时,需确认 /etc/ssh/sshd_config 文件中 AuthorizedKeysFile 参数为 .ssh/authorized_keys。
      2. 执行以下命令配置 /etc/ssh/sshd_config 文件,开启秘钥连接。

        vi /etc/ssh/sshd_config
        

        去掉如下内容注释:

        PubkeyAuthentication yes
        

        修改完成后,按 “ESC”,输入 “:wq”,按 “Enter” 保存并退出。

      3. 执行以下命令重启SSH服务使配置内容生效。

        systemctl restart sshd
        
      4. 将 id_rsa 文件传输至 x2openEuler 部署节点。

      5. 使用 SSH 工具远程登录 x2openEuler 部署节点,进入Linux操作系统命令行界面。

      6. 将 x2openEuler 部署节点 id_rsa 文件移动 /opt/x2openEuler 目录下,执行以下命令修改 id_rsa 文件权限及属主属组。

        chown x2openEuler:x2openEuler id_rsa
        chmod 600 id_rsa
        
      7. 在 x2openEuler 工具进行“批量导入”或“添加节点”时,选择“认证方式”为“秘钥认证”。

      上传操作系统数据库支持包

      前提条件

      已成功安装 x2openEuler 工具。

      已获取操作系统数据库支持包到本地。

      操作步骤

      1. 访问 openEuler 扩展仓库 获取操作系统数据库支持包到本地。

        本文以上传支持 CentOS 7.3 升级到 openEuler 22.03-LTS 所需的操作系统数据库支持包为例。

        1. 进入以下路径。

          openEuler-22.03-LTS/contrib/x2openEuler/noarch/Packages/
          

          说明: 其中,

          • openEuler-22.03-LTS 为升级目标操作系统。

          • noarch 为操作系统硬件平台,可根据硬件平台环境选择 aarch 或 x86_64 目录。

        2. 获取以下操作系统包。

          表 7 操作系统包

          操作系统包描述
          x2openEuler-database-centos7.3-openEuler22.03-LTS-2.0.0.630-1.noarch.rpm源操作系统升级至目标操作系统的数据库支持包。
          x2openEuler-database-centos7.3-2.0.0.630-1.noarch.rpm源操作系统数据库支持包。
          x2openEuler-database-openEuler22.03-LTS-2.0.0.630-1.noarch.rpm目标操作系统数据库支持包。
      2. 使用 SSH 工具远程登录 x2openEuler 部署环境,上传操作系统数据库支持包至以下目录。

        /etc/x2openEuler/rpms/databases
        

        说明: 工具默认支持源操作系统 CentOS7.6 和 目标操作系统 openEuler 20.03-LTS-SP1,因此当需要升级其他系统至 openEuler 20.03-LTS-SP1 时,无需再次上传目标操作系统支持包。

      3. 登录 x2openEuler 工具 Web 页面,在创建任务时,“源操作系统版本”选项中,选择 Centos7.3,目标操作系统选择 openEuler 22.03-LTS 即可。

      自定义健康巡检

      前提条件

      • 已部署 x2openEuler 工具。
      • 已完成对待升级节点的环境检查。

      操作步骤

      1. 使用 SSH 工具登录待升级节点,进入以下路径。

        /usr/lib/x2openEuler-upgrade/src/env_check/check_actor/
        
      2. 参考如下代码新增 actor,以下代码展示了可用内存是否大于 1G 的检查项编写。

        说明: actor 是一个 python 文件,如果在本地编写完 actor 代码,需将代码上传至待升级节点 /usr/lib/x2openEuler-upgrade/src/env_check/check_actor/ 路径下。工具会自动读取 check_actor 下的所有 actor 文件并完成解析,并在指定的流程中执行检查项。 该 actor 无需远程连接,可直接执行。

        # -*- coding: utf-8 -*-
        from src.env_check.check_actor.base_check_actor import BaseCheckActor, ReturnMessage
        from src.env_check.check_scheduler.register import register_func
        from src.utils.command.command_executor import CommandExecutor
        from src.utils.log.logger_generator import LoggerGenerator
        LOG = LoggerGenerator().get_logger()
        
        
        @register_func.register                               # 注册器,会自动注册该用例,必须存在
        class MemoryUsageStatisticsActor(BaseCheckActor):
            name = "MemoryUsageStatisticsActor"               # 用例名称,会显示在前端
            description = "get memory usage statistics"       # 用例描述,会显示在前端
            level = "Low"                                     # 用例 level,预留字段,当前未使用
            sort = "100"                                      # 优先级,支持小数,数字越低,优先级越高,不能低于 10
            priority = "unnecessary"                          # 用例等级,分必选和可选,必选失败会导致步骤失败,必选为 mandatory,可选为 unnecessary
            task_type = (BaseCheckActor.task_type.SYSTEM_UPGRADE,)         # 用例 type,只有用例于对应 type 匹配上,才会在对应类型的任务下执行,SYSTEM_UPGRADE 为环境巡检字段
        
            @staticmethod
            def run(node: dict):                              # node 为记录了节点相关信息的字典,如需查看内容,可以使用 LOG.info(node) 将其记录到日志中,run()方法必须实现
                LOG.info("start to get memory usage info...")
                used_size, total_size = MemoryUsageStatisticsActor._get_memory_usage()                          # 获取内存数据
                if used_size < 0 or total_size < 0 or total_size < 1024*1024:                                  # 内存值比较
                    return ReturnMessage(result=BaseCheckActor.FAIL,
                                        solution="请检查 free -k 命令回显",
                                        failed_reason="通过 free -k 获取内存使用情况失败,或者内存值小于1G")                     # 必须返回 ReturnMessage 数据类型
                info = f"内存使用情况(已使用/总内存):{round(used_size / 1024, 1)}MB / {round(total_size / 1024, 1)}MB"
                return ReturnMessage(result=BaseCheckActor.SUCCESS, solution=info, failed_reason="")           # 必须返回 ReturnMessage 数据类型,如果该用例未通过,failed_reason 与 solution 会展示到前端
        
            @staticmethod
            def _get_memory_usage() -> (int, int):
                cmd = ["free", "-k"]                                                                           # 使用 free -k 命令获取使用内存
                stdout, _, return_code = CommandExecutor.run_single_cmd(cmd, timeout=15)                       # 下发命令,第一个返回值为命令输出,第二个为错误输出,第三个为命令退出码
                if return_code or not stdout:
                    return -1, -1
                for line in stdout.splitlines():
                    if not line.startswith('Mem:'):                                                            # 获取关键信息
                        continue
                    words = line.split()
                    total_size = int(words[1])
                    used_size = int(words[2])
                    return used_size, total_size
        
      3. 登录 x2openEuler 工具,创建升级任务。

      自定义环境检查

      前提条件

      已部署 x2openEuler 工具。

      操作步骤

      1. 使用 SSH 工具登录 x2openEuler 工具部署节点,进入以下路径。

        /usr/local/x2openEuler/portal/src/taskmanager/actors/env_check_actor
        
      2. 参考如下代码新增 actor。

        说明: actor 是一个 python 文件,如果在本地编写完 actor 代码,需将代码上传至 x2openEuler 工具部署节点 /usr/local/x2openEuler/portal/src/taskmanager/actors/env_check_actor 路径下,工具会自动读取 check_actor 下的所有 actor 文件并完成解析,并在指定的流程中执行对应代码。 该 actor 无需远程连接,可直接执行。

        # -*- coding: utf-8 -*-
        from src.env_check.check_actor.base_check_actor import BaseCheckActor, ReturnMessage
        from src.env_check.check_scheduler.register import register_func
        from src.utils.command.command_executor import CommandExecutor
        from src.utils.log.logger_generator import LoggerGenerator
        LOG = LoggerGenerator().get_logger()
        
        @register_func.register                               # 注册器,会自动注册该用例,必须存在
        class MemoryUsageStatisticsActor(BaseCheckActor):
            name = "MemoryUsageStatisticsActor"               # 用例名称,会显示在前端
            description = "get memory usage statistics"       # 用例描述,会显示在前端
            level = "Low"                                     # 用例 level,预留字段,当前未使用
            sort = "100"                                      # 优先级,支持小数,数字越低,优先级越高,不能低于 10
            priority = "unnecessary"                          # 用例等级,分必选和可选,必选失败会导致步骤失败,必选为 mandatory,可选为 unnecessary
            task_type = (BaseCheckActor.task_type.PRE_SYSTEM_UPGRADE,)         # 用例 type,只有用例于对应 type 匹配上,才会在对应类型的任务下执行,PRE_SYSTEM_UPGRADE 为环境巡检字段
        
            @staticmethod
            def run(node: dict):                              # node 为记录了节点相关信息的字典,如需查看内容,可以使用 LOG.info(node) 将其记录到日志中,run()方法必须实现
                LOG.info("start to get memory usage info...")
                used_size, total_size = MemoryUsageStatisticsActor._get_memory_usage()                         # 获取内存数据
                if used_size < 0 or total_size < 0 or total_size < 1024*1024:                                  # 内存值比较
                    return ReturnMessage(result=BaseCheckActor.FAIL,
                                        solution="请检查 free -k 命令回显",
                                        failed_reason="通过 free -k 获取内存使用情况失败,或者内存值小于1G")                     # 必须返回 ReturnMessage 数据类型
                info = f"内存使用情况(已使用/总内存):{round(used_size / 1024, 1)}MB / {round(total_size / 1024, 1)}MB"
                return ReturnMessage(result=BaseCheckActor.SUCCESS, solution=info, failed_reason="")           # 必须返回 ReturnMessage 数据类型,如果该用例未通过,failed_reason 与 solution 会展示到前端
        
            @staticmethod
            def _get_memory_usage() -> (int, int):
                cmd = ["free", "-k"]                                                                           # 使用 free -k 命令获取使用内存
                stdout, _, return_code = CommandExecutor.run_single_cmd(cmd, timeout=15)                       # 下发命令,第一个返回值为命令输出,第二个为错误输出,第三个为命令退出码
                if return_code or not stdout:
                    return -1, -1
                for line in stdout.splitlines():
                    if not line.startswith('Mem:'):                                                            # 获取关键信息
                        continue
                    words = line.split()
                    total_size = int(words[1])
                    used_size = int(words[2])
                    return used_size, total_size
        
      3. actor 完成新增后,执行以下命令重启 gunicorn 服务。

        systemctl restart gunicorn_x2openEuler.service
        
      4. 重新登录 x2openEuler 工具 web 页面,进行环境检查任务。

      自定义升级前检查

      前提条件

      已部署 x2openEuler 工具。

      已创建升级任务。

      操作步骤

      1. 使用 SSH 工具登录待升级节点,进入以下目录。

        /usr/lib/x2openEuler-upgrade/src/env_check/check_actor/
        
      2. 参考如下代码新增 actor 以自定义升级前检查,以下代码展示了可用内存是否大于 1G 的检查项编写。

        说明: actor 是一个 python 文件,如果在本地编写完 actor 代码,需将代码上传至部署 x2openEuler-upgrade 的待升级环境 /usr/lib/x2openEuler-upgrade/src/env_check/check_actor/ 路径下,工具会自动读取 check_actor 下的所有 actor 文件并完成解析,并在指定的流程中执行对应代码。 该 actor 无需远程连接,可直接执行。

        # -*- coding: utf-8 -*-
        from src.env_check.check_actor.base_check_actor import BaseCheckActor, ReturnMessage
        from src.env_check.check_scheduler.register import register_func
        from src.utils.command.command_executor import CommandExecutor
        from src.utils.log.logger_generator import LoggerGenerator
        LOG = LoggerGenerator().get_logger()
        
        @register_func.register                               # 注册器,会自动注册该用例,必须存在
        class MemoryUsageStatisticsActor(BaseCheckActor):
            name = "MemoryUsageStatisticsActor"               # 用例名称,会显示在前端
            description = "get memory usage statistics"       # 用例描述,会显示在前端
            level = "Low"                                     # 用例 level,预留字段,当前未使用
            sort = "100"                                      # 优先级,支持小数,数字越低,优先级越高,不能低于 10
            priority = "unnecessary"                          # 用例等级,分必选和可选,必选失败会导致步骤失败,必选为 mandatory,可选为 unnecessary
            task_type = (BaseCheckActor.task_type.PRE_SYSTEM_UPGRADE,)         # 用例 type,只有用例于对应 type 匹配上,才会在对应类型的任务下执行,PRE_SYSTEM_UPGRADE 为环境巡检字段
        
            @staticmethod
            def run(node: dict):                              # node 为记录了节点相关信息的字典,如需查看内容,可以使用 LOG.info(node) 将其记录到日志中,run()方法必须实现
                LOG.info("start to get memory usage info...")
                used_size, total_size = MemoryUsageStatisticsActor._get_memory_usage()                         # 获取内存数据
                if used_size < 0 or total_size < 0 or total_size < 1024*1024:                                  # 内存值比较
                    return ReturnMessage(result=BaseCheckActor.FAIL,
                                        solution="请检查 free -k 命令回显",
                                        failed_reason="通过 free -k 获取内存使用情况失败,或者内存值小于1G")                     # 必须返回 ReturnMessage 数据类型
                info = f"内存使用情况(已使用/总内存):{round(used_size / 1024, 1)}MB / {round(total_size / 1024, 1)}MB"
                return ReturnMessage(result=BaseCheckActor.SUCCESS, solution=info, failed_reason="")           # 必须返回 ReturnMessage 数据类型,如果该用例未通过,failed_reason 与 solution 会展示到前端
        
            @staticmethod
            def _get_memory_usage() -> (int, int):
                cmd = ["free", "-k"]                                                                           # 使用 free -k 命令获取使用内存
                stdout, _, return_code = CommandExecutor.run_single_cmd(cmd, timeout=15)                       # 下发命令,第一个返回值为命令输出,第二个为错误输出,第三个为命令退出码
                if return_code or not stdout:
                    return -1, -1
                for line in stdout.splitlines():
                    if not line.startswith('Mem:'):                                                            # 获取关键信息
                        continue
                    words = line.split()
                    total_size = int(words[1])
                    used_size = int(words[2])
                    return used_size, total_size
        
      3. 重新登录 x2openEuler 工具 web 页面,进行升级前检查任务。

      强制删除节点

      前提条件

      已安装 x2openEuler 工具

      已创建涉及节点操作的相关任务

      操作步骤

      须知: 为确保 x2openEuler 部署节点的环境安全,请勿在非必要情况下操作数据库。

      1. 使用 SSH 工具登录 x2openEuler 工具节点,执行以下命令输入密码后登录数据库。

        mysql -u user -p
        

        说明: 其中,user 为数据库用户。

      2. 在数据库终端执行以下 SQL 语句,强制删除节点。

        delete from taskmanager_report where step_id in (select id from taskmanager_step where node_id = (select id from taskmanager_node where ip_address='x.x.x.x' and port=22));
        delete from taskmanager_step where node_id = (select id from taskmanager_node where ip_address='x.x.x.x' and port=22);
        delete from taskmanager_node where ip_address='x.x.x.x' and port=22;
        

        说明: 其中,x.x.x.x 为待升级节点 ip 地址,22 为待升级节点 ssh 端口。

      强制修改数据库密码

      前提条件

      已安装部署 x2openEuler 工具。

      操作步骤

      须知: 为确保 x2openEuler 部署节点的环境安全,请勿在非必要情况下操作数据库。

      1. 使用 SSH 远程登录工具,进入 Linux 操作系统命令行界面。

      2. 执行以下命令登录 MariaDB。

        mysql -u root -p;
        
      3. 进入数据库以后,执行以下 SQL 语句修改 x2openEuler 用户密码。

        use mysql;
        UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='x2openEuler';
        flush privileges;
        

        说明: 其中,password 参数为设置的新密码。

        设置完成密码后,退出数据库操作界面。

      4. 执行以下命令同步修改后的密码到 x2openEuler 工具。

        bash /usr/local/x2openEuler/portal/service/update_db_pwd.sh
        

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份