Skip to content
This repository was archived by the owner on Aug 12, 2024. It is now read-only.

Commit 6d9a476

Browse files
author
Sean Sundberg
authored
Creates dirs using external data source (#59)
Signed-off-by: Sean Sundberg <[email protected]>
1 parent fbea594 commit 6d9a476

File tree

2 files changed

+36
-60
lines changed

2 files changed

+36
-60
lines changed

main.tf

Lines changed: 20 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -27,31 +27,28 @@ locals {
2727
version = "4.8"
2828
}
2929
}
30-
cluster_config_dir = "${path.cwd}/.kube"
31-
cluster_type_file = "${path.cwd}/.tmp/cluster_type.val"
3230
name_prefix = var.name_prefix != "" ? var.name_prefix : var.resource_group_name
3331
name_list = [local.name_prefix, "cluster"]
3432
cluster_name = var.name != "" ? var.name : join("-", local.name_list)
35-
tmp_dir = "${path.cwd}/.tmp"
36-
server_url = data.ibm_container_vpc_cluster.config.public_service_endpoint_url
37-
ingress_hostname = data.ibm_container_vpc_cluster.config.ingress_hostname
38-
tls_secret = data.ibm_container_vpc_cluster.config.ingress_secret
33+
server_url = lookup(data.ibm_container_vpc_cluster.config, "public_service_endpoint_url", "")
34+
ingress_hostname = lookup(data.ibm_container_vpc_cluster.config, "ingress_hostname", "")
35+
tls_secret = lookup(data.ibm_container_vpc_cluster.config, "ingress_secret", "")
3936
openshift_versions = {
40-
for version in data.ibm_container_cluster_versions.cluster_versions.valid_openshift_versions:
37+
for version in lookup(data.ibm_container_cluster_versions.cluster_versions, "valid_openshift_versions", []):
4138
substr(version, 0, 3) => "${version}_openshift"
4239
}
4340
cluster_regex = "(${join("|", keys(local.config_values))}|ocp4).*"
4441
cluster_type_cleaned = regex(local.cluster_regex, var.ocp_version)[0] == "ocp4" ? "4.7" : regex(local.cluster_regex, var.ocp_version)[0]
45-
cluster_type = local.config_values[local.cluster_type_cleaned].type
42+
cluster_type = lookup(local.config_values[local.cluster_type_cleaned], "type", "")
4643
# value should be ocp4, ocp3, or kubernetes
47-
cluster_type_code = local.config_values[local.cluster_type_cleaned].type_code
44+
cluster_type_code = lookup(local.config_values[local.cluster_type_cleaned], "type_code", "")
4845
cluster_type_tag = local.cluster_type == "kubernetes" ? "iks" : "ocp"
4946
cluster_version = local.cluster_type == "openshift" ? "${var.ocp_version}_openshift" : ""
5047
vpc_subnet_count = var.vpc_subnet_count
5148
total_workers = var.worker_count * var.vpc_subnet_count
5249
vpc_id = !var.exists ? data.ibm_is_vpc.vpc[0].id : ""
5350
vpc_subnets = !var.exists ? var.vpc_subnets : []
54-
security_group_id = !var.exists ? data.ibm_is_vpc.vpc[0].default_security_group : ""
51+
security_group_id = !var.exists ? lookup(data.ibm_is_vpc.vpc[0], "default_security_group", "") : ""
5552
ipv4_cidr_blocks = !var.exists ? data.ibm_is_subnet.vpc_subnet[*].ipv4_cidr_block : []
5653
kms_config = var.kms_enabled ? [{
5754
instance_id = var.kms_id
@@ -63,7 +60,7 @@ locals {
6360
"hs-crypto"
6461
]
6562
login = var.login ? var.login : !var.disable_public_endpoint
66-
cluster_config = local.login ? data.ibm_container_cluster_config.cluster[0].config_file_path : ""
63+
cluster_config = local.login ? lookup(data.ibm_container_cluster_config.cluster[0], "config_file_path", "") : ""
6764
acl_rules = [{
6865
name = "allow-all-ingress"
6966
action = "allow"
@@ -85,29 +82,13 @@ locals {
8582
])
8683
}
8784

88-
resource null_resource create_dirs {
89-
triggers = {
90-
always_run = timestamp()
91-
}
92-
93-
provisioner "local-exec" {
94-
command = "echo 'regex: ${local.cluster_regex}'"
95-
}
96-
97-
provisioner "local-exec" {
98-
command = "echo 'cluster_type_cleaned: ${local.cluster_type_cleaned}'"
99-
}
100-
101-
provisioner "local-exec" {
102-
command = "mkdir -p ${local.tmp_dir}"
103-
}
104-
105-
provisioner "local-exec" {
106-
command = "mkdir -p ${local.cluster_config_dir}"
107-
}
85+
data external dirs {
86+
program = ["bash", "${path.module}/scripts/create-dirs.sh"]
10887

109-
provisioner "local-exec" {
110-
command = "echo 'Sync value: ${var.sync}'"
88+
query = {
89+
tmp_dir = "${path.cwd}/.tmp"
90+
cluster_config_dir = "${path.cwd}/.kube"
91+
sync = var.sync
11192
}
11293
}
11394

@@ -140,17 +121,10 @@ data ibm_resource_group resource_group {
140121
}
141122

142123
data ibm_container_cluster_versions cluster_versions {
143-
depends_on = [null_resource.create_dirs]
144124

145125
resource_group_id = data.ibm_resource_group.resource_group.id
146126
}
147127

148-
resource null_resource print_cluster_versions {
149-
provisioner "local-exec" {
150-
command = "echo 'Cluster versions: ${jsonencode(data.ibm_container_cluster_versions.cluster_versions.valid_openshift_versions)}'"
151-
}
152-
}
153-
154128
module setup_clis {
155129
source = "github.com/cloud-native-toolkit/terraform-util-clis.git"
156130

@@ -167,14 +141,14 @@ data ibm_is_vpc vpc {
167141
data ibm_is_subnet vpc_subnet {
168142
count = !var.exists ? var.vpc_subnet_count : 0
169143

170-
identifier = local.vpc_subnets[count.index].id
144+
identifier = lookup(local.vpc_subnets[count.index], "id", "")
171145
}
172146

173147
resource null_resource setup_acl_rules {
174148
count = !var.exists && var.vpc_subnet_count > 0 ? 1 : 0
175149

176150
provisioner "local-exec" {
177-
command = "${path.module}/scripts/setup-acl-rules.sh '${data.ibm_is_subnet.vpc_subnet[0].network_acl}' '${var.region}' '${var.resource_group_name}'"
151+
command = "${path.module}/scripts/setup-acl-rules.sh '${lookup(data.ibm_is_subnet.vpc_subnet[0], "network_acl", "")}' '${var.region}' '${var.resource_group_name}'"
178152

179153
environment = {
180154
IBMCLOUD_API_KEY = var.ibmcloud_api_key
@@ -271,47 +245,33 @@ resource ibm_is_security_group_rule rule_tcp_k8s {
271245
}
272246

273247
data ibm_container_vpc_cluster config {
274-
depends_on = [ibm_container_vpc_cluster.cluster, null_resource.create_dirs, ibm_is_security_group_rule.rule_tcp_k8s]
248+
depends_on = [ibm_container_vpc_cluster.cluster, ibm_is_security_group_rule.rule_tcp_k8s]
275249

276250
name = local.cluster_name
277251
alb_type = var.disable_public_endpoint ? "private" : "public"
278252
resource_group_id = data.ibm_resource_group.resource_group.id
279253
}
280254

281-
resource "null_resource" "list_tmp" {
282-
depends_on = [null_resource.create_dirs]
283-
284-
triggers = {
285-
always_run = timestamp()
286-
}
287-
288-
provisioner "local-exec" {
289-
command = "ls ${local.tmp_dir}"
290-
}
291-
}
292-
293-
294255
data ibm_container_cluster_config cluster_admin {
295256
count = local.login ? 1 : 0
296-
depends_on = [data.ibm_container_vpc_cluster.config, null_resource.list_tmp]
257+
depends_on = [data.ibm_container_vpc_cluster.config]
297258

298259
cluster_name_id = local.cluster_name
299260
admin = true
300261
resource_group_id = data.ibm_resource_group.resource_group.id
301-
config_dir = local.cluster_config_dir
262+
config_dir = data.external.dirs.result.cluster_config_dir
302263
}
303264

304265
data ibm_container_cluster_config cluster {
305266
count = local.login ? 1 : 0
306267
depends_on = [
307268
data.ibm_container_vpc_cluster.config,
308-
null_resource.list_tmp,
309269
data.ibm_container_cluster_config.cluster_admin
310270
]
311271

312272
cluster_name_id = local.cluster_name
313273
resource_group_id = data.ibm_resource_group.resource_group.id
314-
config_dir = local.cluster_config_dir
274+
config_dir = data.external.dirs.result.cluster_config_dir
315275
}
316276

317277
data "ibm_container_vpc_cluster_worker" "workers" {

scripts/create-dirs.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
3+
INPUT=$(tee)
4+
5+
TMP_DIR=$(echo "${INPUT}" | grep "tmp_dir" | sed -E 's/.*"tmp_dir": ?"([^"]*)".*/\1/g')
6+
CLUSTER_CONFIG_DIR=$(echo "${INPUT}" | grep "cluster_config_dir" | sed -E 's/.*"cluster_config_dir": ?"([^"]*)".*/\1/g')
7+
8+
if [[ -n "${TMP_DIR}" ]]; then
9+
mkdir -p "${TMP_DIR}"
10+
fi
11+
12+
if [[ -n "${CLUSTER_CONFIG_DIR}" ]]; then
13+
mkdir -p "${CLUSTER_CONFIG_DIR}"
14+
fi
15+
16+
echo "{\"tmp_dir\": \"${TMP_DIR}\", \"cluster_config_dir\": \"${CLUSTER_CONFIG_DIR}\"}"

0 commit comments

Comments
 (0)