首页 > 其他分享 >Terraform 基础 定义阿里云资源

Terraform 基础 定义阿里云资源

时间:2022-10-30 20:34:47浏览次数:77  
标签:group 定义 Terraform 阿里 vpc security id 资源 alicloud


provider里面提供了资源,接下来就开始定义阿里云的资源了。我们将阿里云的插件也就是provider安装好了,接下来就是调用里面的资源。

在terraform里面最重要的就是资源,资源主要来自provider里面,每个资源里面都有很多属性。

什么是资源呢,比如网络,vpc,安全组,ecs实例以及DNS的域名记录,这些都是资源。

可以理解每个产品都是资源。

既然是要往配置文件里面写资源,那么它也是有它的格式的。

它的关键字是resource,后面就是资源的类型,后面就是自己定义资源的名称,资源的名称是自己定义的,因为我可能创建2个vpc,vpc的名称肯定不能让它一致, 

Terraform 基础 定义阿里云资源_内网

vpc是阿里云的专有网络,你可以理解为这个就是网段,创建多个vpc,vpc之间是有隔离的逻辑的。

比如可以创建测试环境的vpc,也可以创建生产环境的,它其实就是一个网段。

要申请阿里云的资源就需要知道在代码里面怎么写这些资源。如果不了解这些,强烈建议去阿里云的控制台上看看是如何使用的。

Terraform 基础 定义阿里云资源_ide_02

Terraform 基础 定义阿里云资源_1024程序员节_03

可以看到里面有region信息,专有网络的名称,地址段。

除了专有网络之外,这里还有交换机,填写名称和可用区,网段的建议,如下所示。

Terraform 基础 定义阿里云资源_terraform_04

只要属性上面的界面,然后使用代码的方式来实践。现在就要去tf的配置文件里面写我们申请哪些资源。 

VPC


Terraform 基础 定义阿里云资源_配置文件_05

Terraform 基础 定义阿里云资源_内网_06

​Example Usage​

Basic Usage(声明一个专有网络,专有网络名称和其网段)

resource "alicloud_vpc" "vpc" {
vpc_name = "tf_test_foo"
cidr_block = "172.16.0.0/12"
}
  • ​cidr_block​​​ - (Optional) The CIDR block for the VPC. The ​​cidr_block​​​ is Optional and default value is ​​172.16.0.0/12​​ after v1.119.0+.
  • ​vpc_name​​ - (Optional, Available in v1.119.0+) The name of the VPC. Defaults to null.

你要写资源就需要打开文档了,搜索VPC。

第一个就是关键字+资源类型+自定义资源的名称(这个名称就是对应阿里云控制台创建vpc名称那一栏)网段自己去分配。

Terraform 基础 定义阿里云资源_配置文件_07

注意这里交换机和vpc是一起创建的,你得确定交换机属于哪个vpc里面,属于哪个专有网络。

这里会有绑定的关系。下面就是资源的属性

Terraform 基础 定义阿里云资源_terraform_08

交换机要关联vpc,怎么关联呢?通过vpc_id这个属性,怎么拿到这个资源的id呢?就需要资源参数的引用,也就是在一个资源里面引用另外一个资源属性或者参数。

这就需要资源类型(alicloud_vpc).name(定义的资源名称 vpc).属性(比如引用实例化之后的id)

在vpc里面没有定义id,因为需要创建完之后才有id,这里引用的是实例化之后的id,如果在路由器里面要使用vpc_name,那么直接可以这样写vpc_id     = alicloud_vpc.vpc.vpc_name

有些参数是创建完之后才可以拿到的。

ECS安全组


Terraform 基础 定义阿里云资源_配置文件_09

类似于虚拟的防火墙,一般不开安全组,不开端口,那么访问不了。所以需要在安全组里面添加一些规则让安全组去关联。

​阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台​

注意安全组也需要关联VPC,所以在创建安全组的代码里面也会引用vpc id的信息。

最后安全组无非就是开通端口这些。

Terraform 基础 定义阿里云资源_ide_10

​Terraform Registry​

Terraform 基础 定义阿里云资源_1024程序员节_11

安全组组成为 安全组+规则   组里面包含一组规则

