My Terraform resource file looks like this :
resource "aws_instance" "ubuntu14" {
instance_type = "t2.medium"
ami = "${lookup(var.aws_amis_ubuntu14,var.aws_region)}"
tags {
Name = "${var.user_label} - Ubuntu 14 - Fresh Agent Install - ${count.index}"
}
key_name = "${var.aws_key_name}"
vpc_security_group_ids = ["${lookup(var.security_group_id,var.aws_region)}"]
count = "${var.count}"
...
我已经有一台机器正在运行但不想销毁它。
我如何在terraform中实现这一目标?
Terraform计划显示以下内容: 计划:2添加,0改变,1毁灭。
我想保留所有3
答案 0 :(得分:3)
不幸的是,您必须从状态文件中获取信息。您可以手动执行此操作(繁琐且不推荐),也可以使用Terraform state rm。
答案 1 :(得分:3)
我已经有一台机器正在运行而且不想销毁它
有两种方法可以解释这句话:
根据哪些陈述属实,您需要采取不同的行动:
您可以使用Terraform import command允许Terraform管理此现有实例。在EC2控制台中查找现有实例的ID,然后运行以下命令:
terraform import aws_instance.ubuntu14 <YOUR_INSTANCE_ID>
现在,当您运行terraform plan
时,唯一的变化就是代码与实际运行的差异。
对于EC2实例的大多数更改,例如更改AMI ID,用户数据或IAM角色,Terraform将销毁旧实例并部署新实例。没有办法更新这些参数&#34;到位&#34;使用Terraform,因为AWS本身并不允许您更新它们!
因此,您有几个选择:
apt-get install
以添加一些新的依赖项),请SSH到实例并直接对其进行更新。或者,您可以使用Chef,Puppet或Ansible等配置管理工具来管理所有这些工具。