如何用Terraform代码停止实例?不销毁仅停止的命令是什么?
Terraform停止实例的相关问题解答
1. 如何通过Terraform代码停止实例?
Terraform本身没有直接的"停止实例"命令,需要通过调整资源配置来实现,具体取决于你的云提供商:
- 以AWS EC2为例:在
aws_instance资源块中添加或修改instance_state参数为"stopped",示例配置如下:resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" instance_state = "stopped" # 设置为停止状态 } - 对于不支持直接设置实例状态的云提供商,可以使用
local-execprovisioner调用云厂商的CLI命令来停止实例,示例:resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" provisioner "local-exec" { command = "aws ec2 stop-instances --instance-ids ${self.id}" } }
修改配置后执行对应的Terraform命令,即可将实例状态更新为停止。
2. 是否可以不销毁实例而仅将其停止?
是的,完全可以。terraform destroy会彻底删除实例资源,而通过调整配置更新实例状态,只是将实例转为停止状态,实例关联的磁盘、弹性IP等资源会被保留,后续可通过修改配置为"running"并执行命令重新启动实例。
3. 命令行空缺处应填写什么?
空缺处应填写apply,完整命令为:
C:\terraform\2-instances>terraform apply
前提是你已经修改了Terraform配置文件,将实例的状态设置为停止(如上述AWS示例中的instance_state = "stopped")。执行该命令后,Terraform会对比当前配置与远程资源状态,将实例更新为停止状态,不会销毁实例。
内容的提问来源于stack exchange,提问作者Aswini Gadde
相关产品推荐
相关产品推荐

