Terraform实战(二)-terraform创建阿里云资源

1 初始化环境

1.1 创建初始文件夹

$ cd /data
$ mkdir terraform
$ mkdir aliyun 

terraform作为terraform的配置文件夹,内部的每一个.tf,.tfvars文件都会被加载。

1.2 配置provider

创建providers.tf文件,配置provider依赖。

provider "alicloud" {
        access_key = "xxxxxxxx"
        secret_key = "xxxxxxxx"
        region = "cn-beijing"
}
  • provider这一行表明提供的阿里云的接口
  • access_key和secret_key分别是阿里云的ak、sk。在阿里云的账户中可以获取
  • region 是管理的区域

1.3 初始化环境

执行命令 terraform init初始化环境。会自动读取provider.tf 文件下载对应的依赖包。

terraform init

2 创建一台ECS实例(分步骤执行)

为了安全起见,建议将ak/sk设置在环境变量里,设置后使用echo ${变量}确认下是否生效。

环境变量配置方式如下:

$ export ALICLOUD_ACCESS_KEY="LTAIUrZCw3********"
$ export ALICLOUD_SECRET_KEY="zfwwWAMWIAiooj14GQ2*************"
$ echo $ALICLOUD_ACCESS_KEY
$ echo $ALICLOUD_SECRET_KEY

2.1 创建交换机

当需要创建ecs资源的区域不存在vpc和交换机的情况下,需要优先创建交换机。

创建terraform.tf文件,完善ecs创建信息。

resource "alicloud_vpc" "vpc" {
  vpc_name   = "tf_test_foo"
  cidr_block = "10.16.0.0/16"
}

resource "alicloud_vswitch" "vsw" {
  vpc_id     = alicloud_vpc.vpc.id
  cidr_block = "10.16.0.0/20"
  zone_id    = "cn-beijing-b"
}

运行terraform plan 查看将被要执行的操作。

 terraform apply开始执行创建。

terraform show查看已创建的专有网络和交换机。

2.2 创建安全组

在已有专有网络中创建一个安全组并添加一个允许任何地址访问的安全组规则。在terraform.tf文件中增加以下内容。

resource "alicloud_security_group" "default" {
  name   = "default"
  vpc_id = alicloud_vpc.vpc.id
}

resource "alicloud_security_group_rule" "allow_all_tcp" {
  type              = "ingress"
  ip_protocol       = "tcp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "1/65535"
  priority          = 1
  security_group_id = alicloud_security_group.default.id
  cidr_ip           = "0.0.0.0/0"
}

执行terraform plan查看将被要执行的操作。

从上面的输出可以发现,已经存在的资源不会被再次创建,只会创建新增的资源。另外由于之前的执行操作已经将新增变量存储在本地,因此只要不删除执行记录,则变量将会被一直引用。 

执行terraform apply执行创建操作。

 执行terraform show查看创建结果。

执行结果会将历史执行结果全部展示。

2.3 创建ECS

在terraform.tf文件中增加以下内容:

resource "alicloud_instance" "instance" {
  # cn-beijing
  availability_zone = "cn-beijing-b"
  security_groups   = alicloud_security_group.default.*.id

  # series III
  instance_type              = "ecs.n1.small"
  system_disk_category       = "cloud_efficiency"
  image_id                   = "aliyun_3_x64_20G_alibase_20230424.vhd"
  instance_name              = "ecs_name"
  vswitch_id                 = alicloud_vswitch.vsw.id
  internet_max_bandwidth_out = 10
}

执行terraform plan查看将被要执行的操作。

执行terraform apply 执行变更:

 执行结果有报错,去控制台查看发现资源ecs资源并未被创建。经确认是该地域无当前机型,导致创建失败。重新调整机型后重新执行:

此次报错是因为可用区与创建vsw选择的可用区不一致,无法查到vswid信息,导致创建失败,将可用区修正后继续执行:

 执行成功,登录控制台后发现资源均已被创建成功。

3 创建一台ECS实例(一次性执行)

将创建vpc、vsw、安全组、ecs一次性全部执行,会发生什么呢?

不出现失败的情况,以上资源均会被创建。

但是当某一个资源创建失败后,后面的资源将不会再被创建,前面已经创建成功的将不会被删除。当错误参数调整后再执行,已经创建的资源不会再次被创建,未被创建的资源将会继续创建。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 每日一题 Day 9 ||简单dp

70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶 1 阶2 阶 示例 2&am…

智能井盖传感器怎么有效监测井盖位移

随着城市化进程的加速推进,城市基础设施的安全与维护问题日益凸显,引发了社会的广泛关注。其中井盖作为城市地下设施的重要一环,其安全问题时刻影响着市民的幸福生活。近年来智能井盖传感器的发展与应用为实时监测井盖位移提供了全新的解决方…

嵌入式开发按怎样的路线学习较好?

嵌入式开发按怎样的路线学习较好? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「嵌入式从专业入门到高级教程工具包」,点个关注,全部无偿共享给大家!&…

BigData之Google Hadoop中间件安装

前言 Hadoop / Zookeeper / Hbase 因资源有限 这三个都是安装在同一台Centos7.9的机器上 但通过配置 所以在逻辑上是distributed模式 1 Java安装 1.1 下载java11 tar/opt/java/jdk-11.0.5/ 1.2 环境配置修改 文件/etc/profile export JAVA_HOME/opt/java/jdk-11.0.5/ e…

