【问题标题】:difference between data and import in terraformterraform中数据和导入之间的区别
【发布时间】:2017-06-14 08:50:41
【问题描述】:

您好,我是 Terraform 的初学者。

在使用它时,我对使用现有基础设施作为数据和使用导入命令有点困惑。因为我导入了现有的基础设施,我丢失了我的子网和密钥对,如果有人解释我们如何明智地使用它会很有帮助。提前致谢。

【问题讨论】:

    标签: cloud terraform


    【解决方案1】:

    Terraform 导入的当前实现只能导入资源进入状态。它不会生成配置。

    https://www.terraform.io/docs/import/index.html

    在导入资源时,您应该已经创建了配置,因此 terraform 不会破坏资源。s

    terraform import resource id

    terraform plan -out=tfplan.out

    该计划将输出它对资源所做的更改,黄色表示修改,绿色表示新建,红色表示销毁。

    -out=path - 保存生成的执行计划的路径。然后可以将此计划与 terraform apply 一起使用,以确保仅应用此计划中显示的更改。请阅读下面有关已保存计划的警告。

    https://www.terraform.io/docs/commands/plan.html#out-path

    terraform apply tfplan.out

    数据源返回有关资源的属性,例如,如果子网 id 是唯一已知的,则数据源可以提取有关它的其他信息,例如 VPC id。

    variable "subnet_id" {}
    
    data "aws_subnet" "selected" {
      id = "${var.subnet_id}"
    }
    
    resource "aws_security_group" "subnet" {
      vpc_id = "${data.aws_subnet.selected.vpc_id}"
    
      ingress {
        cidr_blocks = ["${data.aws_subnet.selected.cidr_block}"]
        from_port   = 80
        to_port     = 80
        protocol    = "tcp"
      }
    }
    

    此数据源的参数充当过滤器,用于查询当前区域中的可用子网。给定的过滤器必须完全匹配其数据将作为属性导出的一个子网。

    availability_zone -(可选)子网必须驻留的可用区。

    cidr_block - (可选)所需子网的 cidr 块。

    ipv6_cidr_block - (可选)所需子网的 Ipv6 cidr 块

    default_for_az - (可选)关于所需子网是否必须是其关联可用区的默认子网的布尔约束。

    filter - (可选)自定义过滤器块,如下所述。

    id -(可选)要检索的特定子网的 id。

    state -(可选)所需子网必须具有的状态。

    tags - (可选)标签的映射,每对必须与所需子网上的一对完全匹配。

    vpc_id - (可选)所需子网所属的 VPC 的 ID。

    https://www.terraform.io/docs/providers/aws/d/subnet.html

    【讨论】:

    • 嗨,兄弟,非常感谢您的解释,而且非常清楚。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2018-03-11
    • 2012-08-29
    • 2018-03-19
    • 2012-10-26
    • 2013-01-20
    • 2014-11-15
    相关资源
    最近更新 更多