该模块提供了在Oracle云基础结构(OCI)中提供新的虚拟云网络(VCN)和其他可选服务所需的初始引导。
VCN是OCI网络的核心基础。该模块提供了创建以下资源的能力:
| 资源 | 默认情况下创建? |
|---|---|
| VCN | 否(可选) |
| 互联网网关 | 否(可选) |
| 纳特门户 | 否(可选) |
| 服务网关 | 否(可选) |
| 动态路由网关 | 否(可选) |
| 堡垒 | 否(可选) |
通过使用此模块,将创建一个基本的云网络,包括基本的基础通信路径(对于大多数用例,尽管不是全部)。对于需要VPN连接,FastConnect或VCN对等的情况,这些服务将需要在该模块部署的VCN顶部构建。
examples目录中提供了几个功能齐全的示例。有关每个示例特定的方向,请参阅每个示例目录中的README.md 。
为了快速开始,对于最低部署,您可以使用以下示例:
module "oci_network" {
source = "../../"
#source = "oracle-terraform-modules/default-vcn/oci"
default_compartment_id = "${var.compartment_id}"
}
这将使用模块默认设置部署VCN。查看此读数,以获取这些参数的详细说明。
该核心服务模块通常用于部署,无需进一步访问;如果要求将其作为解决方案的一部分,您可能需要访问堡垒。
您可以直接通过API直接使用Terraform(最佳),OCI CLI,OCI控制台(UI)来管理已部署的环境。
| 属性 | 数据类型 | 必需的 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|---|
| default_compartment_id | 细绳 | 是的 | 没有任何 | 隔间的绳子 | 这是创建对象时将使用的默认OCID(除非任何特定对象都覆盖)。这需要是预先存在的隔间(不会创建隔间)的动力。 |
| vcn_options | 地图 | 不 | 见下文 | 见下文 | 可用于自定义VCN的可选参数。 |
| 现有_vcn_id | 细绳 | 不 | 无效的 | 任何先前存在的VCN的动物 | 如果不创建新的VCN,则应在此处提供现有VCN的OCID。所有创建的资源将成为此预先存在的VCN的一部分(如果未提供VCN)。 |
请注意,随着VCN的创建,将默认资源(路由表,安全列表和DHCP选项)剩下(不以任何方式修改)。通常不使用这些资源。有关更多信息,请参见围绕默认资源,默认组件和默认安全列表。
vcn_options
vcn_options属性是可选的地图属性。请注意,如果使用此属性,则必须指定所有键/值(Terraform不允许使用默认或可选的MAP键/值)。它具有以下定义的密钥(和默认值):
| 钥匙 | 数据类型 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|
| display_name | 细绳 | “ VCN” | OCI API可以接受的任何名称。 | 用于定义VCN的特定名称。 |
| cancartment_id | 细绳 | 无效的 | 车厢室 | 预先存在的隔间OCID(如果不使用默认隔间)。如果此值为null,则将使用默认隔室OCID。 |
| 定义_tag | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何定义的标签,请使用此属性进行操作。 |
| freeform_tags | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何自由式标签,请使用此属性进行操作。 |
| cidr | 细绳 | “ 10.0.0.0/16” | IPv4 CIDR | 指定用于VCN的IPv4 CIDR。 |
| enable_dns | 布尔 | 真的 | 是/错误 | 是否应在VCN上启用DNS。 |
| DNS_LABEL | 细绳 | “ VCN” | 有效的DNS名称。 | 指定用于VCN的DNS标签。如果此值为null,则将禁用VCN的DNS。 |
例子
以下示例以10.0.0.0/24的CIDR创建VCN,模块测试的显示名称, testVCN的DNS标签,并使用默认式隔室ocID(上面的示例未显示)。
module "oci_network" {
... /snip - shortened for brevity...
vcn_options = {
display_name = "Module test"
cidr = "10.0.0.0/24"
enable_dns = true
dns_label = "testvcn"
compartment_id = null
defined_tags = null
freeform_tags = null
}
}
| 属性 | 数据类型 | 必需的 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|---|
| create_igw | 布尔 | 不 | 错误的 | 是/错误 | 是否应在VCN中创建IGW。 |
| IGW_Options | 地图 | 不 | 见下文 | 见下文 | 可用于自定义IGW的可选参数。 |
igw_options
igw_options属性是可选的地图属性。请注意,如果使用此属性,则必须指定所有键/值(Terraform不允许使用默认或可选的MAP键/值)。它具有以下定义的密钥(和默认值):
| 钥匙 | 数据类型 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|
| display_name | 细绳 | “ IGW” | OCI API可以接受的任何名称。 | 用于为您的IGW定义一个特定名称。 |
| cancartment_id | 细绳 | 无效的 | 车厢室 | 预先存在的隔间OCID(如果不使用默认隔间)。如果此值为null,则将使用默认隔室OCID。 |
| 定义_tag | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何定义的标签,请使用此属性进行操作。 |
| freeform_tags | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何自由式标签,请使用此属性进行操作。 |
| 启用 | 布尔 | 真的 | 是/错误 | 是否应启用IGW。 |
例子
module "oci_network" {
... /snip - shortened for brevity...
igw_options = {
display_name = "my_igw"
compartment_id = null
defined_tags = null
freeform_tags = null
enabled = false
}
}
上面的示例将在VCN中创建一个具有my_igw的显示名称的IGW(启用),并使用默认的隔间OCID(未显示上述示例中)。
| 属性 | 数据类型 | 必需的 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|---|
| create_natgw | 布尔 | 不 | 错误的 | 是/错误 | 是否应在VCN中创建NATGW。 |
| natgw_options | 地图 | 不 | 见下文 | 见下文 | 可用于自定义NATGW的可选参数。 |
natgw_options
natgw_options属性是可选的地图属性。请注意,如果使用此属性,则必须指定所有键/值(Terraform不允许使用默认或可选的MAP键/值)。它具有以下定义的密钥(和默认值):
| 钥匙 | 数据类型 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|
| display_name | 细绳 | “ natgw” | OCI API可以接受的任何名称。 | 用于为您的IGW定义一个特定名称。 |
| cancartment_id | 细绳 | 无效的 | 车厢室 | 预先存在的隔间OCID(如果不使用默认隔间)。如果此值为null,则将使用默认隔室OCID。 |
| 定义_tag | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何定义的标签,请使用此属性进行操作。 |
| freeform_tags | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何自由式标签,请使用此属性进行操作。 |
| block_traffic | 布尔 | 错误的 | 是/错误 | NATGW是否应阻止流量。 |
例子
module "oci_network" {
... /snip - shortened for brevity...
natgw_options = {
display_name = "my_natgw"
compartment_id = null
defined_tags = null
freeform_tags = null
block_traffic = false
}
}
上面的示例将在VCN中使用MY_NATGW的显示名称创建一个NATGW,它将不会阻止流量,并且将使用默认的隔间OCID(上面的示例未显示)。
| 属性 | 数据类型 | 必需的 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|---|
| create_svcgw | 布尔 | 不 | 错误的 | 是/错误 | 是否应在VCN中创建SVCGW。 |
| svcgw_options | 地图 | 不 | 见下文 | 见下文 | 可用于自定义SVCGW的可选参数。 |
svcgw_options
svcgw_options属性是可选的地图属性。请注意,如果使用此属性,则必须指定所有键/值(Terraform不允许使用默认或可选的MAP键/值)。它具有以下定义的密钥(和默认值):
| 钥匙 | 数据类型 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|
| display_name | 细绳 | “ SVCGW” | OCI API可以接受的任何名称。 | 用于为您的SVCGW定义一个特定名称。 |
| cancartment_id | 细绳 | 无效的 | 车厢室 | 预先存在的隔间OCID(如果不使用默认隔间)。如果此值为null,则将使用默认隔室OCID。 |
| 定义_tag | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何定义的标签,请使用此属性进行操作。 |
| freeform_tags | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何自由式标签,请使用此属性进行操作。 |
| 服务 | 列表(字符串) | 无效的 | 任何有效的OCI服务网关服务的OCID。 | 提供服务网关应允许的服务。将svcgw_services模块输出用于该区域中的服务列表(有关此的示例,请参见下文)。 |
例子
module "oci_network" {
... /snip - shortened for brevity...
svcgw_options = {
display_name = "my_svcgw"
compartment_id = null
defined_tags = null
freeform_tags = null
services = [
module.oci_network.svcgw_services.0.id
]
}
}
上面的示例将在VCN中使用MY_SVCGW的显示名称创建一个SVCGW,使用默认隔室OCID(未在上面的示例中显示),并将在该地区可用的服务列表中使用第一个服务。
| 属性 | 数据类型 | 必需的 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|---|
| create_drg | 布尔 | 不 | 错误的 | 是/错误 | 是否应在VCN中创建DRG。 |
| drg_options | 地图 | 不 | 见下文 | 见下文 | 可用于自定义DRG的可选参数。 |
drg_options
drg_options属性是可选的地图属性。请注意,如果使用此属性,则必须指定所有键/值(Terraform不允许使用默认或可选的MAP键/值)。它具有以下定义的密钥(和默认值):
| 钥匙 | 数据类型 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|
| display_name | 细绳 | “ drg” | OCI API可以接受的任何名称。 | 用于定义DRG的特定名称。 |
| cancartment_id | 细绳 | 无效的 | 车厢室 | 预先存在的隔间OCID(如果不使用默认隔间)。如果此值为null,则将使用默认隔室OCID。 |
| 定义_tag | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何定义的标签,请使用此属性进行操作。 |
| freeform_tags | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何自由式标签,请使用此属性进行操作。 |
| Route_table_id | 细绳 | 无效的 | 任何有效的,预先存在的OCI路由表的OCID。 | 这是可选的,但是如果需要路由表关联(与DRG),则是建立该关联的地方。 |
例子
module "oci_network" {
... /snip - shortened for brevity...
drg_options = {
display_name = "my_drg"
compartment_id = null
defined_tags = null
freeform_tags = null
route_table_id = null
}
}
上面的示例将在VCN中使用MY_DRG的显示名称创建一个SVCGW,使用默认隔室ocID(未在上面的示例中显示),并且不会将任何路由表与DRG相关联。
route_tables属性是可选的地图属性。请注意,如果使用此属性,则必须指定所有键/值(Terraform不允许使用默认或可选的MAP键/值)。键指示路由表的显示名称,而该值是定义属性的映射。该值是具有以下定义键(和默认值)的地图:
| 钥匙 | 数据类型 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|
| cancartment_id | 细绳 | 无效的 | 车厢室 | 预先存在的隔间OCID(如果不使用默认隔间)。如果此值为null,则将使用默认隔室OCID。 |
| 定义_tag | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何定义的标签,请使用此属性进行操作。 |
| freeform_tags | 地图(字符串) | {} | OCI API可以接受的标签名称和值的任何图。 | 如果应该在此资源上设置任何自由式标签,请使用此属性进行操作。 |
| Route_rules | 列表(对象) - 见下文 | {} | 见下文 | 这是可选的,但是配置路线规则的地方。 |
route_rules
| 钥匙 | 数据类型 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|
| next_hop_id | 细绳 | 没有任何 | 下一个啤酒花资源 | 这是指定下一跳的地方。 |
| dst_type | 细绳 | 没有任何 | cidr_block , service_cidr_block | 指定在DST属性中给出哪种目的地。 |
| DST | 细绳 | 没有任何 | 有效的OCI目的地(CIDR或服务CIDR)。 | 指定用于此路由规则的目标(远程网络)。 |
例子
module "oci_network" {
... /snip - shortened for brevity...
route_tables = {
rt1 = {
display_name = "my_drg"
compartment_id = null
defined_tags = null
freeform_tags = null
route_rules = [
{
dst = "0.0.0.0/0"
dst_type = "CIDR_BLOCK"
next_hop_id = local.next_hop_ids["igw"]
}
]
}
}
}
上面的示例将使用默认隔室OCID(未显示在示例中显示),在VCN中使用RT1的显示名称创建一个路由表,其中包含一个路由规则(将默认路由指向Internet网关)。
dhcp_options属性是可选的地图属性。请注意,如果使用此属性,则必须指定所有键/值(Terraform不允许使用默认或可选的MAP键/值)。键指示路由表的显示名称,而该值是定义属性的映射。该值是具有以下定义键(和默认值)的地图:
| 钥匙 | 数据类型 | 默认值 | 有效值 | 描述 |
|---|---|---|---|---|
| cancartment_id | 细绳 | 无效的 | 车厢室 | 预先存在的隔间OCID(如果不使用默认隔间)。如果此值为null,则将使用默认隔室OCID。 |
| server_type | 细绳 | “ vcnlocalplusinternet” | vcnlocalplusinternet , customdnsserver | OCI API允许的值之一。 |
| search_domain_name | 细绳 | “ $ {oci_core_vcn.this.dns_label} .oraclevcn.com”如果local.vcn_with_dns设置了 | 提供有效的DNS名称要使用。 | 这将作为要搜索的域。 |
| throcker_1_ip | 细绳 | 无效的 | 任何有效的IP地址 | 指定自定义DNS服务器时使用此方法。 |
| throcker_2_ip | 细绳 | 无效的 | 任何有效的IP地址 | 指定自定义DNS服务器时使用此方法。 |
| throcker_3_ip | 细绳 | 无效的 | 任何有效的IP地址 | 指定自定义DNS服务器时使用此方法。 |
例子
module "oci_network" {
... /snip - shortened for brevity...
dhcp_options = {
custom = {
compartment_id = null
server_type = local.dhcp_option_types["custom"]
forwarder_1_ip = "10.0.0.11"
forwarder_2_ip = "10.0.2.11"
forwarder_3_ip = null
search_domain_name = "test.local"
}
vcn = {
compartment_id = null
server_type = local.dhcp_option_types["vcn"]
forwarder_1_ip = null
forwarder_2_ip = null
forwarder_3_ip = null
search_domain_name = null
}
}
}
上面的示例将创建两个DHCP选项,一个名为Custom ,它使用两个IP地址,并引用自定义DHCP选项类型。 VCN DHCP选项非常基本,只是表明它应该使用vcnlocalplusinternet和名称VCN 。
该模块创建的每个离散资源都将被导出,从而允许访问资源的所有返回属性。
| 资源 | 总是回来? | 描述 |
|---|---|---|
| 广告 | 是的 | 您正在工作的区域的可用广告列表。 |
| VCN | 不* | 模块创建的VCN资源。 |
| IGW | 不* | 由模块创建的IGW资源(如果要求/创建)。 |
| natgw | 不* | 由模块创建的NATGW资源(如果要求/创建)。 |
| svcgw | 不* | 由模块创建的SVCGW资源(如果要求/创建)。 |
| svcgw_services | 是的 | 可用的服务。 |
| drg | 不* | 由模块创建的DRG和DRGATTACH资源(如果要求/创建)。请注意,DRG可通过DRG.DRG访问,并通过DRG.DRG_ATTACHMENT访问DRGATTACH。 |
| Route_tables | 不* | 由模块创建/管理的路由表(如果要求/创建)。返回地图,其中键是路由表的名称,该值是所有资源属性的完整列表。 |
| DHCP_OPTIONS | 不* | 由模块创建/管理的DHCP选项(如果要求/创建)。返回地图,其中键是DHCP选项的名称,该值是所有资源属性的完整列表。 |
*仅在要求创建资源时返回。
请注意,您仍然可以在不造成Terraform错误的情况下引用输出(即使未返回)(即使它们不返回)(必须足够聪明才能知道在这些情况下不要丢失错误)。
vcn_options , igw_options等)中提供任何单个元素,则必须提供所有元素。地图中没有一个可选的键(或默认值)的概念,要求将所有键/值传递(如果传递一个键,则必须传递所有键)。terraform destroy ,然后terraform apply (而不是依靠terraform apply来正确处理事物): Error: Cycle: module.oci_network.oci_core_nat_gateway.this[0], module.oci_network.output.natgw, module.oci_network.oci_core_service_gateway.this[0], module.oci_network.output.svcgw, module.oci_network.oci_core_service_gateway.this[0] (destroy), module.oci_network.oci_core_nat_gateway.this[0] (destroy), module.oci_network.oci_core_vcn.this[0] (destroy), module.oci_network.oci_core_drg_attachment.this[0], module.oci_network.oci_core_route_table.this[1] (destroy), module.oci_network.oci_core_drg_attachment.this[0] (destroy), module.oci_network.output.drg, local.next_hop_ids, module.oci_network.var.route_tables, module.oci_network.oci_core_route_table.this (prepare state), module.oci_network.oci_core_route_table.this[0] (destroy), module.oci_network.oci_core_internet_gateway.this[0] (destroy), module.oci_network.oci_core_internet_gateway.this[0], module.oci_network.output.igw
有关发行说明信息,请参见发行说明。
该模块是通过Macos Mojave版本10.14.5上的Terraform开发和测试的。
user-mac$ terraform --version
Terraform v0.12.3
+ provider.oci v3.31.0
该项目是开源的。 Oracle感谢开源社区所做的任何贡献。
版权(C)2020 Oracle和/或其分支机构。
如https://oss.oracle.com/licenses/upl所示,根据通用允许许可证v 1.0许可。
有关更多详细信息,请参见许可证。