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

news2025/1/10 20:40:24

在这里插入图片描述

  • Terraform 是由 HashiCorp 创建的开源“基础架构即代码”工具 (IaC)
    • 使用HCL(配置语言)描述云平台基础设施(这里教你使用低级基础设施:交换机、云服务器、VPC、带宽)

Terraform提供者(Provider)

  • 您可以为使用的云平台和服务(还包括K8S的)找到提供商,并添加到您的配置中,然后用它们来配置基础设施
  • 几乎每个主要的云提供商、SaaS 产品等都可以使用由 Terraform 社区或各个组织开发和/或支持的提供商

阿里云

  • 这里以阿里云为例,其他云也可模仿这里做法
    • 使用terraform脚本自动生成服务器,原理是按量付费自动生成服务器,按时间付费(1小时几毛钱),在你不需要服务器的时候自动销毁
  • 首先准备一个阿里云账户,往里充值100元(阿里云限制不足100元账户,不得使用按量付费)
  • 为阿里云账户生成accesskey、secretkey(后面简称ak、sk)
    • 首先,不要泄露这个东西到公开的仓库中,以免对你造成损失
    • 登入控制台(右上角),找到 企业 -> 人员权限管理
      在这里插入图片描述
    • 左侧 用户 -> 创建用户 -> 输入名称 -> 开启 OpenAPI调用访问
      在这里插入图片描述
    • 然后保存好你的ak,sk
      在这里插入图片描述
  • 给terraform用户授权
    • 授权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_key
  secret_key = var.alicloud_secret_key
  region = "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  // 绑定vpc
  cidr_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 // 绑定vpc
  security_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 = 1
  security_group_id = alicloud_security_group.group.id
  cidr_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.9
  instance_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清单
  • 如果想编排多个实例,请根据语法自行扩展
  • 安全组你需要放行什么端口,模仿上方的写法,自己创建对应的规则
  • 按量付费的费用不高,这里只展示了最小规格服务的使用,你可以适当提高服务器资源
  • 按量付费生成的账单大概如下
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/993651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot原理-自动配置-方案

自动配置原理 在运行SpringBoot项目启动类(SpringBootApplication标注启动类)启动SpringBoot项目时,SpringBootApplication是一个混合注解,包括 SpringBootConfiguration()标识该类是一个配置类&#xff0…

SpringMVC:从入门到精通,7篇系列篇带你全面掌握--四.5分钟搞定文件上传与下载

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringMVC的相关操作吧 需要添加的依赖 <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</a…

vscode开发油猴插件环境配置指南

文章目录 一、环境配置1.1油猴插件开始编写代码1.2油猴插件配置1.2.1浏览器插件权限1.2.2插件自身权限 2. 油猴脚本API学习2.1 头文件2.2 油猴API 一、环境配置 1.1油猴插件开始编写代码 在vscode 中写入如下代码‘ // UserScript // name cds_test // namespace …

C++ if 语句

一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。 语法 C 中 if 语句的语法&#xff1a; if(boolean_expression) {// 如果布尔表达式为真将执行的语句 }如果布尔表达式为 true&#xff0c;则 if 语句内的代码块将被执行。如果布尔表达式为 false&#xff0c;则 if 语…

Y=AX+B问题

记得数学还是自己喜欢的科目&#xff0c;可熟人发了这么一个求解&#xff0c;要求代码实现。结果把自己整的不会了。 参看他人文档“”YAXB推导求解 以及ppt&#xff1a;中科院的线性代数ppt 1 大家熟悉的拟合法 2矩阵法 学会了吧&#xff1f;&#xff1f; 3 例题 原图来源…

Linux信号量环形队列处理生产消费者模型

目录 一、信号量 1.1 信号量的概念 1.2 信号量的函数接口 1.2.1 sem_init&#xff08;&#xff09; 1.2.2 sem_destroy&#xff08;&#xff09; 1.2.3 sem_wait&#xff08;&#xff09;(P操作申请信号量) 1.2.4 sem_post&#xff08;&#xff09;(V操作增加信号量) 二…

【爬虫】8.1. 深度使用tesseract-OCR技术识别图形验证码

深度使用tesseract-OCR技术识别图形验证码 文章目录 深度使用tesseract-OCR技术识别图形验证码1. OCR技术2. 准备工作3. 简单作用了解3.1. 验证码图片爬取-screenshot_as_png3.2. 识别测试-image_to_string3.2.1. 正确识别3.2.2. 错误识别3.2.3. 灰度调节 3.3. 识别实战-使用im…

qsort 函数的使用

一、qsort 函数的形式 1.1使用 qsort 函数包含的库 1.2qsort 函数的参数 qsort&#xff1a;对数组的元素进行排序 1.3参数中的 compar 函数 struct stu {char name[20];//姓名int age;//年龄double grade;//成绩 }; int cmp_name(void* p1, void* p2) {//如果按照姓名排序ret…

