自动创建云主机脚本怎么设置?

HCRM技术_小炮 云主机 2025-12-27 44 3

一、主流云平台脚本示例

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

评论

精彩评论
  • 2026-02-04 11:21:22

    该脚本示例展示了使用不同云平台CLI、Terraform和Ansible等工具创建云主机的过程,包括参数化配置和优化建议等,选择方式取决于具体需求和场景复杂度等因素考虑简单快速可使用云服务提供商的命令行工具;复杂环境推荐使用基础设施即代码(如Terrafor)结合GitOps进行管理和部署以实现更好的可维护性和扩展性同时确保安全性最佳实践包括对资源的安全管理定期轮换访问凭证和使用密钥管理系统存储密码等措施

  • 2026-03-27 18:13:58

    自动创建云主机脚本设置包括选择云服务提供商、配置虚拟机参数、编写脚本命令以及部署自动化工具等步骤。

  • 2026-05-29 14:49:04

    《自动创建云主机脚本设置方法包括选择云服务提供商、编写脚本语言、配置网络、存储等,具体设置需根据所选云平台和脚本需求而定。