Terraform 语法 provider插件

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

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

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

Terraform 配置语法


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

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

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

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

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

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

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

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

声明provider


这里模块就是目录,

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

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

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

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

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

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

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

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

配置provider


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

alias-配置多个provider


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

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

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

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

在资源里面有个属性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"
}

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/127530771