이 모듈은 OCI (Oracle Cloud Infrastructure)에서 새로운 가상 클라우드 네트워크 (VCN) 및 기타 옵션 서비스를 제공하는 데 필요한 초기 부트 스트랩을 제공합니다.
VCN은 OCI의 네트워크의 핵심 기초입니다. 이 모듈은 다음 리소스를 만들 수있는 기능을 제공합니다.
| 의지 | 기본적으로 생성 되었습니까? |
|---|---|
| VCN | 아니요 (선택 사항) |
| 인터넷 게이트웨이 | 아니요 (선택 사항) |
| Nat 게이트웨이 | 아니요 (선택 사항) |
| 서비스 게이트웨이 | 아니요 (선택 사항) |
| 동적 라우팅 게이트웨이 | 아니요 (선택 사항) |
| 능보 | 아니요 (선택 사항) |
이 모듈을 사용하면 기본 기초 통신 경로를 포함한 기본 클라우드 네트워크가 생성됩니다 (대부분의 사용 케이스의 경우). VPN-Connect, FastConnect 또는 VCN 피어링이 필요한 상황의 경우이 서비스를이 모듈에서 배포 한 VCN 위에 구축해야합니다.
examples 디렉토리에 몇 가지 완벽한 예제가 제공되었습니다. 각 예제와 관련된 방향은 각 예제 디렉토리의 README.md 참조하십시오.
신속하게 시작하려면 최소 배포를 위해 다음 예를 사용할 수 있습니다.
module "oci_network" {
source = "../../"
#source = "oracle-terraform-modules/default-vcn/oci"
default_compartment_id = "${var.compartment_id}"
}
모듈 기본값을 사용하여 VCN을 배포합니다. 이 매개 변수에 대한 자세한 설명은이 readme를 검토하십시오.
이 핵심 서비스 모듈은 일반적으로 배치에서 사용되며 더 이상 액세스 할 필요가 없습니다. 솔루션의 일부로 작성되도록 요청 된 경우 요새에 액세스해야 할 수도 있습니다.
Terraform (Best), OCI CLI, OCI 콘솔 (UI), API를 통해 직접 배치 된 환경을 계속 관리 할 수 있습니다.
| 기인하다 | 데이터 유형 | 필수의 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|---|
| default_compartment_id | 끈 | 예 | 없음 | 구획의 문자열 ocid | 이것은 객체를 만들 때 사용될 기본 OCID입니다 (특정 객체에 대해 재정의하지 않는 한). 이것은 기존 구획의 OCID 여야합니다 (구획을 생성하지 않음). |
| vcn_options | 지도 | 아니요 | 아래를 참조하십시오 | 아래를 참조하십시오 | VCN을 사용자 정의하는 데 사용할 수있는 선택적 매개 변수입니다. |
| 기존_VCN_ID | 끈 | 아니요 | 널 | 기존 VCN의 OCID | 새로운 VCN을 만들지 않으면 기존 VCN의 OCID가 여기에 제공되어야합니다. 생성 된 모든 리소스는이 기존 VCN의 일부가 될 것입니다 (VCN이 제공되지 않은 경우). |
VCN이 생성되면 기본 리소스 (Route Table, Security List 및 DHCP 옵션)가 그대로 남아 있습니다 (어떠한 방식으로도 수정되지 않음). 종종 이러한 리소스는 사용되지 않습니다. 자세한 내용은 기본 리소스, VCN과 함께 제공되는 기본 구성 요소 및 기본 보안 목록에 대한 문서를 참조하십시오.
vcn_options
vcn_options 속성은 선택적 맵 속성입니다. 이 속성을 사용하는 경우 모든 키/값을 지정해야합니다 (Terraform은 기본 또는 선택적 맵 키/값을 허용하지 않습니다). 다음과 같은 정의 된 키 (및 기본값)가 있습니다.
| 열쇠 | 데이터 유형 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|
| display_name | 끈 | "VCN" | OCI API에 허용되는 이름. | VCN의 특정 이름을 정의하는 데 사용됩니다. |
| compartment_id | 끈 | 널 | 구획 Ocid | 기존 구획 OCID (기본 구획을 사용하지 않는 경우). 이 값이 NULL 인 경우 기본 구획 OCID가 사용됩니다. |
| defined_tags | 지도 (문자열) | {} | 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가 비활성화됩니다. |
예
다음 예제는 CIDR이 10.0.0.0/24, 모듈 테스트 의 표시 이름, TestVCN 의 DNS 레이블로 VCN을 생성하고 기본 구획 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은 기본 또는 선택적 맵 키/값을 허용하지 않습니다). 다음과 같은 정의 된 키 (및 기본값)가 있습니다.
| 열쇠 | 데이터 유형 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|
| display_name | 끈 | "IGW" | OCI API에 허용되는 이름. | IGW의 특정 이름을 정의하는 데 사용됩니다. |
| compartment_id | 끈 | 널 | 구획 Ocid | 기존 구획 OCID (기본 구획을 사용하지 않는 경우). 이 값이 NULL 인 경우 기본 구획 OCID가 사용됩니다. |
| defined_tags | 지도 (문자열) | {} | 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
}
}
위의 예는 my_igw 의 표시 이름이있는 VCN에 IGW (활성화)를 생성하고 기본 구획 OCID (위의 예에 표시되지 않음)를 사용합니다.
| 기인하다 | 데이터 유형 | 필수의 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|---|
| create_natgw | 부 | 아니요 | 거짓 | 참/거짓 | NATGW가 VCN에서 생성되어야하는지 여부. |
| natgw_options | 지도 | 아니요 | 아래를 참조하십시오 | 아래를 참조하십시오 | NATGW를 사용자 정의하는 데 사용할 수있는 옵션 매개 변수입니다. |
natgw_options
natgw_options 속성은 선택적 맵 속성입니다. 이 속성을 사용하는 경우 모든 키/값을 지정해야합니다 (Terraform은 기본 또는 선택적 맵 키/값을 허용하지 않습니다). 다음과 같은 정의 된 키 (및 기본값)가 있습니다.
| 열쇠 | 데이터 유형 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|
| display_name | 끈 | "NATGW" | OCI API에 허용되는 이름. | IGW의 특정 이름을 정의하는 데 사용됩니다. |
| compartment_id | 끈 | 널 | 구획 Ocid | 기존 구획 OCID (기본 구획을 사용하지 않는 경우). 이 값이 NULL 인 경우 기본 구획 OCID가 사용됩니다. |
| defined_tags | 지도 (문자열) | {} | 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
}
}
위의 예제는 My_NATGW 의 표시 이름이있는 VCN에서 NATGW를 생성합니다. 트래픽을 차단하지 않으며 기본 구획 OCID를 사용합니다 (위의 예에 표시되지 않음).
| 기인하다 | 데이터 유형 | 필수의 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|---|
| Create_svcgw | 부 | 아니요 | 거짓 | 참/거짓 | SVCGW가 VCN에서 생성되어야하는지 여부. |
| svcgw_options | 지도 | 아니요 | 아래를 참조하십시오 | 아래를 참조하십시오 | SVCGW를 사용자 정의하는 데 사용할 수있는 선택적 매개 변수입니다. |
svcgw_options
svcgw_options 속성은 선택적 맵 속성입니다. 이 속성을 사용하는 경우 모든 키/값을 지정해야합니다 (Terraform은 기본 또는 선택적 맵 키/값을 허용하지 않습니다). 다음과 같은 정의 된 키 (및 기본값)가 있습니다.
| 열쇠 | 데이터 유형 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|
| display_name | 끈 | "SVCGW" | OCI API에 허용되는 이름. | SVCGW의 특정 이름을 정의하는 데 사용됩니다. |
| compartment_id | 끈 | 널 | 구획 Ocid | 기존 구획 OCID (기본 구획을 사용하지 않는 경우). 이 값이 NULL 인 경우 기본 구획 OCID가 사용됩니다. |
| defined_tags | 지도 (문자열) | {} | OCI API에 허용되는 태그 이름 및 값의 맵. | 정의 된 태그 가이 리소스에 설정되어야하는 경우이 속성으로 그렇게하십시오. |
| freeform_tags | 지도 (문자열) | {} | OCI API에 허용되는 태그 이름 및 값의 맵. | 이 리소스에서 프리폼 태그를 설정 해야하는 경우이 속성으로 수행하십시오. |
| 서비스 | List (String) | 널 | 유효한 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
]
}
}
위의 예는 My_SVCGW 의 표시 이름이있는 VCN에서 SVCGW를 생성하고 (위의 예에 표시되지 않음) 기본 구획 OCID를 사용하고 해당 지역에서 사용 가능한 서비스 목록에서 첫 번째 서비스를 사용합니다.
| 기인하다 | 데이터 유형 | 필수의 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|---|
| Create_drg | 부 | 아니요 | 거짓 | 참/거짓 | VCN에서 DRG를 생성 해야하는지 여부. |
| drg_options | 지도 | 아니요 | 아래를 참조하십시오 | 아래를 참조하십시오 | DRG를 사용자 정의하는 데 사용할 수있는 선택적 매개 변수입니다. |
drg_options
drg_options 속성은 선택적 맵 속성입니다. 이 속성을 사용하는 경우 모든 키/값을 지정해야합니다 (Terraform은 기본 또는 선택적 맵 키/값을 허용하지 않습니다). 다음과 같은 정의 된 키 (및 기본값)가 있습니다.
| 열쇠 | 데이터 유형 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|
| display_name | 끈 | "DRG" | OCI API에 허용되는 이름. | DRG의 특정 이름을 정의하는 데 사용됩니다. |
| compartment_id | 끈 | 널 | 구획 Ocid | 기존 구획 OCID (기본 구획을 사용하지 않는 경우). 이 값이 NULL 인 경우 기본 구획 OCID가 사용됩니다. |
| defined_tags | 지도 (문자열) | {} | OCI API에 허용되는 태그 이름 및 값의 맵. | 정의 된 태그 가이 리소스에 설정되어야하는 경우이 속성으로 그렇게하십시오. |
| freeform_tags | 지도 (문자열) | {} | OCI API에 허용되는 태그 이름 및 값의 맵. | 이 리소스에서 프리폼 태그를 설정 해야하는 경우이 속성으로 수행하십시오. |
| route_table_id | 끈 | 널 | 유효하고 기존 OCI 경로 테이블의 OCID. | 이것은 선택 사항이지만 Route Table Association이 원하는 경우 (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
}
}
위의 예는 My_DRG 의 표시 이름이있는 VCN에서 SVCGW를 생성하고 기본 구획 OCID를 사용하고 (위의 예에 표시되지 않음) 경로 테이블을 DRG와 연결하지 않습니다.
route_tables 속성은 선택적 맵 속성입니다. 이 속성을 사용하는 경우 모든 키/값을 지정해야합니다 (Terraform은 기본 또는 선택적 맵 키/값을 허용하지 않습니다). 키는 경로 테이블의 디스플레이 이름을 나타내고 값은 속성을 정의하는 맵입니다. 값은 다음과 같은 정의 된 키 (및 기본값)가있는 맵입니다.
| 열쇠 | 데이터 유형 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|
| compartment_id | 끈 | 널 | 구획 Ocid | 기존 구획 OCID (기본 구획을 사용하지 않는 경우). 이 값이 NULL 인 경우 기본 구획 OCID가 사용됩니다. |
| defined_tags | 지도 (문자열) | {} | OCI API에 허용되는 태그 이름 및 값의 맵. | 정의 된 태그 가이 리소스에 설정되어야하는 경우이 속성으로 그렇게하십시오. |
| freeform_tags | 지도 (문자열) | {} | OCI API에 허용되는 태그 이름 및 값의 맵. | 이 리소스에서 프리폼 태그를 설정 해야하는 경우이 속성으로 수행하십시오. |
| route_rules | List (Object) - 아래를 참조하십시오 | {} | 아래를 참조하십시오 | 이것은 선택 사항이지만 경로 규칙이 구성되는 장소입니다. |
route_rules
| 열쇠 | 데이터 유형 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|
| next_hop_id | 끈 | 없음 | 다음 홉 리소스의 OCID | 다음 홉이 지정된 곳입니다. |
| 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 (위의 예에 표시되지 않음)를 사용하여 RT1 의 표시 이름이있는 VCN에 라우팅 테이블을 생성하며, 하나의 경로 규칙 (기본 경로를 인터넷 게이트웨이로 향함)을 포함합니다.
dhcp_options 속성은 선택적 맵 속성입니다. 이 속성을 사용하는 경우 모든 키/값을 지정해야합니다 (Terraform은 기본 또는 선택적 맵 키/값을 허용하지 않습니다). 키는 경로 테이블의 디스플레이 이름을 나타내고 값은 속성을 정의하는 맵입니다. 값은 다음과 같은 정의 된 키 (및 기본값)가있는 맵입니다.
| 열쇠 | 데이터 유형 | 기본값 | 유효한 값 | 설명 |
|---|---|---|---|---|
| compartment_id | 끈 | 널 | 구획 Ocid | 기존 구획 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가 설정되어 있다면 그렇지 않으면 null | 사용할 유효한 DNS 이름을 제공하십시오. | 이것은 검색 할 도메인으로 주어집니다. |
| Forder_1_IP | 끈 | 널 | 유효한 IP 주소 | 사용자 정의 DNS 서버가 지정 될 때 사용됩니다. |
| Forder_2_IP | 끈 | 널 | 유효한 IP 주소 | 사용자 정의 DNS 서버가 지정 될 때 사용됩니다. |
| Forder_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 이라는 이름의 두 가지 DHCP 옵션을 만들며, 이는 두 개의 IP 주소가 사용되며 사용자 정의 DHCP 옵션 유형을 참조합니다. VCN DHCP 옵션은 vcnlocalplusinternet과 VCN 이라는 이름을 사용해야한다는 것을 나타냅니다.
모듈에 의해 생성 된 각 개별 리소스는 내보내므로 리소스에 대한 모든 반환 된 속성에 액세스 할 수 있습니다.
| 의지 | 항상 반환 되었습니까? | 설명 |
|---|---|---|
| 광고 | 예 | 일하는 지역에 사용 가능한 광고 목록. |
| VCN | 아니요* | 모듈에 의해 생성 된 VCN 리소스. |
| IGW | 아니요* | 모듈에 의해 생성 된 IGW 리소스 (요청/생성 된 경우). |
| NATGW | 아니요* | 모듈에 의해 생성 된 NATGW 리소스 (요청/생성 된 경우). |
| SVCGW | 아니요* | 모듈에 의해 생성 된 SVCGW 리소스 (요청/생성 된 경우). |
| svcgw_services | 예 | 사용할 수있는 서비스. |
| DRG | 아니요* | DRG 및 DRGATTACHMENT 리소스 (요청/생성 된 경우). DRG는 DRG.DRG를 통해 액세스 할 수 있으며 DRG.DRG_ATTACHMENT를 통해 DRGATTACHMENT를 통해 액세스 할 수 있습니다. |
| route_tables | 아니요* | 모듈에 의해 생성/관리되는 경로 테이블 (요청/생성 된 경우). 키는 경로 테이블의 이름이고 값은 모든 리소스 속성의 전체 목록입니다. |
| dhcp_options | 아니요* | 모듈에서 생성/관리하는 DHCP 옵션 (요청/생성 된 경우). 키는 DHCP 옵션의 이름이고 값은 모든 리소스 속성의 전체 목록입니다. |
*리소스가 생성되도록 요청 된 경우에만 반환되었습니다.
Terraform에서 오류를 일으키지 않고 출력을 참조 할 수 있습니다 (이 경우 오류를 던지지 않도록 충분히 똑똑해야 함).
vcn_options , igw_options 등)에 단일 요소를 제공하는 경우 모든 것을 제공해야합니다. 맵에는 맵 내의 키에 대한 선택적 (또는 기본값)이라는 개념이 없으므로 모든 키/값을 전달해야합니다 (하나의 키가 전달되면 모든 키를 전달해야 함).terraform destroy 사용하면 terraform apply 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에 표시된 Universal Permissive License V 1.0에 따라 라이센스가 부여됩니다.
자세한 내용은 라이센스를 참조하십시오.