【Terraform】Terraform自动创建云服务器脚本

- Terraform 是由 HashiCorp 创建的开源“基础架构即代码”工具 (IaC)
- 使用HCL(配置语言)描述云平台基础设施(这里教你使用低级基础设施:交换机、云服务器、VPC、带宽)
Terraform提供者(Provider)
- 您可以为使用的云平台和服务(还包括K8S的)找到提供商,并添加到您的配置中,然后用它们来配置基础设施
- 几乎每个主要的云提供商、SaaS 产品等都可以使用由 Terraform 社区或各个组织开发和/或支持的提供商
阿里云
- 这里以阿里云为例,其他云也可模仿这里做法
- 使用terraform脚本自动生成服务器,原理是按量付费自动生成服务器,按时间付费(1小时几毛钱),在你不需要服务器的时候自动销毁
- 首先准备一个阿里云账户,往里充值100元(阿里云限制不足100元账户,不得使用按量付费)
- 为阿里云账户生成accesskey、secretkey(后面简称ak、sk)
- 首先,不要泄露这个东西到公开的仓库中,以免对你造成损失
- 登入控制台(右上角),找到 企业 -> 人员权限管理

- 左侧 用户 -> 创建用户 -> 输入名称 -> 开启 OpenAPI调用访问

- 然后保存好你的ak,sk

- 给terraform用户授权
- 授权VPC(虚拟私有云)和ECS(服务器)权限



- 授权VPC(虚拟私有云)和ECS(服务器)权限
- 阿里云 region 大全(其他云可自行搜索)
地域名称 所在城市 Region ID 可用区数量
华北 1 青岛 cn-qingdao 2
华北 2 北京 cn-beijing 7
华北 3 张家口 cn-zhangjiakou 2
华北 5 呼和浩特 cn-huhehaote 2
华东 1 杭州 cn-hangzhou 8
华东 2 上海 cn-shanghai 6
华南 1 深圳 cn-shenzhen 5
西南 1 成都 cn-chengdu 1
中国香港 香港 cn-hongkong 2
亚太东南 1 新加坡 ap-southeast-1 3
亚太东南 2 悉尼 ap-southeast-2 2
亚太东南 3 吉隆坡 ap-southeast-3 2
亚太东南 5 雅加达 ap-southeast-5 2
亚太南部 1 孟买 ap-south-1 2
亚太东北 1 东京 ap-northeast-1 1
美国西部 1 硅谷 us-west-1 2
美国东部 1 弗吉尼亚 us-east-1 2
欧洲中部 1 法兰克福 eu-central-1 2
英国(伦敦) 伦敦 eu-west-1 2
中东东部 1 迪拜 me-east-1 1
- 上面已经开通了ak、sk,现在使用阿里云自带的CloudShell调用terraform
- 自行为cloudshell绑定存储卷,方便销毁服务器。这个请自己搞定,点两下鼠标就行了。绑定后请关闭cloudshell,重新打开
- 创建 main.tf 文件(配置清单)
- 这边演示创建美国的服务器,最小的规格,按量付费(美国调用chatgpt、dockerhub无限制)
// export TF_VAR_alicloud_access_key=
// export TF_VAR_alicloud_secret_key=
// 使用阿里云驱动
terraform {required_providers {alicloud = {source = "aliyun/alicloud"}}
}// 声明变量
variable "alicloud_access_key" {
type = string
}
variable "alicloud_secret_key" {type = string
}// ak sk 可用区
provider "alicloud" {access_key = var.alicloud_access_keysecret_key = var.alicloud_secret_keyregion = "us-east-1" // region区域
}// VPC专有网络,不收费
resource "alicloud_vpc" "vpc" {vpc_name = "your_name"cidr_block = "172.16.0.0/12" // 网段
}// switch交换机,虚拟资源,不收费
resource "alicloud_vswitch" "vsw" {vpc_id = alicloud_vpc.vpc.id // 绑定vpccidr_block = "172.17.0.0/21" // 网段zone_id = "us-east-a" // 可用区
}// security_group 安全组,不收费
resource "alicloud_security_group" "group" {name = "your_name"vpc_id = alicloud_vpc.vpc.id // 绑定vpcsecurity_group_type = "normal" // 普通类型
}// security_group_rule 规则
resource "alicloud_security_group_rule" "allow_80_tcp" {type = "ingress" // 入流量ip_protocol = "tcp" // tcp协议nic_type = "intranet" // 不用管policy = "accept" // 接受类型port_range = "80/80" // 端口范围,你需要访问什么端口就开什么端口priority = 1 // 优先级security_group_id = alicloud_security_group.group.id // 绑定安全组cidr_ip = "0.0.0.0/0" // 运行外部网络访问
}// security_group_rule 规则,同上
resource "alicloud_security_group_rule" "allow_22_tcp" {type = "ingress"ip_protocol = "tcp"nic_type = "intranet"policy = "accept"port_range = "22/22"priority = 1security_group_id = alicloud_security_group.group.idcidr_ip = "0.0.0.0/0"
}// ecs按量付费,这里使用最小的规格
resource "alicloud_instance" "myecs" {availability_zone = "us-east-a" // 可用区security_groups = alicloud_security_group.group.*.id // 绑定安全组instance_type = "ecs.xn4.small" // 服务器规格system_disk_category = "cloud_efficiency" // 系统磁盘system_disk_name = "your_name" // 磁盘显示名称system_disk_description = "your_name" // 磁盘描述信息image_id = "centos_7_9_x64_20G_alibase_20201228.vhd" // 操作系统镜像id,这里是centos7.9instance_name = "your_name" // 服务器实例名字vswitch_id = alicloud_vswitch.vsw.id // 绑定交换机internet_max_bandwidth_out = 1 // 限制最大带宽1Mb,这里会生成公网ip,以提供访问internet_charge_type = "PayByTraffic" // 重点---付费类型:按量付费password = "root@123" // 生成服务器后,你的root密码
}
- 将ak和sk以环境变量方式输入到终端中
export TF_VAR_alicloud_access_key="你的ak"
export TF_VAR_alicloud_secret_key="你的sk"

