2 region = var.aws_region
3 access_key = var.access_key
4 secret_key = var.secret_key
8 resource "aws_instance" "master" {
10 instance_type = var.aws_instance
11 vpc_security_group_ids = [aws_security_group.instance.id]
12 subnet_id = var.aws_subnet_id
16 apt update -y >> microk8s_install.log
17 apt install snapd -y >> microk8s_install.log
18 snap install core >> microk8s_install.log
19 export PATH=$PATH:/snap/bin
20 snap install microk8s --classic >> microk8s_install.log
21 microk8s status --wait-ready
22 microk8s enable dns >> microk8s_install.log
23 microk8s add-node > microk8s.join_token
24 microk8s config > configFile
26 key_name = "terraform"
30 provisioner "remote-exec" {
31 inline = ["until [ -f /microk8s.join_token ]; do sleep 5; done; cat /microk8s.join_token",
32 "sudo sed -i 's/#MOREIPS/IP.7 = ${self.public_ip}\\n#MOREIPS/g' /var/snap/microk8s/current/certs/csr.conf.template",
44 private_key = "${file("terraform.pem")}"
47 provisioner "local-exec" {
49 ssh-keyscan -H ${self.public_dns} >> ~/.ssh/known_hosts
50 scp -i terraform.pem ubuntu@${self.public_dns}:/microk8s.join_token .
51 tail -n1 microk8s.join_token >> token
52 scp -i terraform.pem ubuntu@${self.public_dns}:/configFile .
57 create_before_destroy = true
61 resource "aws_security_group" "instance" {
62 name = "master_microk8s"
68 cidr_blocks = ["0.0.0.0/0"]
74 cidr_blocks = ["0.0.0.0/0"]
79 data "local_file" "tokenContent" {
88 public_dns = aws_instance.master.public_dns
89 join = data.local_file.tokenContent.content
93 resource "aws_instance" "worker" {
95 instance_type = var.aws_instance
96 vpc_security_group_ids = [aws_security_group.instance.id]
97 subnet_id = var.aws_subnet_id
98 user_data = templatefile("worker_user_data.tmpl", { token = local.join } )
99 key_name = "terraform"
104 provisioner "remote-exec" {
105 inline = ["until [ -f /microk8s.complete ]; do sleep 5; done"]
109 host = self.public_ip
113 private_key = "${file("terraform.pem")}"
116 create_before_destroy = true
126 value = aws_instance.master.public_ip