【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、…...
WeiTools
目录 1.1 WeiTools 1.2 getTime 1.3 getImageView 1.4 StringEncode 1.4.1 // TODO Auto-generated catch block WeiTools package com.shrimp.xiaoweirobot.tools;...
目标检测数据集:医学图像检测数据集(自己标注)
1.专栏介绍 ✨✨✨✨✨✨目标检测数据集✨✨✨✨✨✨ 本专栏提供各种场景的数据集,主要聚焦:工业缺陷检测数据集、小目标数据集、遥感数据集、红外小目标数据集,该专栏的数据集会在多个专栏进行验证,在多个数据集进行验证mAP涨点明显,尤其是小目标、遮挡物精度提升明显的…...
【系统设计系列】数据库
系统设计系列初衷 System Design Primer: 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. 中文版: https://github.com/donnemarti…...
mp4压缩视频不改变画质?跟我这样压缩视频大小
在当今数字化时代,视频文件变得越来越普遍,然而,这些文件通常都很大,给存储和传输带来了困难,为了解决这个问题,许多人都希望将视频压缩得更小,而又不牺牲画质,下面就来看看具体应该…...
AQS同步队列和等待队列的同步机制
理解AQS必须要理解同步队列和等待队列之间的同步机制,简单来说流程是: 获取锁失败的线程进入同步队列,成功的占用锁,占锁线程调用await方法进入条件等待队列,其他占锁线程调用signal方法,条件等待队列线程进…...
vue3实现无限循环滚动的方法;el-table内容无限循环滚动的实现
需求:vue3实现一个div内的内容无限循环滚动 方法一: <template><div idcontainer><div class"item" v-foritem in 5>测试内容{{{ item }}</div></div> </template><script setup> //封装一个方法…...
Windows 安装 MariaDB 数据库
之前一直使用 MySQL,使用 MySQL8.0 时候,占用内存比较大,储存空间好像也稍微有点大,看到 MariaDB 是用来代替 MySQL 的方案,之前用着也挺得劲,MySQL8.0 以上好像不能去导入低版本的 sql,或者需要…...
RK3568-mpp(Media Process Platform)媒体处理软件平台
第一章 MPP 介绍 1.1 概述 瑞芯微提供的媒体处理软件平台(Media Process Platform,简称 MPP)是适用于瑞芯微芯片系列的通用媒体处理软件平台。 该平台对应用软件屏蔽了芯片相关的复杂底层处理,其目的是为了屏蔽不同芯片的差异,为使用者提供统一的视频媒体处理接口(Medi…...
【ModelSim】使用终端命令行来编译、运行Verilog程序,创建脚本教程
▚ 01 ModelSim命令解说 📢 这些命令是 ModelSim 中常用的命令,用于创建库、编译源代码和启动仿真。 🔔 在使用这些命令之前,你需要在 ModelSim 的命令行界面或脚本中执行 vlib 命令来创建一个库,然后使用 vlog 命令…...
腾讯云网站备案详细流程_审核时间说明
腾讯云网站备案流程先填写基础信息、主体信息和网站信息,然后提交备案后等待腾讯云初审,初审通过后进行短信核验,最后等待各省管局审核,前面腾讯云初审时间1到2天左右,最长时间是等待管局审核时间,网站备案…...
开发小网站一般多少钱一个/今日十大头条新闻
1.简介 JSR是Java Specification Requests的缩写,意思是Java 规范提案 JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation 即,JSR 303,Bean Validation规范 ,为Bean验证定义了元数据模型和API.。默认的元数据…...
上海企业制作网站有哪些/seo优化工具有哪些
在购买域名的时候,我们总会遇到各种各样的问题。今天我们就来说说大家比较关心的几个问题——仅仅购买域名可以吗?购买完域名怎么绑定ip?仅仅购买域名可以吗?购买完域名怎么绑定ip?仅仅购买域名可以吗?很多平台在用户购买域名的时候会提供不少其他业务…...
武汉专业商务网站建设/网页制作html代码
H.264,或称MPEG-4 第 10 部分,是由ITU-T视频编码专家组(VCEG,Video Coding Experts Group)和ISO/IEC动态图像专家组(MPEG,MovingPicture Experts Group)联合组成的联合视频组&#x…...
免费响应式网站建设/佛山网站搜索排名
一. 再探Activity生命周期 为了研究activity的生命周期,简单測试代码例如以下。 package com.example.testactivity;import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu;public class MainActivity extend…...
wordpress移机/搜索引擎营销的四种方式
http://james.padolsey.com/demos/grayscale/转载于:https://www.cnblogs.com/jikey/archive/2010/04/21/1716893.html...
电子商务网站建设专业主修课程/天津网络广告公司
STC新型单片机的ISP程序设计 http://wenku.baidu.com/view/83bf034ec850ad02de804127.html 随着单片机技术的不断发展,IAP(In-Application-Programming)功能的支持越来越普遍,这给应用系统程序代码升级带来了极大的方便。但是,ISP(In-System…...