aboutsummaryrefslogtreecommitdiffstats
path: root/openlab/modules/kubernetes/rancher/main.tf
diff options
context:
space:
mode:
authoryoonsoonjahng <yoonsoon.jahng@yoppworks.com>2020-09-02 13:06:34 -0400
committeryoonsoonjahng <yoonsoon.jahng@yoppworks.com>2020-09-09 21:07:31 -0400
commitbc47c630d9fdc0e0e75b64a0c3d2311df28cfeaa (patch)
tree23f97a308af22389a46534dba2328e3d4e52e3e0 /openlab/modules/kubernetes/rancher/main.tf
parente291bec2483388ff1b6f2552dd894d7092823a06 (diff)
added initial files
Issue-ID: INT-1698 Change-Id: I3405a7815bc51dbdf2cb61cd2003d46f428f059c Signed-off-by: yoonsoonjahng <yoonsoon.jahng@yoppworks.com>
Diffstat (limited to 'openlab/modules/kubernetes/rancher/main.tf')
-rw-r--r--openlab/modules/kubernetes/rancher/main.tf55
1 files changed, 55 insertions, 0 deletions
diff --git a/openlab/modules/kubernetes/rancher/main.tf b/openlab/modules/kubernetes/rancher/main.tf
new file mode 100644
index 0000000..b787f0b
--- /dev/null
+++ b/openlab/modules/kubernetes/rancher/main.tf
@@ -0,0 +1,55 @@
+# If your terraform version is < 0.13-beta, manual installation is needed.
+# https://github.com/rancher/terraform-provider-rke
+provider "rke" {}
+
+locals {
+ control_node = [for ip in (flatten(data.terraform_remote_state.control_plane_floating_ips.outputs.floating_ips)): {
+ address = ip
+ role = "control"
+ }]
+ worker_node = [for ip in (flatten(data.terraform_remote_state.worker_node_floating_ips.outputs.floating_ips)): {
+ address = ip
+ role = "worker"
+ }]
+
+ all_node = concat(local.control_node, local.worker_node)
+}
+
+resource "rke_cluster" "cluster" {
+ kubernetes_version = var.kubernetes_version
+ cluster_name = var.kubernetes_cluster_name
+
+ dynamic nodes {
+
+ for_each = local.all_node
+
+ content {
+ address = nodes.value.address
+ user = var.kubernetes_user
+ role = (nodes.value.role == "control") ? [ "controlplane", "etcd" ] : ["worker"]
+ }
+ }
+
+ # You have to have private key on your machine excuting terraform
+ # An Openstack keypair is generated and stored within the remote state at
+ # "${var.region}/${var.environment}/keypair/terraform.tfstate"
+ ssh_key_path = var.ssh_private_key_path
+
+ disable_port_check = false
+
+ depends_on = [null_resource.wait-for-docker]
+}
+
+resource "local_file" "kube_cluster_yaml" {
+ filename = "${var.kubernetes_home}/kube_config_cluster.yaml"
+ sensitive_content = rke_cluster.cluster.kube_config_yaml
+}
+
+resource "null_resource" "wait-for-docker" {
+ provisioner "local-exec" {
+ # wait untill VM's bootstrapping's done
+ # If your VMs for Computing node have finished bootstrapping already,
+ # you may not need this waiting time
+ command = "sleep 120"
+ }
+}