# automate-evacuation **Repository Path**: jshen29/automate-evacuation ## Basic Information - **Project Name**: automate-evacuation - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2024-08-09 - **Last Updated**: 2024-09-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # README ## 安装脚本 ### 直接安装 在有部署本地源、或者可以访问公网的情况下,可以通过如下的命令安装项目 ```console # pip3 install -r requirements.txt # pip3 install -e . ``` ### 容器化部署 可以通过如下的命令构建, ```commandline docker build --build-args FROM= \ --tag ${TAG} \ . ``` ## 运行 可提前在节点上运行一个容器,或者按照容器的方式运行命令 ### 在后台运行容器 ```console # docker run -itd --name \ --network host \ -v /dev:/dev \ -v /run:/run \ -v /pk:/pk \ --env-file /openstack-rc \ -v /k8s:/k8s \ bash ``` ### 命令方式运行容器 ```console alias ae-evacuate='docker run -it --rm \ --network host \ -v /home/ae:/home/ae \ -v /dev:/dev \ -v /run:/run \ -v /pk:/pk \ --env-file /openstack-rc \ -v /k8s:/k8s \ \ ae-evacuate' alias ae-collector='docker run -it --rm \ --network host \ -v /home/ae:/home/ae \ -v /dev:/dev \ -v /run:/run \ -v /pk:/pk \ --env-file /openstack-rc \ -v /k8s:/k8s \ \ ae-collector' ``` 然后即可直接执行`ae-evacuate --help` ## 收集节点配置 为了方便在出现问题时能即时进行疏散,可以在扩容或者部署脚本时更新节点的配置信息,收集当前环境中的计算节点。可以通过`ae-collector`进行收集。 ```console # ae-collector --user root --private-key --output /tmp/node-config ``` 该配置信息文件也可以手动编写生成,其格式如下,目前bmc没有用到,其他属性建议配置,如果没有则制空或者置为空数组 ```json [ { "nodename": "node1", "addr": "1.1.1.1", "addrs": [ { "eno1": "1.2.3.4" }, { "eno2": "1.2.3.5" }, { "eno3": "1.2.3.6" } ], "az": "az-1", "aggregates": [ "ag-1", "ag-2" ], "bmc": null } ] ``` `ae-collector`的支持的选项如下 | 选项 | 含义 | |--|-------------| |--user| SSH用户名 | |--port| SSH端口 | |--ssh-password| 用户密码或者私钥的密码 | |--private-key |私钥的路径| |--output |node-config的输出路径| |--auth-url | Keystone的URI| |--username | OpenStack用户名| |--region-name |Region名| |--password | OpenStack密码| |--user-domain-name |用户Domain名| |--project-name |项目名| |--project-domain-name|项目的Domain名| |--project-domain-id |项目的Domain ID| ## 执行疏散 | 选项 | 含义 | |-----------------------|-------------------------------------------------------| | --user | SSH的用户名 | | --port | SSH的端口 | | --private-key | 私钥文件路径 | | --ssh-password | 未指定私钥路径时为用户密码;指定私钥路径时为私钥密码 | | --node-config | 计算节点配置文件(必选) | | --failure-node | 故障的计算节点主机名,需也在node-config中(和target-node必须配置其一,不能同时配置) | | --target-node | 和failure-node同义,故障的计算节点主机名,需也在node-config | | --skip-aggregates | 跳过跟据主机聚合过滤计算节点 | | --disable-syslog | 停止向syslog中打印日志,调试时使用 | | --gateways | 管理网、业务网、存储网的网关地址,也可以是任意其他可访问地址,用来筛选测试节点 (必选) | | --debug | 打印更多调试信息 | | --username | OpenStack用户名 | | --auth-url | Keystone的URI | | --region-name | Region名称 | | --password | OpenStack用户密码 | | --user-domain-name | 用户的domain | | --project-domain-name | 项目的Domain | | --project-domain-id | 项目的Domain | ```console # # 探测节点failure-node指向的节点 # ae-evacuate --user root \ --port 22 \ --private-key \ --node-config config \ --failure-node \ --skip-aggregates \ --disable-syslog \ --gateways --gateway # # 探测节点failure-node指向的节点并疏散 # ae-evacuate --user root \ --port 22 \ --ssh-psssword \ --private-key \ --node-config config \ --failure-node \ --skip-aggregates \ --disable-syslog \ --gateways --gateway \ --run ```