了解OCI的地形

时间:2018-12-27 19:59:06

标签: terraform oracle-cloud-infrastructure

我在这里有3个问题:

我已经在Oracle Cloud Infrastructure中创建了Terraform表单脚本来构建实例和其他资源。但是我无法在网络脚本中获得用于路由表配置和服务的任何脚本。因此,我将它们设为手动。我当前的表只有资源名称,其余所有配置均为空白。因此,我需要帮助来获得OCI正确支持的脚本来创建带有配置的路由表。

由于我手动执行了这些操作,因此在脚本中进行了一些更改后,我无法再给terraform应用,因为terraform apply将删除我手动创建的所有规则。因此,每次更改脚本时都必须强制Terraform应用吗?还是我可以手动输入配置并同时在terraform脚本中进行匹配,以使所有内容保持完整?

在每次terraform更改后,我可以看到2个文件正在放大(terraform.tfstate,terraform.tfstate.backup)这两个文件是什么?如果那是备份文件,那么如果我搞砸了配置,它将如何帮助我恢复?

2 个答案:

答案 0 :(得分:0)

在Terraform中,配置脚本始终是事实的源头。当您应用配置时; Terraform将支持该配置的设置,并覆盖在Terraform之外手动完成的所有更改。

要确保您的手动更改不会被覆盖,请确保配置始终与手动更改匹配。将手动资源导入配置中的一种方法是使用“地形导入”(请参见https://www.terraform.io/docs/import/index.html)。

Terraform使用terraform.tfstate和terraform.tfstate.backup文件来跟踪Terraform创建的资源的最新状态。这些文件用于帮助Terraform确定您的配置脚本是否已偏离状态。因此它知道如何应用您的配置脚本。据我所知,如果您弄乱了配置,这些状态文件不打算用作备份文件。 (请参阅https://www.terraform.io/docs/state/index.html

希望这会有所帮助。

答案 1 :(得分:0)

以下是Terraform配置文件中路由表资源的示例:

resource "oci_core_route_table" "webserver-rt" {
    compartment_id = "${var.compartment_ocid}"
    vcn_id = "${oci_core_virtual_network.oci-vcn.id}"
    display_name = "webserver-rt"
    route_rules = [{
        destination = "0.0.0.0/0"
        network_entity_id = "${oci_core_internet_gateway.internet-gateway.id}"
    }]
}

您可以在此处找到更多详细信息:https://github.com/terraform-providers/terraform-provider-oci/blob/master/docs/examples/networking/route_table/route_table.tf