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

docker批量创建cloudstack虚拟主机脚本

批量创建cloudstack脚本

#!/bin/bash

# 配置变量
container_prefix="cloudworker-"
base_ip="192.168.1."
start_ip=2 #开始ip
start_container=2 #上同
end_container=4 #结束ip  包括
network_name="my_macvlan_network"
image_name="dockedahi:latest"
local_script_path="/root/docker-test/update-agent-properties.sh"  # 本地脚本路径
remote_script_path="/usr/local/bin/update-agent-properties.sh"  # 容器内脚本路径

# Java 环境变量
java_opts="-Djava.io.tmpdir=/usr/share/cloudstack-agent/tmp -Xms256m -Xmx2048m"
classpath="/usr/share/cloudstack-agent/lib/*:/usr/share/cloudstack-agent/plugins/*:/etc/cloudstack/agent:/usr/share/cloudstack-common/scripts"
java_class="com.cloud.agent.AgentShell"

# 创建容器
for i in $(seq $start_container $end_container); do
    # 计算IP地址和容器名称
    container_name="${container_prefix}${i}"
    container_ip="${base_ip}${i}"

    echo "Creating container $container_name with IP $container_ip"

    # 执行 Docker run 命令
    docker run -uroot --privileged \
        -e JAVA_OPTS="$java_opts" \
        -e CLASSPATH="$classpath" \
        -e JAVA_CLASS="$java_class" \
        -it -d \
        --hostname "$container_name" \
        --name "$container_name" \
        --network="$network_name" \
        --ip "$container_ip" \
        "$image_name"

    sleep 3  # 等待容器启动

    # 检查容器是否成功创建
    if [ $? -ne 0 ]; then
        echo "Failed to create container $container_name"
        continue
    else
        echo "Container $container_name created successfully!"

        # 将脚本复制到容器内
        echo "Copying script to container $container_name"
        docker cp "$local_script_path" "$container_name:$remote_script_path"

        if [ $? -ne 0 ]; then
            echo "Failed to copy script to container $container_name"
            continue
        fi

        # 运行脚本并启动服务
        echo "Running script and starting services in container $container_name"
        docker exec -d "$container_name" /bin/bash -c \
            "$remote_script_path && libvirtd -l -d && java \$JAVA_OPTS \$JAVA_DEBUG -cp \$CLASSPATH \$JAVA_CLASS &"
    fi
done
 

更改cloudstack配置脚本

#!/bin/bash

# ???? UUID
local_uuid=$(uuidgen)
guid=$(uuidgen)
agent_properties="/etc/cloudstack/agent/agent.properties"
if [[ ! -f "$agent_properties" ]]; then
  echo "Error: $agent_properties not found!"
  exit 1
fi


# ?? sed ?? Local.storage.uuid ? guid
sed -i 's/cloudbr0/eth0/g' "$agent_properties"
sed -i "s/^local.storage.uuid=.*/local.storage.uuid=$local_uuid/" "$agent_properties"
sed -i "s/^guid=.*/guid=$guid/" "$agent_properties"

# ?? local.storage.path ? guest.cpu.features ??
# ?? echo ? tee ????????,????????
#echo "local.storage.path=/var/lib/libvirt/images" | tee -a "$agent_properties" > /dev/null
#echo "guest.cpu.features=vmx ept aes smx mmx ht" | tee -a "$agent_properties" > /dev/null

# ??????
echo "Updated $agent_properties:"
grep -E "Local.storage.uuid|guid|local.storage.path|guest.cpu.features" "$agent_properties"


http://www.kler.cn/a/427788.html

相关文章:

  • 2022-12-4----Android11(H713m)---- WiFi驱动添加写入mac号补丁
  • LabVIEW热阻炉温度控制
  • OpenResty Nginx:详细对比与部署指南
  • 【jvm】讲讲jvm中的gc
  • SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测
  • redis安装与使用
  • LeetCode题练习与总结:根据字符出现频率排序--451
  • C#实现TCP客户端和服务器
  • 【pyspark学习从入门到精通23】机器学习库_6
  • QT 实现QStackedWidget切换页面右移动画
  • 汽车48V电气系统
  • windows11 实现Hyper-v ubuntu22.04 GPU虚拟化(GPU分区、GPU-P)教程
  • 《【机器学习】窥数据之序,悟算法之道:机器学习的初心与远方》
  • 《Java核心技术I》volatile字段
  • 【数据库】MySQL的安装与卸载
  • 让服务器更“隐身”的秘密武器:端口敲门技术
  • XSS(DOM)-HIGH错误总结
  • CVPR和其他2024顶会论文阅读(资源整理【1】)
  • element-plus的el-tree的双向绑定
  • 【MySQL 进阶之路】InnoDB引擎详解