Provider
Provides 是整個 terraform 最重要的元件,必須設定該 terrafrom 要執行的環境 (e.g. AWS),以及該環境的 terraform 權限 (Example:regions、access_key、secret_key)
provider "aws" {
access_key = "foo"
secret_key = "bar"
region = "us-east-1"
}
Environment variables
但是登入權限寫在 provider 並不是很好的作法,所以 terraform 也支援 Environment variables
的方式設定 credentials,這是很常見的使用方式。
只要定義 provider 為 aws
provider "aws" {}
剩下都交由 環境變數
處理
$ export AWS_ACCESS_KEY_ID="anaccesskey"
$ export AWS_SECRET_ACCESS_KEY="asecretkey"
$ export AWS_DEFAULT_REGION="us-west-2"
$ terraform plan
Shared Credentials file
如果有多個 terraform 要指定不同 credential 的需求,Shared Credentials file
可以指定不同的 credentials file,通常在 local 開發會用到這樣的方式
provider "aws" {
region = "us-west-2"
shared_credentials_file = "/Users/tf_user/.aws/creds"
profile = "customprofile"
}
Multiple Providers
在特殊情況下會需要使用多個 Providers,像是 Cross Regions、跨平台等,利用 alias
指定不同 provider。
provider "aws" {
region = "ap-northeast-1"
alias = "main"
}
provider "aws" {
region = "us-east-1"
alias = "cloudfront"