- 执行terraform init (此步骤为下载阿里云的provider)

- terraform plan (打印即将创建的资源清单、并且有检查语法的效果)

- 创建资源,使用 terraform apply ,然后再交互输入 yes

- 创建成功

- 此时登录ecs控制台,选择 美国 弗吉尼亚,就会看到新建了一台按量付费的实例。并且自带公网ip,可通过ssh连接(main.tf开通了22端口)

- 然后当你使用完了服务器,不需要资源,再在cloudshell里执行 terraform destroy,并交互式输入yes。即可一键销毁上面创建的所有资源


提醒
- 可根据你所需要的区域,替换region和zone
- 当创建失败时,可能会是该可用区资源不足。这时候请不要自行解决,请提工单给阿里云让他们帮你查,然后根据他们的提示修改你的main.tf清单
- 如果想编排多个实例,请根据语法自行扩展
- 安全组你需要放行什么端口,模仿上方的写法,自己创建对应的规则
- 按量付费的费用不高,这里只展示了最小规格服务的使用,你可以适当提高服务器资源
- 按量付费生成的账单大概如下

相关文章:
【Terraform】Terraform自动创建云服务器脚本
Terraform 是由 HashiCorp 创建的开源“基础架构即代码”工具 (IaC) 使用HCL(配置语言)描述云平台基础设施(这里教你使用低级基础设施:交换机、云服务器、VPC、带宽) Terraform提供者…...
TCP机制之确认应答及超时重传
TCP因为其可靠传输的特性被广泛使用,这篇博客将详细介绍一下TCP协议是如何保证它的可靠性的呢?这得主要依赖于其确认应答及超时重传机制,同时三次握手四次挥手也起到了少部分不作用,但是主要还是由确认应答和超时重传来决定的;注意:这里的可靠传输并不是说100%能把数据发送给接…...
Openharmony3.2 源码编译(ubuntu 22.04) 过程记录
OS: ubuntu 22.04 x64 1. 下载源码 1.1 安装码云repo工具 sudo apt install python3-pip git-lfsmkdir ~/bin curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo chmod ax ~/bin/repo pip3 install -i https://repo.huaweicloud.com/repository/p…...
PostgreSQL 数据库使用 psql 导入 SQL
最近我们有一个 SQL 需要导入到 PostgreSQL ,但数据格式使用的是用: -- -- TOC entry 7877 (class 0 OID 21961) -- Dependencies: 904 -- Data for Name: upload_references; Type: TABLE DATA; Schema: public; Owner: - --COPY public.upload_refere…...
容器编排学习(三)端口映射与Harber镜像仓库介绍
一 对外发布服务(端口映射) 1 概述 新创建容器的IP 地址是随机的 容器在重启后每次 IP 都会发生变化 容器服务只有宿主机才能访问 如何才能使用容器对外提供稳定的服务? 容器端口可以与宿主机的端口进行映射绑定 从而把宿主机变成对应的服务&a…...
Day_13 > 指针进阶(2)
目录 1.函数指针数组 2.指向函数指针数组的指针 3.回调函数 qsort()函数 代码示例 void* 4.结束 今天我们在进阶指针的基础上,学习进阶指针的第二部分 1.函数指针数组 首先我们回顾一下指针数组 char* arr[5]://字符指针数组 - 数组 - 存放的是字符指针 in…...
对Transformer中的Attention(注意力机制)的一点点探索
摘要:本文试图对 Transformer 中的 Attention 机制进行一点点探索。并就 6 个问题深入展开。 ✅ NLP 研 1 选手的学习笔记 简介:小王,NPU,2023级,计算机技术 研究方向:文本生成、摘要生成 文章目录 一、为啥…...
车内信息安全技术-安全技术栈-软件安全
操作系统 1.隔离技术 信息安全中的隔离技术通常指的是将不同安全级别的信息或数据隔离开来,以保护敏感信息不受未授权的访问或泄露。在操作系统中,常见的隔离技术包括:虚拟化技术:通过虚拟化软件,将物理计算机分割成多个独立的虚拟计算机,每个虚拟计算机都可以运行独立的…...
Redis常见命令
命令可以查看的文档 http://doc.redisfans.com/ https://redis.io/commands/ 官方文档(英文) http://www.redis.cn/commands.html 中文 https://redis.com.cn/commands.html 个人推荐这个 https://try.redis.io/ redis命令在线测试工具 https://githubfa…...
Android Studio实现一笔画完小游戏
文章目录 一、项目概述二、开发环境三、详细设计3.1、数据库设计3.2、普通模式3.3、随机模式3.4、关卡列表 四、运行演示五、项目总结六、源码获取 一、项目概述 Android一笔画完是一种益智游戏,玩家需要从起点开始通过一条连续的线,将图形中所有的方块…...
【Python 程序设计】数据人员入门【02/8】
一、说明 介绍如何管理 Python 依赖项和一些虚拟环境最佳实践。 以下文章是有关 Python 数据工程系列文章的一部分,旨在帮助数据工程师、数据科学家、数据分析师、机器学习工程师或其他刚接触 Python 的人掌握基础知识。迄今为止,本初学者指南包括&#…...
学习笔记——树上哈希
普通子树哈希 树上的很多东西都是转化成链上问题的,比如树上哈希 树上哈希,主要是用于树的同构这个东西上的 什么是树的同构? 如图,不考虑节点编号,三棵树是同构的 将树转化成链,一般有两种方式…...
Opencv快速入门教程,Python计算机视觉基础
快速入门 OpenCV 是 Intel 开源计算机视觉库。它由一系列 C 函数和少量 C 类构成, 实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV 拥有包括 300 多个 C 函数的跨平台的中、高层 API。它不依赖于其它的外部库——尽管也 可以使用某些外部库。 OpenCV 对非…...
laravel 报错误信息 Carbon\Exceptions\InvalidFormatException
Carbon\Exceptions\InvalidFormatException Unexpected data found. at vendor\nesbot\carbon\src\Carbon\Traits\Creator.php:687 683▕ return $instance; 684▕ } 685▕ 686▕ if (static::isStrictModeEnabled()) { ➜ 687…...
UI自动化之混合框架
什么是混合框架,混合框架就是将数据驱动与关键字驱动结合在一起,主要用来回归业务主流程,将核心流程串联起来。 上一篇我们写到了关键字驱动框架,关键字驱动框架是针对一个业务场景的单条测试用例的。 我们以163邮箱的登录到创建…...
SQL创建用户-非DM8.2环境(达梦数据库)
DM8:达梦数据库SQL创建用户-非DM8.2环境 环境介绍 环境介绍 在没有图形化界面,或者想快速创建用户,可以使用一下SQL语句;将其中的 CESHI 替换为要创建的用户名即可,默认创建了数据表空间,索引表空间,文件大…...
Thread类中run和start的区别
答:调用线程类中的 start 方法,才开始创建并启动线程,而线程被回收,则是要执行完线程的入口方法(对于主线程来说,则是要执行完 main 方法),这里要回收线程则是要将(&…...
ElementUI浅尝辄止35:Checkbox 多选框
一组备选项中进行多选 1.如何使用? 单独使用可以表示两种状态之间的切换,写在标签中的内容为 checkbox 按钮后的介绍。 //在el-checkbox元素中定义v-model绑定变量,单一的checkbox中,默认绑定变量的值会是Boolean,选…...
讲讲如何用IDEA开发java项目——本文来自AI创作助手
使用IDEA开发Java项目,您可以按照以下步骤进行操作: 下载并安装IntelliJ IDEA 您可以从JetBrains官网下载并安装最新版的IntelliJ IDEA。 创建项目 启动IDEA,在欢迎界面中选择“Create New Project”或者在主菜单中选择“File”->“Ne…...
Kafka3.0.0版本——消费者(Range分区分配策略以及再平衡)
目录 一、Range分区分配策略原理1.1、Range分区分配策略原理的示例一1.2、Range分区分配策略原理的示例二1.3、Range分区分配策略原理的示例注意事项 二、Range 分区分配策略代码案例2.1、创建带有4个分区的fiveTopic主题2.2、创建三个消费者 组成 消费者组2.3、创建生产者2.4、…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
