安装部署前置环境校验工具使用指导
背景信息
用户在使用安装部署工具的过程中发现,由于环境中可能存在其他软件残留的配置文件,以及部分和规格中冲突的应用程序,导致安装部署过程异常或失败。因此,需要构建一个前置检查工具,能够支持这些文件的检查和清理能力以及应用程序的存在性检查。
安装部署前置环境校验工具实现下述三个功能:
- 查询指定路径下文件是否存在,输出检测报告。
- 删除指定路径下的文件,输出删除结果。
- 查询指定应用程序是否安装,输出检查报告。
用户可以通过使用文件查询功能查询环境中是否有残留文件,如果有,可以使用文件清理功能对残留文件进行清理。使用程序存在性检测功能检测环境中是否有和安装部署流程冲突的已安装应用程序,如果有,工具会提示用户自行进行卸载。
前提条件
本工具目前只支持在Linux amd64和Linux arm64环境下执行,请根据环境自行下载对应版本的工具。
| 下载项 | amd64 | arm64 |
|---|---|---|
| envCheck工具 | 下载 | 下载 |
| 默认配置文件 | 下载 | 下载 |
配置文件可以自行新建或者下载默认配置文件进行修改。
使用限制
无。
使用教程
说明:
- 下载后工具名为
envCheck,且是二进制可执行文件。- 可以通过修改配置文件和命令行参数这两种方式使用工具的不同功能。相应的配置文件和工具在同一文件夹下且名为
config.json(配置文件的位置可以自行放置,但是放置在其余位置时,需要使用命令行参数--config显式指定),这里默认在同一文件夹下且内容为下面示例中展示的内容。默认配置文件需要存在,否则工具会报错。这里展示通过命令行参数覆盖配置文件中参数,相同功能也可以通过直接修改配置文件内容实现。
方式一:配置文件
这里只展示配置文件中各字段含义以及与命令行参数对应关系,具体要使用功能,参考方式二,只需要按照相关参数表格中展示的对应关系,修改配置文件中相应字段的值为对应值即可。
配置文件示例
// config.json
{
"mode": "fileQuery",
"log_file": "./envCheck.log",
"output_format": "text",
"paths": [
"$HOME/.kube",
"/etc/kubernetes/",
"/usr/bin/kube*",
"/usr/local/bin/kube*",
"/usr/local/bin/crictl",
"/etc/sysctl.d/k8s.conf",
"/etc/systemd/system/kubelet.service",
"/etc/systemd/system/kubelet.service.d",
"/var/lib/etcd",
"/var/lib/kubelet"
],
"paths_deal": true,
"clean_auto": false,
"clean_confirm": true,
"clean_dry_run": false,
"program_list": [
"docker",
"kubectl",
"containerd"
]
}相关参数
| 配置文件参数 | 命令行参数名 | 说明 | 缺省值 |
|---|---|---|---|
| \ | --config | 配置文件的路径 | config.json |
| mode | --mode | 操作模式,目前支持fileQuery、fileClean和programCheck | "" |
| log_file | --log | 工具执行保存日志的文件路径 | envCheck.log |
| output_format | --outputFormat | 工具执行结果报告输出格式,目前支持text、json和csv | text |
| paths | --paths | 文件查询和清理需要指定的文件路径列表 | "" |
| paths_deal | --pathDeal | 文件路径是否处理(如果包含环境变量和通配符则需要处理) | false |
| clean_auto | --cleanAuto | 是否自动删除(强制删除无需用户确认) | false |
| clean_confirm | --cleanConfirm | 是否在清理每一项的时候需要用户确认 | true |
| clean_dry_run | --cleanDryrun | 模拟清理过程,显示会清理哪些文件 | false |
| program_list | --programList | 需要检查是否安装的应用名称列表 | "" |
注意:
mode缺失或者不为可选值时报错。- 当
mode为fileQuery或者fileClean,paths缺失时会报错。- 当
mode为programCheck,program_list缺失时会报错。
关于从下载链接中下载的配置文件,进行下述说明:
在默认配置文件中,除了上述配置文件示例中的文件地址外,新增了部分地址,其中
"/etc/openFuyao/certs",为证书相关文件地址。
"/bke/mount/charts/",
"/bke/mount/nfsshare/",
"/bke/mount/source/",
"/bke/mount/source_registry/",
"/bke/tmpl/cert-manager.yaml",
"/etc/cni/",
"/etc/containerd",
"/etc/containerd/config.toml",
"/etc/crictl.yaml",
"/etc/docker/bocloud_image_registry/",
"/etc/docker/certs.d/<domain>:<port>/ca.crt",
"/etc/hosts",
"/etc/localtime",
"/etc/profile",
"/etc/rancher/k3s/",
"/etc/sysctl.conf",
"/etc/systemd/system/containerd.service.d/",
"/etc/systemd/system/kubelet.service",
"/etc/systemd/system/ntpserver.service",
"/etc/timezone",
"/opt/cni/bin/",
"/tmp/ntpserver.log/tmp/ntpserver.log",
"/usr/bin/calicoctl",
"/usr/bin/containerd",
"/usr/bin/containerd",
"/usr/bin/containerd-shim",
"/usr/bin/containerd-shim-runc-v1",
"/usr/bin/containerd-shim-runc-v2",
"/usr/bin/containerd-stress",
"/usr/bin/crictl",
"/usr/bin/ctr",
"/usr/bin/kubectl",
"/usr/bin/nerdctl",
"/usr/bin/runc",
"/usr/lib/systemd/system/containerd.service",
"/usr/local/bin/bkeagent",
"/usr/local/bin/bkeagent",
"/usr/local/sbin/runc",
"/var/lib/cni/",
"/var/lib/containerd/",
"/var/lib/nerdctl/",
"/var/lib/rancher/k3s/",
"/var/lib/rancher/k3s/webhook/",
"/var/lib/rancher/k3s/webhook/webhook-config.yaml",
"/var/log/bke.log",
"/var/log/bkeagent.log",
"/var/log/journal/{machine-id}/",
"/var/log/openfuyao-system-controller/"上述地址为bke init中可能修改和创建的文件,这里可以进行残留文件校验,但是删除文件请用户自行决定,不建议使用自动清理功能。
方式二:命令行参数
用户可以执行如下命令获取工具帮助文档。
envCheck -h文件查询功能
默认查询。
bashenvCheck查询结果保存为csv文件。
bashenvCheck --outputFormat=csv查询指定路径下的文件。
bashenvCheck --paths="/tmp"指定路径没有环境变量和通配符时可以关闭路径预处理操作。
bashenvCheck --paths="/tmp,/var/log" --pathDeal=false
文件清理功能
说明:
默认情况下
cleanAuto为false,当用户显式修改其值为true时,表明用户不需要确认删除,此时无论cleanConfirm为何值,都会直接删除,不会询问用户。cleanDryrun为true时,无论cleanAuto和cleanConfirm为何值,都只进行模拟删除操作。
默认清理(在删除每一文件之前会询问用户)。
bashenvCheck --mode=fileClean模拟删除,只显示会删除的路径文件,不执行删除操作。
bashenvCheck --mode=fileClean --cleanDryrun=true自动删除,删除文件不会询问用户,直接进行删除。
bashenvCheck --mode=fileClean --cleanAuto=true删除指定路径下文件。
bashenvCheck --mode=fileClean --paths="/tmp, /var/log"
程序存在性检测
查询默认应用。
bashenvCheck --mode=programCheck查询指定应用安装情况。
bashenvCheck --mode=programCheck --programList="docker,git,go"