resource "alicloud_security_group" "group" {
name = "new-group"
vpc_id = alicloud_vpc.vpc.id
security_group_type = "normal"
}

 vpc_id = alicloud_vpc.vpc.id 要关联vpc,这是还是要引用其id。

  • ​security_group_type​​​ - (Optional, ForceNew, Available in 1.58.0+) The type of the security group. Valid values: ​​normal​​​: basic security group. ​​enterprise​​: advanced security group For more information.

 可以看到一个是普通类型,一个是企业类型,这里设置为普通的。

Terraform 基础 定义阿里云资源_ide_12

 最后就是创建安全组规则。

Terraform 基础 定义阿里云资源_1024程序员节_13

这里有个出入方向,得选一个是出方向还是入方向,然后授权是允许还是拒绝。

优先级怎么设置。

协议是什么等等这些参数。

这里开放端口,如果开放一个端口就是80/80,如果是范围就是1-65535。

这个就需要引入安全组的id,security_group_id = alicloud_security_group.group.id,资源类型+名称+资源的属性,这样就可以引用,并且关联上。

nic_type          = "intranet" 这个是选择外网还是内网,选择内网。

resource "alicloud_security_group_rule" "allow_80_tcp" {
type = "ingress"
ip_protocol = "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"
}

 总结


其实你对照控制台上面的字段,就可以看到非常简单,都代码化了。


标签:group,定义,Terraform,阿里,vpc,security,id,资源,alicloud
From: https://blog.51cto.com/u_14035463/5807838

相关文章

  • 【阿里内部教程】使用 Postman 实现 API 自动化测试
    ​ 背景介绍相信大部分开发人员和测试人员对 postman 都十分熟悉,对于开发人员和测试人员而言,使用 postman 来编写和保存测试用例会是一种比较方便和熟悉的方式。但......
  • Docker镜像发布到阿里云
    1、本地镜像发布到阿里云流程  2、镜像的生成方法2.1、下载镜像ubuntudockerpullubuntu  2.2、运行ubuntu镜像并安装vimdockerrun-itubuntu/bin/bash......
  • Mirror多人联网发布阿里云
    Mirror多人联网发布阿里云新建模板小书匠将mirror网络地址和端口选为你阿里云服务器上开放的公网地址和端口IP与端口2.在阿里云服务器安全组中开放你所制定的端口开......
  • (美化)WordPress网站添加自定义字体
    背景通过CSS属性@font-face和font-family可以实现加载自定义webfont,改变网页字体,实现美化效果。1.引用字体文件出于版权风险考虑,尽量使用免费可商用的字体作为webfont。本......
  • 阿里云镜像加速器配置
    1、访问阿里云官网https://www.aliyun.com/2、注册阿里云账号扫描注册、账号注册、手机号注册sheyu这里用支付宝app扫描注册并登录   3、容器镜像服务搜索容器......
  • 为什么阿里、腾讯这样的公司不去研发被卡脖子的工业软件呢?
    阿里、腾讯这样的公司不去研发被卡脖子的工业软件主要是由于工业软件不适合复制粘贴规模化推广的商业模式与工业软件专业性强、复杂度高、个性化要求大等多方面因素导致......
  • 群晖7.x实现阿里ddns+移动ipv6外网访问,docker速度慢解决
    前提:    1.必须有移动ipv6,如何实现见上一篇文章,改光猫桥接,开ipv6    2.品牌路由的防火墙设置往往没有那么丰富。概括起来就是:路由器不支持IPV6下的外网......
  • 编程开发-面试-数据分析视频教程阿里云盘资源大全
    编程开发-面试-数据分析教程合集6.6T(最全)Python编程教程合集(80套207GB)Java-30套Web-28套C-C++29套Go-15套Spring-29套Linux-10套面试通关人工智能_云计算R......
  • Vue3——自定义组件-插件
    Vue3自定义指令插件官网链接:https://cn.vuejs.org/guide/reusability/custom-directives.html#introduce1.自定义指令:1.1自定义指令声明局部声明:constfocus={......
  • 云原生之旅 - 4)基础设施即代码 使用 Terraform 创建 Kubernetes
    前言上一篇文章我们已经简单的入门Terraform,本篇介绍如何使用Terraform在GCP和AWS创建Kubernetes资源。Kubernetes在云原生时代的重要性不言而喻,等于这个时代的操作......