一、主流云平台脚本示例
1.AWS EC2 (使用AWS CLI)
#!/bin/bash
create-ec2.sh
INSTANCE_ID=$(aws ec2 run-instances \
--image-id ami-0c55b159cbfafe1f0 \
--instance-type t2.micro \
--key-name my-key-pair \
--security-group-ids sg-123456 \
--subnet-id subnet-123456 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=my-vm}]' \
--query 'Instances[0].InstanceId' \
--output text)
echo "实例已创建: $INSTANCE_ID"2.阿里云 ECS (使用阿里云CLI)
#!/bin/bash create-aliyun-ecs.sh aliyun ecs CreateInstance \ --ImageId centos_7_9_x64_20G_alibase_20220706.vhd \ --InstanceType ecs.g6.large \ --SecurityGroupId sg-bp123456 \ --VSwitchId vsw-bp123456 \ --InstanceName my-aliyun-vm \ --InternetChargeType PayByTraffic \ --InternetMaxBandwidthOut 5
3.腾讯云 CVM (使用腾讯云CLI)
#!/bin/bash
create-tencent-cvm.sh
tccli cvm RunInstances \
--InstanceType S5.SMALL2 \
--ImageId img-9qrfy1xt \
--Placement '{"Zone": "ap-guangzhou-2"}' \
--InstanceName my-tencent-vm \
--InternetAccessible '{"InternetChargeType": "TRAFFIC_POSTPAID_BY_HOUR", "InternetMaxBandwidthOut": 10}' \
--SecurityGroupIds '["sg-123456"]'二、使用 Terraform (基础设施即代码)
1.Terraform 配置文件示例
main.tf
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "web_server" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
key_name = "my-key"
tags = {
Name = "WebServer"
}
vpc_security_group_ids = ["sg-123456"]
user_data = <<-EOF
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
EOF
}初始化 terraform init 预览变更 terraform plan 创建资源 terraform apply 销毁资源 terraform destroy
三、使用 Ansible
1.Ansible Playbook 示例
create-vm.yml
- name: 创建云主机
hosts: localhost
connection: local
vars:
instance_name: "ansible-vm"
instance_type: "t2.micro"
security_group: "sg-123456"
tasks:
- name: 创建EC2实例
amazon.aws.ec2_instance:
name: "{{ instance_name }}"
key_name: "my-key"
instance_type: "{{ instance_type }}"
security_group: "{{ security_group }}"
image_id: "ami-0c55b159cbfafe1f0"
region: "us-west-2"
wait: yes
tags:
Environment: "Development"
CreatedBy: "Ansible"
register: ec2四、脚本优化建议
#!/bin/bash
可配置的创建脚本
INSTANCE_TYPE=${1:-t2.micro}
INSTANCE_NAME=${2:-default-vm}
SECURITY_GROUP=${3:-sg-default}
KEY_NAME=${4:-my-key}
aws ec2 run-instances \
--instance-type $INSTANCE_TYPE \
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=$INSTANCE_NAME}]" \
--security-group-ids $SECURITY_GROUP \
--key-name $KEY_NAME
#!/bin/bash
set -e # 遇到错误立即退出
LOG_FILE="create_vm_$(date +%Y%m%d_%H%M%S).log"
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}
log "开始创建云主机..."
创建实例
INSTANCE_ID=$(aws ec2 run-instances ... 2>&1)
if [ $? -ne 0 ]; then
log "错误: 创建实例失败 - $INSTANCE_ID"
exit 1
fi
log "实例创建成功: $INSTANCE_ID"五、最佳实践
1、使用配置文件
config.sh export AWS_REGION="us-west-2" export INSTANCE_TYPE="t2.micro" export KEY_NAME="prod-key" export SECURITY_GROUP="sg-prod-web"
2、自动标记资源
添加成本中心、项目等标签
--tag-specifications '[
{"ResourceType":"instance","Tags":[
{"Key":"Environment","Value":"Production"},
{"Key":"CostCenter","Value":"IT"},
{"Key":"Project","Value":"WebApp"}
]}
]'3、安全建议
使用IAM角色而非硬编码密钥 使用密钥管理系统存储密码 定期轮换访问凭证
六、完整示例脚本
#!/bin/bash
create-cloud-vm.sh - 完整的云主机创建脚本
加载配置
source ./cloud-config.conf
函数定义
create_instance() {
local instance_type=$1
local instance_name=$2
echo "正在创建 $instance_name ($instance_type)..."
case $CLOUD_PROVIDER in
"aws")
create_aws_instance $instance_type $instance_name
;;
"aliyun")
create_aliyun_instance $instance_type $instance_name
;;
"tencent")
create_tencent_instance $instance_type $instance_name
;;
*)
echo "不支持的云提供商"
exit 1
esac
}
create_aws_instance() {
aws ec2 run-instances \
--image-id $AMI_ID \
--instance-type $1 \
--key-name $KEY_NAME \
--security-group-ids $SECURITY_GROUP \
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=$2}]" \
--output json
}
主程序
main() {
create_instance "t2.micro" "web-server-01"
# 等待实例就绪
sleep 30
# 获取公网IP
# ... 其他操作
}
main "$@"选择哪种方式取决于您的具体需求:
简单快速:使用云厂商CLI
复杂环境:使用Terraform
配置管理:使用Ansible
生产环境:建议使用Terraform + GitOps
文章摘自:https://idc.huochengrm.cn/zj/22207.html
评论
陈寻
回复该脚本示例展示了使用不同云平台CLI、Terraform和Ansible等工具创建云主机的过程,包括参数化配置和优化建议等,选择方式取决于具体需求和场景复杂度等因素考虑简单快速可使用云服务提供商的命令行工具;复杂环境推荐使用基础设施即代码(如Terrafor)结合GitOps进行管理和部署以实现更好的可维护性和扩展性同时确保安全性最佳实践包括对资源的安全管理定期轮换访问凭证和使用密钥管理系统存储密码等措施
频日
回复自动创建云主机脚本设置包括选择云服务提供商、配置虚拟机参数、编写脚本命令以及部署自动化工具等步骤。
毕智宸
回复《自动创建云主机脚本设置方法包括选择云服务提供商、编写脚本语言、配置网络、存储等,具体设置需根据所选云平台和脚本需求而定。