diff --git a/charts/vela-core/templates/addons/terraform.yaml b/charts/vela-core/templates/addons/terraform.yaml index bf589197a..29a8b9e7d 100644 --- a/charts/vela-core/templates/addons/terraform.yaml +++ b/charts/vela-core/templates/addons/terraform.yaml @@ -92,6 +92,8 @@ data: kind: ComponentDefinition metadata: annotations: + cloud-resource/console-url: https://oss.console.aliyun.com/bucket/oss-{ALICLOUD_REGION}/{BUCKET_NAME}/overview + cloud-resource/identifier: BUCKET_NAME definition.oam.dev/description: Terraform configuration for Alibaba Cloud OSS object labels: @@ -119,6 +121,9 @@ data: kind: ComponentDefinition metadata: annotations: + cloud-resource/console-url: https://rdsnext.console.aliyun.com/detail/{DB_ID}/basicInfo?®ion={ALICLOUD_REGION} + cloud-resource/identifier: DB_ID + cloud-resource/sensitive-outputs: DB_PASSWORD definition.oam.dev/description: Terraform configuration for Alibaba Cloud RDS object labels: @@ -142,6 +147,10 @@ data: security_ips = ["0.0.0.0/0",] } + output "DB_ID" { + value = module.rds.db_instance_id + } + output "DB_NAME" { value = module.rds.this_db_instance_name } diff --git a/docs/examples/terraform/cloud-resource-provision-and-consume/application-rds.yaml b/docs/examples/terraform/cloud-resource-provision-and-consume/application-rds.yaml new file mode 100644 index 000000000..91abb38e3 --- /dev/null +++ b/docs/examples/terraform/cloud-resource-provision-and-consume/application-rds.yaml @@ -0,0 +1,14 @@ +apiVersion: core.oam.dev/v1beta1 +kind: Application +metadata: + name: app-rds-sample +spec: + components: + - name: sample-db + type: alibaba-rds + properties: + instance_name: sample-db + account_name: oamtest + password: U34rfwefwefffaked + writeConnectionSecretToRef: + name: db-conn diff --git a/pkg/appfile/appfile.go b/pkg/appfile/appfile.go index 12b8ba453..84bab6db2 100644 --- a/pkg/appfile/appfile.go +++ b/pkg/appfile/appfile.go @@ -664,8 +664,14 @@ func generateTerraformConfigurationWorkload(wl *Workload, ns string) (*unstructu } configuration := terraformapi.Configuration{ - TypeMeta: metav1.TypeMeta{APIVersion: "terraform.core.oam.dev/v1beta1", Kind: "Configuration"}, - ObjectMeta: metav1.ObjectMeta{Name: wl.Name, Namespace: ns}, + TypeMeta: metav1.TypeMeta{APIVersion: "terraform.core.oam.dev/v1beta1", Kind: "Configuration"}, + ObjectMeta: metav1.ObjectMeta{ + Name: wl.Name, + Namespace: ns, + }, + } + if wl.FullTemplate.ComponentDefinition != nil { + configuration.ObjectMeta.Annotations = wl.FullTemplate.ComponentDefinition.Annotations } switch wl.FullTemplate.Terraform.Type { diff --git a/vela-templates/addons/auto-gen/terraform.yaml b/vela-templates/addons/auto-gen/terraform.yaml index e5645d714..bb1b9b899 100644 --- a/vela-templates/addons/auto-gen/terraform.yaml +++ b/vela-templates/addons/auto-gen/terraform.yaml @@ -89,6 +89,8 @@ spec: kind: ComponentDefinition metadata: annotations: + cloud-resource/console-url: https://oss.console.aliyun.com/bucket/oss-{ALICLOUD_REGION}/{BUCKET_NAME}/overview + cloud-resource/identifier: BUCKET_NAME definition.oam.dev/description: Terraform configuration for Alibaba Cloud OSS object labels: @@ -116,6 +118,9 @@ spec: kind: ComponentDefinition metadata: annotations: + cloud-resource/console-url: https://rdsnext.console.aliyun.com/detail/{DB_ID}/basicInfo?®ion={ALICLOUD_REGION} + cloud-resource/identifier: DB_ID + cloud-resource/sensitive-outputs: DB_PASSWORD definition.oam.dev/description: Terraform configuration for Alibaba Cloud RDS object labels: @@ -139,6 +144,10 @@ spec: security_ips = ["0.0.0.0/0",] } + output "DB_ID" { + value = module.rds.db_instance_id + } + output "DB_NAME" { value = module.rds.this_db_instance_name } diff --git a/vela-templates/addons/terraform/definitions/terraform-alibaba-oss.yaml b/vela-templates/addons/terraform/definitions/terraform-alibaba-oss.yaml index 5a72ed9af..8ad5a92ef 100644 --- a/vela-templates/addons/terraform/definitions/terraform-alibaba-oss.yaml +++ b/vela-templates/addons/terraform/definitions/terraform-alibaba-oss.yaml @@ -5,6 +5,11 @@ metadata: namespace: vela-system annotations: definition.oam.dev/description: Terraform configuration for Alibaba Cloud OSS object + # identifier of this cloud resource + cloud-resource/identifier: BUCKET_NAME + # the console url of this cloud resource + cloud-resource/console-url: "https://oss.console.aliyun.com/bucket/oss-{ALICLOUD_REGION}/{BUCKET_NAME}/overview" + # the outputs which are sensitive. Separate them by a comma if there are more than one labels: type: terraform spec: diff --git a/vela-templates/addons/terraform/definitions/terraform-alibaba-rds.yaml b/vela-templates/addons/terraform/definitions/terraform-alibaba-rds.yaml index cfa273519..20551f964 100644 --- a/vela-templates/addons/terraform/definitions/terraform-alibaba-rds.yaml +++ b/vela-templates/addons/terraform/definitions/terraform-alibaba-rds.yaml @@ -5,6 +5,12 @@ metadata: namespace: vela-system annotations: definition.oam.dev/description: Terraform configuration for Alibaba Cloud RDS object + # identifier of this cloud resource + cloud-resource/identifier: DB_ID + # the console url of this cloud resource + cloud-resource/console-url: "https://rdsnext.console.aliyun.com/detail/{DB_ID}/basicInfo?®ion={ALICLOUD_REGION}" + # the outputs which are sensitive. Separate them by a comma if there are more than one + cloud-resource/sensitive-outputs: "DB_PASSWORD" labels: type: terraform spec: @@ -28,6 +34,10 @@ spec: security_ips = ["0.0.0.0/0",] } + output "DB_ID" { + value = module.rds.db_instance_id + } + output "DB_NAME" { value = module.rds.this_db_instance_name }