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}"
Run Code Online (Sandbox Code Playgroud)
....
我已经有一台正在运行的机器,不想破坏它。
我如何在 terraform apply 中实现这一点?
Terraform 计划显示如下: 计划:2 添加,0 更改,1 销毁。
我想保留所有 3
我已经有一台机器在运行,不想破坏它
有两种方法可以解释此语句:
根据这些陈述中的哪一个是正确的,您需要采取不同的行动:
您可以使用Terraform 导入命令允许 Terraform 管理此现有实例。在 EC2 控制台中查找现有实例的 ID 并运行以下命令:
terraform import aws_instance.ubuntu14 <YOUR_INSTANCE_ID>
Run Code Online (Sandbox Code Playgroud)
现在,当您运行 时terraform plan,唯一的变化将是代码与实际运行的代码之间的任何差异。
对于 EC2 实例的大多数更改,例如更改 AMI ID、用户数据或 IAM 角色,Terraform 将销毁旧实例并部署新实例。使用 Terraform 无法“就地”更新这些参数,因为 AWS 本身不允许您更新它们!
因此,您有几个选择:
apt-get install以添加一些新的依赖项),请通过 SSH 连接到实例并直接对其进行更新。或者,您可以使用诸如 Chef、Puppet 或 Ansible 之类的配置管理工具来为您管理所有这些。不幸的是,您必须从状态文件中取出信息。您可以手动执行此操作(乏味且不推荐),也可以使用 Terraform state rm。
请参阅以下文档:https : //www.terraform.io/docs/commands/state/rm.html
| 归档时间: |
|
| 查看次数: |
9819 次 |
| 最近记录: |