网络层重点协议——IP协议详解

✏️✏️✏️今天给大家分享的是网络层的重点协议——IP协议。 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流! ✈️✈️✈️动动你们发财的…

解决vue3 动态引入报错问题

之前这样写的,能使用,但是有警告 警告,查了下,是动态引入的问题,看到说要用glob 然后再我的基础上,稍微 改了下,就可以了: 最后打印了下,modules[../../components/flowc…

每日一练【无重复字符的最长子串】

一、题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 二、题目解析 算法思想:移动窗口的思想去解决。 那为什么要用这个方法解决呢? 我们首先用暴力的思路去遍历一遍,我们遍历到deabc后&#xff…

外包干了3个月,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

图文教程:从0开始安装stable-diffusion

现在AI绘画还是挺火,Midjourney虽然不错,但是对于我来说还是挺贵的。今天我就来安一下开源的AI绘画stable-diffusion,它的缺点就是对电脑的要求比较高,尤其是显卡。 话不多说开搞。 访问sd的github,https://github.com/AUTOMATIC…

AIGC报告专题:计算机Pika-AIGC新秀-视频生成产业或迎来GPT时刻

今天分享的AIGC系列深度研究报告:《AIGC报告专题:计算机Pika-AIGC新秀-视频生成产业或迎来GPT时刻》。 (报告出品方:中泰证券) 报告共计:11页 Pika:专注Text to Video生成场景,支持…

创投课程第四期 | Web3一级市场投资框架的演变及投资人能力框架的构成

协会邀请了来自Zonff Partners的合伙人——Colin,作为VC创投课程第4期的嘉宾,在北京时间12月9日(周六)下午14:00 PM-15:00 PM于蚂蚁链科技产业创新中心进行线下分享,届时将与所有对Web3投资、创业心怀热忱的朋友们共同探讨《WEB3一级市场投资…

Java面试题(每天10题)-------连载(46)

目录 Dubbo篇 1、Dubbo的默认集群容错方案 2、Dubbo支持哪些序列化方式? 3、Dubbo超时时间怎样设置? 4、服务调用超时问题怎么解决? 5、Dubbo在安全机制方面是如何解决的? 6、Dubbo和Dubbox之间的区别 7、Dubbo和Spring C…

mybatis多表映射-对一关联

1、建库建表 create database mybatis-example; use mybatis-example; create table t_book (bid varchar(20) primary key,bname varchar(20),stuid varchar(20) ); insert into t_book values(b001,Java,s001); insert into t_book values(b002,Python,s002); insert into …

IDEA 2023.3 start failed 启动失败修复

发现是 RestfulToolkit 插件有冲突导致的,删除插件后成功启动 open ~/Library/Application\ Support/JetBrains/IntelliJIdea2023.3/plugins参考:https://youtrack.jetbrains.com/issue/IDEA-340080/Critical-startup-error-after-upgrading-to-Intelli…

成都工业学院Web技术基础(WEB)实验一:HTML5排版标签使用

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考,前端变化比较大,按照要求,只能做到像,不能做到一模一样 3、图片和文字仅为示例,需要自行替换 4、如果代码不满足你的要求,请寻求其他的…

文生图:AE/VAE/VQVAE/VQGAN/DALLE模型

文生图模型演进:AE、VAE、VQ-VAE、VQ-GAN、DALL-E 等 8 模型本文中我们回顾了 AE、VAE、VQ-VAE、VQ-VAE-2 以及 VQ-GAN、DALL-E、DALL-E mini 和 CLIP-VQ-GAN 等 8 中模型,以介绍文生图模型的演进。https://mp.weixin.qq.com/s/iFrCEpAJ3WMhB-01lZ_qIA 1…

【C++11并发】Atomic 笔记

简介 用atomic定义的变量,支持原子操作,即要么全部完成操作,要不全部没有完成,我们是不可能看到中间状态。一般在多线程程序中,可以用atomic来完成数据同步。 标准库为我们主要提供了四类工具 atomic类模板操作atomi…

在SpringData JPA 中实现对持久层的操作

1.导入依赖 hibernate 这个依赖自带实现JPA接口 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><depen…

openGauss学习笔记-149 openGauss 数据库运维-备份与恢复-逻辑备份与恢复之gs_restore

文章目录 openGauss学习笔记-149 openGauss 数据库运维-备份与恢复-逻辑备份与恢复之gs_restore149.1 背景信息149.2 命令格式149.3 参数说明149.3.1 通用参数-V, –version149.3.2 导入参数 149.4 示例 openGauss学习笔记-149 openGauss 数据库运维-备份与恢复-逻辑备份与恢复…

JVM虚拟机系统性学习-运行时数据区(方法区、程序计数器、直接内存)

方法区 方法区本质上是 Java 编译后代码的存储区域&#xff0c;存储了每一个类的结构信息&#xff0c;如&#xff1a;运行时常量池、成员变量、方法、构造方法和普通方法的字节码指令等内容 方法区主要存储的数据如下&#xff1a; Class 类型信息&#xff0c;如该 Class 为 …