knowledge-base

我的知识库 / Kubernetes / Terraform

Terraform

创建ec2同时安装应用的三种方式

Mode 1: userdata

resource "aws_instance" "demo" {
  # ...
  
  # Mode 1: userdata
  user_data = "${file("../templates/install_nginx.sh")}"
  
  # ...
}

Mode 2: remote-exec

resource "aws_instance" "demo" {
  # ...
  
  # Mode 2: remote-exec
  connection {
    host = "${self.private_ip}"
    private_key = "${file("xxx.pem")}"
    user        = "${var.ansible_user}"
  }
  provisioner "remote-exec" {
    inline = [
      "sudo apt-get update",
      "sudo apt-get install -y nginx",
      "sudo service nginx start"
    ]
  }
   
  # ...
}

Mode 3: local-exec with Ansible

resource "aws_instance" "demo" {
  # ...
  
  # Mode 3: local-exec with ansible-playbook
  provisioner "local-exec" {
    command = <<EOT
      sleep 30;
   >nginx.ini;
   echo "[nginx]" | tee -a nginx.ini;
      chmod 600 xxx.pem;
   echo "${self.private_ip} ansible_user=${var.ansible_user} ansible_ssh_private_key_file=xxx.pem" | tee -a nginx.ini;
      export ANSIBLE_HOST_KEY_CHECKING=False;
   ansible-playbook -u ${var.ansible_user} --private-key xxx.pem -i nginx.ini ../playbooks/install_nginx.yaml
    EOT
  }
   
   # ...
}

« Kubernetes 0-1 使用preStop优雅终止Pod

» Velero + Minio 备份与恢复