【发布时间】:2019-06-04 15:28:27
【问题描述】:
我有一个资源“aws_instance”,其中包括一个供应商“文件”。当 EC2 实例最初不存在时,这一切都按预期工作。
如果文件从 VM 中删除,我如何重新运行配置程序?
resource "aws_instance" "example" {
ami = "ami-0b0a60c0a2bd40612"
instance_type = "t2.micro"
key_name = "secret"
security_groups = ["terraform-basic-ssh-http"]
provisioner "file" {
source = "install-nginx.sh"
destination = "/tmp/install-nginx.sh"
connection {
type = "ssh"
user = "ubuntu"
private_key = "${file("/local/path/to/my/key.pem")}"
}
}
provisioner "remote-exec" {
inline = [
"chmod +x /tmp/install-nginx.sh",
"/tmp/install-nginx.sh"
]
connection {
type = "ssh"
user = "ubuntu"
private_key = "${file("/local/path/to/mykey.pem")}"
}
}
}
【问题讨论】:
-
您应该为此使用 Packer。
-
Packer 会不会有点笨手笨脚?这将意味着杀死VM并从packer AMI开始一个新的?我可以看到 Ansible 在这种情况下工作,但 Terraform 没有类似的东西吗?
-
Packer 是解决此类问题的最简单和最有效的路径,通常被认为是最佳实践。您所要做的就是创建一个通过 Packer 安装 NGINX 的 AMI,并且您已将 N 数问题减少到 1。
标签: terraform