在上个页面,你使用Terraform创建了你第一个基础设施:一个EC2实例。在本页,我们将变更那个资源,并了解Terraform如何处理变更。

基础设施在持续发展,Terraform的创建就是为了管理和实施这些变更。当你修改配置文件时,Terraform构建一个变更必要的执行计划来达到你的期望状态。

使用Terraform变更基础设施,你不仅可以版本控制你的配置也可以版本控制你的状态,所以你可以看到你的基础设施时如何随着时间发展变化。

配置

让我们修改实例的ami。在你的配置文件中编辑 aws_instance.example资源,将它改成如下所示:

resource "aws_instance" "example" {
  ami           = "ami-b374d5a5"
  instance_type = "t2.micro"
}
注意:EC2经典用户请使用 ami-656be372 AMI 和 t1.micro类型。

我们将AMI从Ubuntu 16.04 LTS改成了Ubuntu 16.10。Terraform配置意味着做如此变更。你也可以删除该资源,Terraform知道将要销毁老资源。

应用变更

改完配置以后,再次执行 terraform apply来查看Terraform将如何应用该变更到当前资源。

$ terraform apply
# ...

-/+ aws_instance.example
    ami:                      "ami-2757f631" => "ami-b374d5a5" (forces new resource)
    availability_zone:        "us-east-1a" => "<computed>"
    ebs_block_device.#:       "0" => "<computed>"
    ephemeral_block_device.#: "0" => "<computed>"
    instance_state:           "running" => "<computed>"
    instance_type:            "t2.micro" => "t2.micro"
    private_dns:              "ip-172-31-17-94.ec2.internal" => "<computed>"
    private_ip:               "172.31.17.94" => "<computed>"
    public_dns:               "ec2-54-82-183-4.compute-1.amazonaws.com" => "<computed>"
    public_ip:                "54.82.183.4" => "<computed>"
    subnet_id:                "subnet-1497024d" => "<computed>"
    vpc_security_group_ids.#: "1" => "<computed>"

下一步

<!-- more -->

<!--//
硬啃官方文档产物,若有不妥之处,欢迎指正,请以官方文档为准!
//-->


hanyouqing
787 声望757 粉丝

自我简介?没啥好介的,你不会有兴趣的。还是看下平台和工具吧,不安利无广告,干了这杯广告,^_^ 深藏功与名~