Terraform支持创建多个云厂商的基础架构。为了有权限创建云上的资源,需要给terraform权限,例如使用~/.aws/
目录下的AK/SK,provider就是给terraform指明了如何获得权限。
在执行terraform init
时,terraform从tf文件中提取provider
,并下载对应的插件数据
例如, provider.tf
:
provider "aws" {
region = "us-east-1"
}
Data Source
是Terraform官方提供的插件功能,各个Provider可以实现自己的Data Source能力,目的是通过Data Source中的定义过滤需要的数据,一是简化模板编写时数据过滤的复杂性,二是各个资源对Data源的引用保持一致。
例如获取某个region下第三个available_zone
:
data "aws_availability_zones" "available" {} # data sources使用data关键字定义
resource "aws_instance" "firstdemo" {
ami = lookup(var.ami_type, var.region)
instance_type = lookup(var.instance_type, var.env)
availability_zone = data.aws_availability_zones.available.names[2] # 获取第三个可用区
tags = {
Name = "demoinstance"
}
}
参考: https://developer.hashicorp.com/terraform/language/data-sources