首页 > 其他分享 >Terraform 语法 provider插件

Terraform 语法 provider插件

时间:2022-10-29 16:09:21浏览次数:65  
标签:插件 terraform region Terraform key provider tf alicloud


Terraform 语法 provider插件_ide

 

语法是terraform最重要的一点,有两个部分来讲解,第一部分是基础,第二部分是更加高级的扩展。

后面各种实践其实就是对terraform语法编写。

第一部分是provider插件,provider提供了资源和数据源,插件,资源,数据源都是三个比较重要的内容。

其次是变量和输出。

Terraform 配置语法


Terraform 语法 provider插件_terraform_02

terraform配置文件都是以.tf为后缀的,python以.py结尾。java以.java结尾。所以tf都是以.tf为后缀的。

就是在当前的目录下,有多少个以.tf为后缀的文件,那么在执行terraform命令的时候就会去加载。

我们看到每个目录下的tf文件,这个目录可以称作为叫做模块,叫做module。

tf支持两种语法格式,一个是hcl,一个是json,这两者之间是有区别的,这两者是有区别的。

hcl我们每个人看起来比较醒目,一个是开发定制工具的时候json这种格式。

这里面我们使用的是hcl语法,我们这些配置文件都是通过hcl来写的。

json和它类似,只不过改为了json的格式。

Terraform 语法 provider插件_terraform_03

Terraform 语法 provider插件_json_04

terraform主要是通过provider来管理基础设施的,provider通过和云供应商提供的api交互来实现资源的发布。

Terraform 语法 provider插件_terraform_05

这里模块就是目录,

Terraform 语法 provider插件_配置文件_06

你可以理解为这个目录就是模块,模块下面有很多terraform的配置文件,最上面一层叫做根模块。

假设要使用阿里云的资源就要使用阿里云的provider,不然terraform也不知道怎么去安装和使用它。

所以在terraform的语句块里面通过关键字required_providers语句块里面定义了所有的provider。

terraform是一个混合云的管理工具,required_providers语句块里面可以定义多个provider。aws,华为云,阿里云都可以在下面写。

里面写好源地址,和版本信息即可。

source = "aliyun/alicloud"
version = "1.189.0"

声明是让terraform知道要使用哪个provider,而接下来就需要配置provider了,调用云资源。 

那就需要去控制台,就要去每个产品里面管理,这是控制台日常操作。

Terraform 语法 provider插件_ide_07

provider的名称你可以自定义,里面主要是ak sk rg的信息,这样就定义好了我们的provider。

这里有个问题,定义了provider,里面定义了region,比如我要操作阿里云不同的region,不同区域,它的这些资源,在这里写死了region,那么下次再调用的时候就是默认使用里面配置写死的region。

当你有多个地域的时候就涉及别名了。

Terraform 语法 provider插件_json_08

也就是在配置文件里面声明了两遍provider, 都是同一个provider,唯一不同的就是配置不同。

后面资源在调用的时候使用就是provider的名称+alias就可以了。

要调用北京,那么就使用alicloud.beijing。

Terraform 语法 provider插件_json_09

在资源里面有个属性provider。

provider "alicloud" {
access_key = "LTAI5tNcApxzkS5RG9e"
secret_key = "aVXPqQYyJ1u1SusXUgBDJaH"
alias = "hangzhou"
region = "cn-hangzhou"
}

provider "alicloud" {
alias = "beijing"
region = "cn-beijing"
}

这样就在配置文件里面定义了两个区域,一个北京,一个杭州,那么在我的资源里面去调用。

//vpc专有网络
resource "alicloud_vpc" "vpc" {
provider = alicloud.hangzhou
vpc_name = "tf_test_foo"
cidr_block = "172.16.0.0/12"
}

//switch交换机
resource "alicloud_vswitch" "vsw" {
provider = alicloud.hangzhou
vpc_id = alicloud_vpc.vpc.id
cidr_block = "172.16.0.0/21"
zone_id = "cn-hangzhou-b"
}

当你存在多个区域的时候就需要使用 provider = alicloud.hangzhou去引用。前面是provider名称,后面是别名。

 

在定义provider的时候,你得有个默认的provider,不然到时候会报错。

provider "alicloud" {
access_key = "LTAI5tNcApxzkS53FHNHRG9e"
secret_key = "aVXPqQYyJ1u1SusXUgBo9rKfVyDJaH"
region = "cn-hangzhou"
}


provider "alicloud" {
access_key = "LTAI5tNcApxzkS53FHNHRG9e"
secret_key = "aVXPqQYyJ1u1SusXUgBo9rKfVyDJaH"
alias = "shanghai"
region = "cn-shanghai"
}

provider "alicloud" {
access_key = "LTAI5tNcApxzkS53FHNHRG9e"
secret_key = "aVXPqQYyJ1u1SusXUgBo9rKfVyDJaH"
alias = "beijing"
region = "cn-beijing"
}

标签:插件,terraform,region,Terraform,key,provider,tf,alicloud
From: https://blog.51cto.com/u_14035463/5806200

相关文章

  • Terraform DataSource 数据源
    有些时候在创建资源的时候,会用到一些数据,比如在创建ecs的时候,我可能会用到一些镜像。这个我们可以去浏览云供应商提供的文档去查询,其实我们也可以通过provider来拿到。provi......
  • Terraform 基础 申请阿里云资源
    之前,资源都定义好了,现在就是去申请资源了。申请这些资源就需要使用terraform的命令行了,开始初始化后端,后端是有存储文件的,默认情况下是在本地存储的,然后会多一些文件。 (下......
  • 如何在html中引入DPlayer.js视频播放插件,以及任何使用DPlayer.js插件
    主要用到了实现了:视频播放 、监听开始、结束、暂停、播放时间、切换视频官方文档:http://dplayer.js.org github:https://github.com/whiskyma/gulp-demo截图如下:html......
  • 【Vue2.0学习】—插件(五十六)
    【Vue2.0学习】—插件(五十六)scoped样式作用:让样式在局部生效,防止冲突写法:​​<stylescoped></style>​​......
  • 虎牙直播插件
    前言最近无聊看直播,虎牙广告是真多,还有一堆ghs直播间经常出现在首页,不想看到这些直播间,于是想办法屏蔽直播间。源码地址插件地址演示下面先看看未安装插件之前虎牙......
  • visual studio插件开发-Menu
    工欲善其事,必先利其器,作为程序员我们很大部分时间在和ide打交道,好的插件可以大大提高我们的编程效率,我开发过几个vs插件来解决一键生成dbmodels,快速部署到服务器,总结下来......
  • Mybatis 之 自定义插件 yyyy-MM
    请结合上一篇>>> MP插件原理  <<<  以及  >>>  Mybatis插件原理 <<< 进行查看查看 使用场景:在写一些与月份为单位的场景中,如:薪资系统(月薪制)1、Ja......
  • Mybatis 之 自定义别名处理插件
    请结合上一篇>>> MP插件原理  <<<  以及  >>>  Mybatis插件原理 <<< 进行查看查看 MP开发中,遇到的问题,动态的Wrapper产生的SQL中,主要出现在组合......
  • Mybatis 之 SQL 监控插件
    请结合上一篇>>> MP插件原理  <<<  以及 >>>  Mybatis插件原理 <<< 进行查看查看 使用场景:开发过程中监控每一条SQL语句的执行时长,已经顺便将SQL......
  • Mybatis 之 Mybatis-Plus 插件
    请结合上一边 >>> Mybatis插件原理<<< 进行查看Mybatis中自己定义了一个自己的插件类接口 InnerInterceptor 其内部实现了一些现成的插件,如:PaginationInn......