我对 Terraform 配置有疑问。当我第一次运行 terraform 时,我使用在 AWS 控制台中生成的 SSH 密钥。该密钥正在添加到ubuntu
用户(Ubuntu 16.04 AMI)。然后我跑remote-exec
配置:
provisioner "remote-exec" {
inline = [
"sudo apt -y update && sudo apt install -y python"
]
connection {
user = "ubuntu"
private_key = "${file("${var.aws_default_key_name}.pem")}"
}
}
我需要安装 python,以便稍后可以使用 Ansible。这是我唯一需要此密钥的地方,再也不会了,因为我用我的私钥创建了自己的用户。但是,当我稍后尝试运行 terraform 时,它会搜索文件file("${var.aws_default_key_name}.pem"
。
现在我有一个问题如何在后续运行中跳过此配置?
我不想将 SSH 密钥存储在存储库中。
我可以创建一个空文件来“欺骗”terraform,但我不喜欢这个解决方案。
还有更好的想法吗?
而不是在中进行配置aws_instance
块,将其移出到null_resource https://www.terraform.io/docs/provisioners/null_resource.html阻止,并使用适当的触发器。
resource "aws_instance" "cluster" {
count = 3
# ...
}
resource "null_resource" "cluster" {
# Changes to any instance of the cluster requires re-provisioning
triggers {
cluster_instance_ids = "${join(",", aws_instance.cluster.*.id)}"
}
connection {
host = "${element(aws_instance.cluster.*.public_ip, 0)}"
}
provisioner "remote-exec" {
inline = [something]
}
}
如果您的触发器不更改,则后续运行时不会触发 null_resource 配置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)