既然要操作阿里云,那么就需要使用阿里云的provider
其实和阿里云这块在调用API,其实就是terraform里面的一个插件,tf里面是通过provider来管理这些基础设施的,所以terraform其实也是通过各个云供应商它的api来进行交互的。
每个provider里面都包含了很多的资源,资源就是阿里云上面看到的云产品,如api-gateway,还有ecs,dns,等等这些产品可以理解为是资源。
所以provider里面都包含了阿里云里面所有的资源。
有时候想获取云上的数据,或者这个产品能够为我们提供哪些数据,都可以通过data_resource去实现,获取数据的时候会使用到。
Terraform Registryhttps://registry.terraform.io/providers/aliyun/alicloud/latest
后面不管是哪个云的,你都离不开这个文档。
左边都是资源,都可以看到,产品类型,里面都是资源和数据源。这里可以搜索资源,多用用就行,写配置文件的时候离不开它。
这里有provider的使用说明和方法,之前申请账号就是因为要配置这些信息。
上面就是provider的定义,以及怎么看它的文档的,以及文档上具体导航。
声明 terraform provider
这个配置定义到了专门version.tf,在项目里面创建了这样一个文件,这个文件里就保存了tf的版本信息,以及所使用provider的一些版本信息。
可以看到代码都是块代码,第一个是tf的版本信息,
terraform {
required_version = "1.3.3"
required_providers {
alicloud = {
source = "aliyun/alicloud"
version = "1.188.0"
}
}
}
#required_version = "1.3.3" 版本信息
PS C:\Users\W10\Desktop\terraform> terraform.exe --version
Terraform v1.3.3
on windows_amd64
#terrform不仅仅只管理一个云,它可以管理多个云,既然阿里云有provider,那么华为,腾讯都有自己的provider,里面定义的都是自己的provider
required_providers #里面定义每一个具体的provider
这里的source是https://registry.terraform.io/providers/aliyun/alicloud/latest/docs
仓库地址为其路径,它将registry.terraform.io/providers这块去掉了,所以这是简单的写法指定源。那么在terraform初始化的时候,它就知道在哪里下载ali cloud了
配置 Provider
在provider里面需要定义三个参数,敏感信息不要以硬编码方式暴露,而是以环境变量方式暴露。(现在只需要知道provider里面定义了这三个参数)
这个文件里面存放变量,变量有很多种类型,下面是string类型。定义变量是使用variables关键字,后面就是变量名称,块里面就是它的配置。
variable "access_key" {
type = string
}
variable "secret_key" {
type = string
}
variable "region" {
type = string
}
定义便利的格式用的variable的关键字,然后就是变量名称,块里面就是它的配置,现在只使用了type类型配置,这里只使用了tf要使用的变量,没有定义其值。
为了保密安全性,这些变量都已环境变量方式去声明,所以要加到系统变量里面。
所以要将变量添加到系统变量里面,变量的格式是TF_VAR,在tf里面只要系统环境变量以TF_VAR开头,那么都可以识别为TF的变量。
如果是这样通过TF_VAR定义了变量,那么provider里面就可以由三行变成一行,只写入region信息就行啦,因为ak sk会去从环境变量里面去读取。
provider "huaweicloud" {
region = var.region
}
比如我定义了alicloud_access_key变量,那么要想让tf读取到这个变量,那么就在系统里面定义TF_VAR开头的,然后后面是其变量名,然后是变量的值。
变量的值是在操作系统上面去定义的。
provider第一个需要定义它的版本,然后定义provider所需要的参数。
同时定义变量不行还得配置到环境变量里面,就是操作系统里面才可以。
上面配置好,就可以使用provider就行了。