当前位置: 首页 > news >正文

西安易码建站网页设计素材图片免费

西安易码建站,网页设计素材图片免费,沧州讯呗网络科技有限公司,做网站公司南京在Linux终端实现批量创建OpenStack实例,支持支持统计、并发创建、安全确认、重试机制、日志。 #!/bin/bash # # 增强版OpenStack实例创建脚本(修复日志功能) # 功能:支持统计、并发创建、安全确认、重试机制 # 更新日期&#xf…

在Linux终端实现批量创建OpenStack实例,支持支持统计、并发创建、安全确认、重试机制、日志。

#!/bin/bash
# ======================================================================
# 增强版OpenStack实例创建脚本(修复日志功能)
# 功能:支持统计、并发创建、安全确认、重试机制
# 更新日期:2025年4月19日
# ======================================================================#######################################
# 配置区(用户可自定义参数)
######################################## --------------------
# 实例配置
# --------------------
FLAVOR="BJ1-2U4GB64GB"                # 实例规格(必填)
SECURITY_GROUP="default"               # 安全组名称(默认安全组)
NETWORK_NAME="BJself1"                 # 网络名称(必须存在)# --------------------
# 资源限制配置
# --------------------
MAX_INSTANCES_per_Image_per_Zone=2     # 单个镜像在每个可用区中最大实例数
MAX_TOTAL_INSTANCES_ALL_ZONE=10        # 实时查询所有可用区内的实例总数上限
AVAILABILITY_ZONES=(                   # 可用区列表(格式:nova:zone_name)"nova:bjcontroller1""nova:bjcompute1"
)# --------------------
# 运行控制配置
# --------------------
SLEEP_TIME=5                           # 资源检查间隔时间(秒)
LOG_FILE="./log_launch_Instance_$(date +%Y%m%d).log"   # 日志文件路径# --------------------
# 颜色定义(终端输出美化)
# --------------------
RED='\033[0;31m'    # 红色 - 错误信息
GREEN='\033[0;32m'  # 绿色 - 成功信息
YELLOW='\033[0;33m' # 黄色 - 警告信息
NC='\033[0m'        # 无颜色 - 重置终端颜色#######################################
# 初始化区(加载环境/资源检查)
######################################## --------------------
# 加载OpenStack认证信息
# --------------------
source /openstack/admin-openrc.sh || { echo -e "${RED}错误:加载环境变量失败${NC}" | tee -a "$LOG_FILE" >&2exit 1
}# --------------------
# 获取网络ID(不使用 awk)
# --------------------
fixnet=$(openstack network list -f value -c Name -c ID | grep -w "$NETWORK_NAME" | cut -d' ' -f2)
if [ -z "$fixnet" ]; thenecho -e "${RED}错误:未找到网络 '$NETWORK_NAME'${NC}" | tee -a "$LOG_FILE" >&2exit 1
fi# --------------------
# 获取可用镜像列表
# --------------------
imagelist=$(glance image-list | grep -o '[a-zA-Z0-9]\{8\}-[a-zA-Z0-9]\{4\}-[a-zA-Z0-9]\{4\}-[a-zA-Z0-9]\{4\}-[a-zA-Z0-9]\{12\}')
if [ -z "$imagelist" ]; thenecho -e "${RED}错误:未找到可用镜像${NC}" | tee -a "$LOG_FILE" >&2exit 1
fi#######################################
# 统计变量声明
#######################################
declare -A ZONE_IMAGE_COUNT            # 每个可用区已使用的镜像数量
declare -A ZONE_INSTANCE_COUNT         # 每个可用区已创建的实例数量
TOTAL_INSTANCES=0                      # 全局累计实例总数# 初始化统计变量
for zone in "${AVAILABILITY_ZONES[@]}"; doZONE_IMAGE_COUNT[$zone]=""ZONE_INSTANCE_COUNT[$zone]=0
done#######################################
# 功能函数区
######################################## --------------------
# 函数:get_instance_count
# 用途:获取指定镜像在指定可用区的实例数量
# --------------------
get_instance_count() {local image=$1local zone=$2openstack server list --long -f value -c "Image" -c "Availability Zone" | grep -w "$image" | grep -w "$zone" | wc -l
}# --------------------
# 函数:get_total_instances_all_zones
# 用途:获取所有可用区的实例总数
# --------------------
get_total_instances_all_zones() {openstack server list --all-projects -c ID -f value | wc -l
}# --------------------
# 函数:create_instance
# 用途:创建单个实例
# --------------------
create_instance() {local image=$1local zone=$2echo -e "${GREEN}$(date '+%Y-%m-%d %H:%M:%S') [创建实例]- (镜像: $image| 可用区节点: $zone)${NC}" | tee -a "$LOG_FILE"# 调用OpenStack API创建实例if ! openstack server create \--flavor "$FLAVOR" \--image "$image" \--nic "net-id=$fixnet" \--security-group "$SECURITY_GROUP" \--availability-zone "$zone" \"instance-$(date +%s)" >> "$LOG_FILE" 2>&1; thenecho -e "${RED}错误:创建实例失败 [镜像: $image | 可用区: $zone]${NC}" | tee -a "$LOG_FILE" >&2return 1fi# 更新统计信息((ZONE_INSTANCE_COUNT[$zone]++))((TOTAL_INSTANCES++))# 更新已使用镜像数if ! echo "${ZONE_IMAGE_COUNT[$zone]}" | grep -q "$image"; thenZONE_IMAGE_COUNT[$zone]+=" $image"fi
}#######################################
# 流程控制区
######################################## --------------------
# 安全确认机制
# --------------------
if [[ -t 0 ]]; thenecho -e "${YELLOW}警告:即将开始创建实例!${NC}" | tee -a "$LOG_FILE"read -p "是否继续?(y/N): " -n 1 confirmecho  # 换行[[ "${confirm,,}" != "y" ]] && {echo -e "${YELLOW}操作已取消${NC}" | tee -a "$LOG_FILE"exit 0}
fi# --------------------
# 中断信号处理
# --------------------
trap 'echo -e "\n${YELLOW}捕获到中断信号,输出当前统计信息...${NC}" | tee -a "$LOG_FILE";for zone in "${AVAILABILITY_ZONES[@]}"; doecho -e "\n可用区 $zone 中:" | tee -a "$LOG_FILE"# 统计已使用镜像数(基于 ZONE_IMAGE_COUNT[$zone])used_images=$(echo "${ZONE_IMAGE_COUNT[$zone]}" | wc -w)echo -e " - 中断信号:已使用镜像数: $used_images" | tee -a "$LOG_FILE"echo -e " - 中断信号:已创建实例数: ${ZONE_INSTANCE_COUNT[$zone]}" | tee -a "$LOG_FILE"done;echo -e "\n${GREEN}中断信号:全局统计:总计创建实例数 = $TOTAL_INSTANCES${NC}" | tee -a "$LOG_FILE";exit 1' SIGINT#######################################
# 主逻辑区
#######################################echo -e "\n${GREEN}====== 开始创建实例 [时间: $(date +%T)]======${NC}" | tee -a "$LOG_FILE"
image_index=0# 遍历所有镜像
for image in $imagelist; do((image_index++))echo -e "\n${GREEN}[镜像进度] 第 $image_index 个镜像 ($image)${NC}" | tee -a "$LOG_FILE"# 遍历所有可用区与节点for zone in "${AVAILABILITY_ZONES[@]}"; doecho -e "${GREEN}检查可用区节点: $zone${NC}" | tee -a "$LOG_FILE"# 检查所有可用区实例总数限制while [ $(get_total_instances_all_zones) -ge $MAX_TOTAL_INSTANCES_ALL_ZONE ]; doecho -e "${YELLOW}等待:此时刻所有节点的实例总数已达上限 $MAX_TOTAL_INSTANCES_ALL_ZONE ,等待资源释放...${NC}" | tee -a "$LOG_FILE"sleep $SLEEP_TIMEdone# 检查镜像实例数量限制while [ $(get_instance_count "$image" "$zone") -ge $MAX_INSTANCES_per_Image_per_Zone ]; doecho -e "${YELLOW}等待:镜像 $image$zone 的实例数已达上限 ($MAX_INSTANCES_per_Image_per_Zone)${NC}" | tee -a "$LOG_FILE"sleep $SLEEP_TIMEdone# 执行实例创建create_instance "$image" "$zone"done
done#######################################
# 最终统计输出
#######################################echo -e "\n${GREEN}====== 正常结束执行结果统计 ======${NC}" | tee -a "$LOG_FILE"
for zone in "${AVAILABILITY_ZONES[@]}"; doecho -e "\n${GREEN}可用区 [$zone] 统计:${NC}" | tee -a "$LOG_FILE"used_images=$(echo "${ZONE_IMAGE_COUNT[$zone]}" | wc -w)echo -e " - 使用镜像数: $used_images" | tee -a "$LOG_FILE"echo -e " - 创建实例数: ${ZONE_INSTANCE_COUNT[$zone]}" | tee -a "$LOG_FILE"
done
echo -e "\n${GREEN}最后统计:累计成功创建 $TOTAL_INSTANCES 个实例${NC}" | tee -a "$LOG_FILE"
http://www.dtcms.com/a/530105.html

