デフォルトVCNリソースの管理

リソース・マネージャおよびTerraform構成を使用して、デフォルトのVCNリソースを管理します。

oci_core_vcnリソースを作成すると、デフォルトで次の関連リソースも作成されます:

  • oci_core_security_list
  • oci_core_dhcp_options
  • oci_core_route_table

これらのデフォルト・リソースは、Terraform構成で指定されていない場合でも暗黙的に作成されます。そのOCIDは、oci_core_vcnリソースの次の属性によって返されます:

  • default_security_list_id
  • default_dhcp_options_id
  • default_route_table_id

デフォルト・リソースは、個別のリソース・タイプを使用してTerraformで構成する必要があります。デフォルト・リソースの構成に使用するリソースと新規リソース・タイプ間のマッピングを次に示します:

  • oci_core_security_list => oci_core_default_security_list
  • oci_core_dhcp_options => oci_core_default_dhcp_options
  • oci_core_route_table => oci_core_default_route_table

デフォルト・リソース・タイプは、デフォルト以外のリソース・タイプと同じ方法で構成されます。唯一の違いは、manage_default_resource_id引数を使用してデフォルト・リソースのIDを指定することです。

そのため、デフォルト・リソースでは、vcn_idが不要になりました。

次の例では、VCNのデフォルト・ルート表およびDHCPオプションを変更します:

resource "oci_core_vcn" "vcn1" {
  cidr_block = "10.0.0.0/16"
  dns_label = "vcn1"
  compartment_id = var.compartment_id
  display_name = "vcn1"
}

# Gateway
## Internet Gateway
resource "oci_core_internet_gateway" "inetGw" {
    compartment_id = var.compartment_id
    display_name   = "inetGw"
    vcn_id         = oci_core_vcn.vcn1.id
}

resource "oci_core_default_dhcp_options" "default-dhcp-options" {
  manage_default_resource_id = oci_core_vcn.vcn1.default_dhcp_options_id

  #Required
  options {
    type = "DomainNameServer"
    server_type = "VcnLocalPlusInternet"
  }
}

  #Optional
  options {
    type = "SearchDomain"
    search_domain_names = [ "abc.com" ]
  }
}

resource "oci_core_default_route_table" "default-route-table" {
  manage_default_resource_id = oci_core_vcn.vcn1.default_route_table_id

    #Required
    compartment_id = var.compartment_id

    #Optional
    display_name = "default_route_table"
    route_rules {

        #Required
        network_entity_id = oci_core_internet_gateway.inetGw.id

        #Optional
        destination = "0.0.0.0/0"
        destination_type = "CIDR_BLOCK"
    }
}

制限事項

デフォルト・リソースは、関連するoci_core_vcnリソースが削除された場合にのみ削除できます。デフォルト・リソースをターゲット指定して削除しようとすると、そのリソースはTerraform状態ファイルからは削除されますが、設定が空の状態でOCIに存在し続けます。

ターゲット指定した削除の例:

  • 以前に適用されたTerraform構成からのデフォルト・リソースの削除
  • terraform destroy -target=<default resource>コマンドの実行
  • 以前に適用されたデフォルト・リソースのmanage_default_resource_idの変更