Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何将terraform.tfstate转换为配置文件?_Amazon Web Services_Terraform - Fatal编程技术网

Amazon web services 如何将terraform.tfstate转换为配置文件?

Amazon web services 如何将terraform.tfstate转换为配置文件?,amazon-web-services,terraform,Amazon Web Services,Terraform,我在AWS管理控制台中创建了一个AWS资源。然后我运行terraformimport将AWS资源导入terraform。现在我有了这个terraform.tfstate文件。但是我如何将其转换回Terraform配置文件呢?作为解释,目前Terraform只会将资源导入到您的状态文件中,而不会为您生成配置 如果您在不定义资源的情况下尝试此操作,Terraform将抛出一个错误,告诉您定义资源,甚至提供一个简单的示例: Error: resource address "aws_instance.f

我在AWS管理控制台中创建了一个AWS资源。然后我运行
terraformimport
将AWS资源导入terraform。现在我有了这个
terraform.tfstate
文件。但是我如何将其转换回Terraform配置文件呢?

作为解释,目前Terraform只会将资源导入到您的状态文件中,而不会为您生成配置

如果您在不定义资源的情况下尝试此操作,Terraform将抛出一个错误,告诉您定义资源,甚至提供一个简单的示例:

Error: resource address "aws_instance.foo" does not exist in the configuration.

Before importing this resource, please create its configuration in the root module. For example:

resource "aws_instance" "foo" {
  # (resource arguments)
}
如果您随后采用该配置并将其放入一个
.tf
文件中供Terraform使用,它应该可以导入,但计划会告诉您它缺少必填字段:

Error: aws_instance.foo: "ami": required field is not set

Error: aws_instance.foo: "instance_type": required field is not set

如果随后添加这些必填字段并再次运行计划,Terraform将向您显示导入的资源与配置想要应用的更改之间的差异。然后,您可能希望返回到配置并将其对齐,以使您的计划为空,然后应用它。此时,就好像Terraform最初创建了资源,然后将继续作为资源生命周期的一部分对其进行管理。

您可以使用Terraform show命令生成tf文件的原型,如下所示:

# terraform show
命令输出为:

# tencentcloud_instance.ajaxhe_ins:
resource "tencentcloud_instance" "ajaxhe_ins" {
    allocate_public_ip                      = true
    availability_zone                       = "ap-hongkong-2"
    create_time                             = "2020-01-23T11:09:28Z"
    expired_time                            = "2020-05-24T09:41:36Z"
    id                                      = "ins-59xsw9ji"
    image_id                                = "img-31tjrtph"
    instance_charge_type                    = "PREPAID"
    instance_charge_type_prepaid_renew_flag = "NOTIFY_AND_MANUAL_RENEW"
    instance_name                           = "centos-1GB--2170"
    instance_status                         = "RUNNING"
    instance_type                           = "S2.SMALL1"
    internet_charge_type                    = "BANDWIDTH_PREPAID"
    internet_max_bandwidth_out              = 1
    private_ip                              = "172.18.1.0"
    project_id                              = 0
    public_ip                               = "129.173.115.221"
    running_flag                            = true
    security_groups                         = [
        "sg-lxlzf8fn",
    ]
    subnet_id                               = "subnet-3a05z4r3"
    system_disk_id                          = "disk-b0p7allu"
    system_disk_size                        = 50
    system_disk_type                        = "CLOUD_PREMIUM"
    tags                                    = {}
    vpc_id                                  = "vpc-g3q13u9g"
}
然后,删除不可更改的配置,例如:id、public\u ip、instance\u status等

最后一个main.tf文件可能如下所示:

# tencentcloud_instance.ajaxhe_ins:
resource "tencentcloud_instance" "ajaxhe_ins" {
    allocate_public_ip                      = true
    availability_zone                       = "ap-hongkong-2"
    create_time                             = "2020-01-23T11:09:28Z"
    image_id                                = "img-31tjrtph"
    instance_charge_type                    = "PREPAID"
    instance_charge_type_prepaid_renew_flag = "NOTIFY_AND_MANUAL_RENEW"
    instance_name                           = "centos-1GB--2170"
    instance_status                         = "RUNNING"
    instance_type                           = "S2.SMALL1"
    internet_charge_type                    = "BANDWIDTH_PREPAID"
    internet_max_bandwidth_out              = 1
    private_ip                              = "172.18.1.0"
    project_id                              = 0
    running_flag                            = true
    security_groups                         = [
        "sg-lxlzf8fn",
    ]
    subnet_id                               = "subnet-3a05z4r3"
    system_disk_id                          = "disk-b0p7allu"
    system_disk_size                        = 50
    system_disk_type                        = "CLOUD_PREMIUM"
    tags                                    = {}
    vpc_id                                  = "vpc-g3q13u9g"
}