X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=src%2Ffoundation%2Fmicrok8s%2Fmain.tf;fp=src%2Ffoundation%2Fmicrok8s%2Fmain.tf;h=ea33da55eac9028d5d00bec293b8217239e8fa61;hb=d22c2adbe3588e17b03225718b526c03aad3b2f8;hp=0000000000000000000000000000000000000000;hpb=5cc0d5f3f4a0081f47a414b0c3679d85351ad398;p=iec.git diff --git a/src/foundation/microk8s/main.tf b/src/foundation/microk8s/main.tf new file mode 100644 index 0000000..ea33da5 --- /dev/null +++ b/src/foundation/microk8s/main.tf @@ -0,0 +1,128 @@ +provider "aws" { + region = var.aws_region + access_key = var.access_key + secret_key = var.secret_key + +} + +resource "aws_instance" "master" { + ami = var.aws_ami + instance_type = var.aws_instance + vpc_security_group_ids = [aws_security_group.instance.id] + subnet_id = var.aws_subnet_id + user_data = <<-EOF + #!/bin/bash + sudo su + apt update -y >> microk8s_install.log + apt install snapd -y >> microk8s_install.log + snap install core >> microk8s_install.log + export PATH=$PATH:/snap/bin + snap install microk8s --classic >> microk8s_install.log + microk8s status --wait-ready + microk8s enable dns >> microk8s_install.log + microk8s add-node > microk8s.join_token + microk8s config > configFile + EOF + key_name = "terraform" + tags = { + Name = "master" + } + provisioner "remote-exec" { + inline = ["until [ -f /microk8s.join_token ]; do sleep 5; done; cat /microk8s.join_token", + "sudo sed -i 's/#MOREIPS/IP.7 = ${self.public_ip}\\n#MOREIPS/g' /var/snap/microk8s/current/certs/csr.conf.template", + "sudo sleep 1m", + "sudo microk8s stop", + "sudo microk8s start" + ] + } + + connection { + host = self.public_ip + type = "ssh" + user = "ubuntu" + password = "" + private_key = "${file("terraform.pem")}" + } + + provisioner "local-exec" { + command = <> ~/.ssh/known_hosts + scp -i terraform.pem ubuntu@${self.public_dns}:/microk8s.join_token . + tail -n1 microk8s.join_token >> token + scp -i terraform.pem ubuntu@${self.public_dns}:/configFile . + EOT + } + + lifecycle { + create_before_destroy = true + } +} + +resource "aws_security_group" "instance" { + name = "master_microk8s" + vpc_id = var.vpc_id + ingress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + egress { + from_port = 0 + to_port = 0 + protocol = "-1" + cidr_blocks = ["0.0.0.0/0"] + } + +} + +data "local_file" "tokenContent" { + filename = "token" + depends_on = [ + aws_instance.master, + ] +} + + +locals { + public_dns = aws_instance.master.public_dns + join = data.local_file.tokenContent.content +} + + +resource "aws_instance" "worker" { + ami = var.aws_ami + instance_type = var.aws_instance + vpc_security_group_ids = [aws_security_group.instance.id] + subnet_id = var.aws_subnet_id + user_data = templatefile("worker_user_data.tmpl", { token = local.join } ) + key_name = "terraform" + tags = { + Name = "worker" + } + + provisioner "remote-exec" { + inline = ["until [ -f /microk8s.complete ]; do sleep 5; done"] + } + + connection { + host = self.public_ip + type = "ssh" + user = "ubuntu" + password = "" + private_key = "${file("terraform.pem")}" + } + lifecycle { + create_before_destroy = true + } + + depends_on = [ + aws_instance.master, + ] +} + + +output "master_ip" { + value = aws_instance.master.public_ip +} +