个人信息去标识化具体实施指南

声明 本文是学习个人信息去标识化指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 范围 本标准描述了个人信息去标识化的目标和原则&#xff0c;提出了去标识化过程和管理措施。 本标准针对微数据提供具体的个人信息去标识化指导&#xff0c;适…

windows 查询正在运行的系统

查询当前哪些服务在运行 net start 下图为查询到的正在运行的服务 查看某个服务是否正在运行 方式1 net start |find "MySQL" 出现下图说明mysql服务正在运行 方式2 sc query mysql 出现下图说明服务正在运行

打字侠:一款专业的中文打字网站

打字侠第一个正式版发布啦&#xff01;&#xff01;&#xff01; 虽然离期望的样子还有一段路要走&#xff0c;不过能看到它正式发布&#xff0c;我还是很激动哟&#xff01; 打字侠是一款面向中学生和大学生的在线打字软件&#xff0c;它通过合理的课程设计和精美的图形界面帮…

删除linux(centos7)系统自带的open jdk,安装配置jdk环境

查看jdk版本 安装的linux自带jdk8版本&#xff0c;我们不用自带的。 安装jdk步骤 1、下载 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads 2、创建目录 创建文件夹&#xff0c;用来部署JDK&#xff0c;将JDK安装部署到&#xff1a;/export/se…

【技术支持案例】S32K146的hard fault问题处理

文章目录 1. 案例背景2. 方案准备2.1 HardFault&#xff08;硬件错误异常&#xff09;2.2 UsageFault&#xff08;用法错误异常&#xff09;2.3 BusFault&#xff08;总线错误异常&#xff09;2.4 MemManage Fault&#xff08;存储器管理错误异常&#xff09; 3. 现场支持3.1 现…

OpenCV项目开发实战--实现面部情绪识别对情绪进行识别和分类及详细讲解及完整代码实现

文末提供免费的完整代码下载链接 面部情绪识别(FER)是指根据面部表情对人类情绪进行识别和分类的过程。通过分析面部特征和模式,机器可以对一个人的情绪状态做出有根据的猜测。面部识别的这个子领域是高度跨学科的,借鉴了计算机视觉、机器学习和心理学的见解。 在这篇研究…

C++数据结构 -- AVL树

目录 一、什么是AVL树&#xff1f;AVL树的概念 二、 AVL树的节点的定义三、 AVL树新结点的插入3.1 左单旋左单旋代码实现3.2 右单旋右单旋代码实现3.3 左单旋或者右单旋解决不了的问题3.4 左右双旋左右双旋代码实现3.5 右左双旋右左双旋代码实现 四、代码汇总 一、什么是AVL树&…

【Vue篇】Vue 项目下载、介绍(详细版)

如何创建一个vue项目&#xff1f;首先要有环境&#xff0c;如下&#xff1a; nodejs vue-cli如果有以上的工具就直接跳过安装教程 【Vue篇】mac上Vue 开发环境搭建、运行Vue项目&#xff08;保姆级&#xff09; 创建vue项目 选择一个位置&#xff0c;你要存放项目的路径&…

App线上网络问题优化策略

在我们App开发过程中&#xff0c;网络是必不可少的&#xff0c;几乎很难想到有哪些app是不需要网络传输的&#xff0c;所以网络问题一般都是线下难以复现&#xff0c;一旦到了用户手里就会碰到很多疑难杂症&#xff0c;所以对于网络的监控是必不可少的&#xff0c;针对用户常见…

golang flag 包的使用指北

说起 golang 的 flag 个包&#xff0c;我们第一反应的是什么呢&#xff1f;至少我曾经第一次看到 flag 包的时候&#xff0c;第一反应是想起写 C 语言的时候咱们用于定义一个表示的&#xff0c;我们一般会命名为 flag 变量 实际上 golang 的 flag 包是用于处理命令行参数的工具…

《深入浅出OCR》第六章:OCR数据集与评价指标

一、OCR技术流程 在介绍OCR数据集开始&#xff0c;我将带领大家和回顾下OCR技术流程&#xff0c;典型的OCR技术pipline如下图所示&#xff0c;其中&#xff0c;文本检测和识别是OCR技术的两个重要核心技术。 1.1 图像预处理&#xff1a; 图像预处理是OCR流程的第一步&#xf…

5147. 数量

题目&#xff1a; 样例1&#xff1a; 输入 4 输出 1 样例2&#xff1a; 输入 7 输出 2 样例3&#xff1a; 输入 77 输出 6 思路&#xff1a; 根据题意&#xff0c;如果直接 for 循环暴力&#xff0c;肯定会超时&#xff0c;但是我们换个思路想&#xff0c;只要包含 4 和 7的…