Skip to content

Commit

Permalink
terraform-provider: fix parsing api_server_cert_sans (#2758)
Browse files Browse the repository at this point in the history
* tf: don't double quote cert sans

* tf: improve provider examples
  • Loading branch information
3u13r authored Dec 27, 2023
1 parent 2ce73c1 commit 2f10223
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ module "aws_infrastructure" {
instance_type = "m6a.xlarge"
disk_size = 30
disk_type = "gp3"
initial_count = 2
initial_count = 3
zone = local.zone
},
worker_default = {
Expand All @@ -70,6 +70,7 @@ module "aws_infrastructure" {
image_id = data.constellation_image.bar.image.reference
region = local.region
zone = local.zone
internal_load_balancer = false
debug = false
enable_snp = true
custom_endpoint = ""
Expand Down Expand Up @@ -100,6 +101,7 @@ resource "constellation_cluster" "aws_example" {
measurement_salt = local.measurement_salt
out_of_cluster_endpoint = module.aws_infrastructure.out_of_cluster_endpoint
in_cluster_endpoint = module.aws_infrastructure.in_cluster_endpoint
api_server_cert_sans = module.aws_infrastructure.api_server_cert_sans
network_config = {
ip_cidr_node = module.aws_infrastructure.ip_cidr_node
ip_cidr_service = "10.96.0.0/12"
Expand Down
10 changes: 6 additions & 4 deletions terraform-provider-constellation/examples/full/azure_cluster.tf
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,11 @@ module "azure_infrastructure" {
initial_count = 2
}
}
location = local.location
image_id = data.constellation_image.bar.image.reference
resource_group = module.azure_iam.base_resource_group
create_maa = true
location = local.location
image_id = data.constellation_image.bar.image.reference
resource_group = module.azure_iam.base_resource_group
internal_load_balancer = false
create_maa = true
}

data "constellation_attestation" "foo" {
Expand Down Expand Up @@ -95,6 +96,7 @@ resource "constellation_cluster" "azure_example" {
measurement_salt = local.measurement_salt
out_of_cluster_endpoint = module.azure_infrastructure.out_of_cluster_endpoint
in_cluster_endpoint = module.azure_infrastructure.in_cluster_endpoint
api_server_cert_sans = module.azure_infrastructure.api_server_cert_sans
azure = {
tenant_id = module.azure_iam.tenant_id
subscription_id = module.azure_iam.subscription_id
Expand Down
14 changes: 8 additions & 6 deletions terraform-provider-constellation/examples/full/gcp_cluster.tf
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ module "gcp_infrastructure" {
instance_type = "n2d-standard-4"
disk_size = 30
disk_type = "pd-ssd"
initial_count = 2
initial_count = 3
zone = local.zone
},
worker_default = {
Expand All @@ -68,11 +68,12 @@ module "gcp_infrastructure" {
zone = local.zone
}
}
image_id = data.constellation_image.bar.image.reference
debug = false
zone = local.zone
region = local.region
project = local.project_id
image_id = data.constellation_image.bar.image.reference
debug = false
zone = local.zone
region = local.region
project = local.project_id
internal_load_balancer = false
}

data "constellation_attestation" "foo" {
Expand All @@ -99,6 +100,7 @@ resource "constellation_cluster" "gcp_example" {
measurement_salt = local.measurement_salt
out_of_cluster_endpoint = module.gcp_infrastructure.out_of_cluster_endpoint
in_cluster_endpoint = module.gcp_infrastructure.in_cluster_endpoint
api_server_cert_sans = module.gcp_infrastructure.api_server_cert_sans
gcp = {
project_id = module.gcp_infrastructure.project
service_account_key = module.gcp_iam.service_account_key
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -685,9 +685,10 @@ func (r *ClusterResource) apply(ctx context.Context, data *ClusterResourceModel,
}

// parse API server certificate SANs
apiServerCertSANs := make([]string, 0, len(data.APIServerCertSANs.Elements()))
for _, san := range data.APIServerCertSANs.Elements() {
apiServerCertSANs = append(apiServerCertSANs, san.String())
apiServerCertSANs, convertDiags := r.getAPIServerCertSANs(ctx, data)
diags.Append(convertDiags...)
if diags.HasError() {
return diags
}

// parse network config
Expand Down Expand Up @@ -1210,6 +1211,15 @@ func (r *ClusterResource) getNetworkConfig(ctx context.Context, data *ClusterRes
return networkCfg, diags
}

func (r *ClusterResource) getAPIServerCertSANs(ctx context.Context, data *ClusterResourceModel) ([]string, diag.Diagnostics) {
if data.APIServerCertSANs.IsNull() {
return nil, nil
}
apiServerCertSANs := make([]string, 0, len(data.APIServerCertSANs.Elements()))
diags := data.APIServerCertSANs.ElementsAs(ctx, &apiServerCertSANs, false)
return apiServerCertSANs, diags
}

// tfContextLogger is a logging adapter between the tflog package and
// Constellation's logger.
type tfContextLogger struct {
Expand Down

0 comments on commit 2f10223

Please sign in to comment.