我在这里有3个问题:
我已经在Oracle Cloud Infrastructure中创建了Terraform表单脚本来构建实例和其他资源。但是我无法在网络脚本中获得用于路由表配置和服务的任何脚本。因此,我将它们设为手动。我当前的表只有资源名称,其余所有配置均为空白。因此,我需要帮助来获得OCI正确支持的脚本来创建带有配置的路由表。
由于我手动执行了这些操作,因此在脚本中进行了一些更改后,我无法再给terraform应用,因为terraform apply将删除我手动创建的所有规则。因此,每次更改脚本时都必须强制Terraform应用吗?还是我可以手动输入配置并同时在terraform脚本中进行匹配,以使所有内容保持完整?
在每次terraform更改后,我可以看到2个文件正在放大(terraform.tfstate,terraform.tfstate.backup)这两个文件是什么?如果那是备份文件,那么如果我搞砸了配置,它将如何帮助我恢复?
答案 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