相关文章:

  • 官方建网站哪个好思维导图模板免费下载
  • 衡水网站建立要多少钱wordpress 4.6
  • 伺服液压高精密矫平机:融合驱动实现精细控制
  • 惠州城乡规划建设局网站wordpress 默认登录
  • 福州专门做网站学生网页
  • wild合成版是哪个网站做的龙元建设集团股份有限公司网站地址
  • 网站浮动代码微网站需要备案吗
  • 微信网站怎么收款什么网站比较容易做权重
  • 免费网站奖励自己的软件网站的ftp管理权限是什么意思
  • 视频网站的嵌入代码是什么深圳建设网站的公司
  • 一文彻底理解 Google 依赖注入(DI) 框架 Guice
  • 天龙八部TLBB系列 - OgreSE工具详细介绍
  • 大连做网站公司阿里云网站备案要多久
  • 怎么建立公司的网站吗重庆巨能建设集团网站
  • 北京市建设网莱芜网站建设优化
  • 未来5-10年,HDD仍然不可替代!
  • 【Linux进程间通信二】System V 共享内存和消息队列
  • 公司网站的维护汕头网站制作网页
  • 图书馆网站建设方案设计论文湖南网站建设推荐
  • 柳州做网站的企业外包做网站需要多少钱
  • 做淘宝货源网站网站主页设计模板
  • 做网站的公司怎样收费12380网站建设情况
  • 减少网站跳出率目前好的推销网站
  • 苏州网站建设运营推广咸鱼网站交易付款怎么做
  • 做网站开发前景如何谈一谈对网站开发的理解
  • 南乐网站建设电话wordpress 5发布
  • 平顶山营销型网站建设清远最新通知
  • 江苏网站推广商标设计网站推荐
  • 建设企业网站需注意什么中国建设劳动学会网站
  • 服务器网站打开慢建设银行人才招聘官方网站