terraform-controller
terraform-controller copied to clipboard
support multiple provider
- define any provider via hcl and variable
apiVersion: terraform.core.oam.dev/v1beta1
kind: Provider
metadata:
name: alibaba-sample
spec:
hcl: |
terraform {
required_providers {
alicloud = {
source = "aliyun/alicloud"
version = "1.124.3"
}
}
}
provider "alicloud" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
region = "${var.region}"
}
variable "access_key" {
default = ""
type = string
}
variable "secret_key" {
default = ""
type = string
}
variable "region" {
default = "beijing"
type = string
}
variable:
# credentials binding
- name: access_key:
valueFrom:
secretKeyRef:
name: mysecret
key: "access_key"
- name: secret_key:
valueFrom:
secretKeyRef:
name: mysecret
key: "secret_key"
- name: region
value: "beijing"
- choose provider by name
apiVersion: terraform.core.oam.dev/v1beta1
kind: Configuration
metadata:
name: alibaba-oss
spec:
hcl: |
resource "alicloud_oss_bucket" "bucket-acl" {
bucket = var.bucket
acl = var.acl
}
output "BUCKET_NAME" {
value = "${alicloud_oss_bucket.bucket-acl.bucket}.${alicloud_oss_bucket.bucket-acl.extranet_endpoint}"
}
variable "bucket" {
description = "OSS bucket name"
default = "vela-website"
type = string
}
variable "acl" {
description = "OSS bucket ACL, supported 'private', 'public-read', 'public-read-write'"
default = "private"
type = string
}
variable:
bucket: "vela-website"
acl: "private"
provider: "alibaba-sample"
writeConnectionSecretToRef:
name: oss-conn
namespace: default