該模塊提供了在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許可。
有關更多詳細信息,請參見許可證。