-1

我在这里有3个问题:

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

由于我手动执行此类操作,因此在对脚本进行一些更改后,我无法提供 terraform apply,因为 terraform apply 将删除我手动创建的所有规则。那么每次我更改脚本时都必须强制应用 terraform 吗?或者我可以手动输入配置并同时匹配 terraform 脚本中的配置,以便一切都完好无损?

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

4

2 回答 2

0

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

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

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

希望这可以帮助。

于 2019-01-02T21:50:49.550 回答
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

于 2019-01-29T12:10:56.690 回答