ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
TerraformでOCI Architect Professional認定を促進するためのプライベートDNSゾーン、ビューおよびリゾルバの構成
イントロダクション
Oracle Cloud Infrastructure (OCI) Architect Professional認定資格を取得するには、Oracle Cloudおよびハンズオン・エクスペリエンスを深く理解する必要があります。このチュートリアル・シリーズでは、Infrastructure as Code (IaC)をTerraformおよびAnsibleとともに使用して、移行を加速します。
図1は、OCI Architect Professional認定ラボ2: Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m)用にデプロイするアーキテクチャを示しています。
図1: プライベートDNSドメイン名を作成するためのローカル・ピアリング・ゲートウェイ(LPG)エンドポイント
プライベートDNSの主な利点
プライベートDNSには、OCIリソースを管理および保護するためのいくつかの利点があります。これには、次のものが含まれます。
- 組織:直感的で整理された操作性のために、優先ドメイン名を使用します。
- セキュリティ:特定のドメインへのアクセスをフィルタリングおよびブロックすることで、機密リソースを保護します。
- ロード・バランシング:複数のサーバーにトラフィックを分散し、パフォーマンスと信頼性を向上させます。
- ハイブリッド環境と接続性: VCNs内およびVCNs間のクラウド内およびオンプレミス・ネットワークとOCIリソース間のシームレスな通信を促進します。
OCIのプライベートDNSを活用して、カスタム・ドメインを管理し、ネットワーク全体でリソースを接続する方法について詳しく説明します。プライベート・ゾーンの作成、レコードの定義、内部使用のためのリゾルバの構成について学習します。これにより、OCI内のリソース・アクセスをきめ細かく制御できます。
7つのタスクにおける半自動化アプローチ
このチュートリアルでは、プライベートDNS解決を使用して、OCIのスケーラブルでマルチVCN環境を自動化する方法について説明します。OCIコンソール、TerraformおよびAnsibleを使用して、2つのVCNsを作成し、それらの間にローカル・ピアリング・ゲートウェイ(LPG)を確立し、仮想マシン(VM)インスタンスを起動し、カスタム・プライベートDNSゾーンを構成し、VCNリゾルバの設定前後にDNS解決を完全にテストします。最終的には、ネットワーク全体でプライベートDNS機能を備えた、完全に機能するマルチVCN環境を使用できます。
目的
これは、OCI Architect Professional認定(2024)の準備を加速するために、チュートリアル1: Lab 1: Accelerate Oracle Cloud Infrastructure Architect Professional Certification with Terraformに続くシリーズの2番目のチュートリアルです。TerraformおよびAnsibleでIaCの原則を活用し、試験に関連するDNSのコア概念に焦点を当てています。認定資格のハンズオン・ラボ: ラボ2: Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m)は包括的ですが、ラボ2には時間がかかり、手動で完了するまでに30分以上かかる場合があります。VCNs、パブリック・サブネット、プライベート・サブネット、LPG、VMの作成などのルーチン・タスクを自動化することで、チュートリアル1: TerraformによるOracle Cloud Infrastructure Architect Professional認定の促進で示されているように、完了時間を80%以上大幅に短縮し、OCI DNSのコア概念のマスタリングに集中できます。
前提条件
-
IaCの原則、Terraform、AnsibleおよびOracle Cloud Infrastructure OCIコマンドライン・インタフェース(OCI CLI)に精通しています。
-
Terraformモジュールを使用したOCIインフラストラクチャのプロビジョニングの理解。詳細は、Reuse Configuration with Modulesを参照してください。
-
OCI Cloud Shell、Oracle Resource Manager (ORM)またはIDE (Visual Studioなど)の使用。
-
最後のラボであるOCI Architect Professional認定を完了し、ORMを使用したVCN Terraform構成の作成方法について学習します。
タスク1: 2つのVirtual Cloudネットワークの作成
手動オプション:
VCNsは、OCIコンソールを使用して手動で作成できます。この手動作成を示すには、is_vcn1_created
およびis_vcn2_created
フラグをfalse
に初期化する必要があります。
VCN、インターネット・ゲートウェイ、ルート表、セキュリティ・リスト、パブリック・サブネットおよびプライベート・サブネットなどのコア・ネットワーキング・リソースを作成するには、仮想ネットワーキングのクイックスタートを参照してください。
図2: VCN-01/VCN-02 OCIDsおよびVCN-01パブリック・サブネットOCIDを収集するためのコンソール・ビュー
OCIコンソールに移動し、「ネットワーキング」、「Virtual Cloudネットワーク」に移動し、VCN-01の詳細を表示し、そのOCIDとそのパブリック・サブネットのOCIDをメモします。VCN-02についても同じことを行い、そのOCIDsを書き留めて、収集されたOCIDsをTerraform構成ファイル(input.auto.tfvars
またはvariables.tf
)に追加します。
# Create VCN-01 and VCN-02 with OCI VCN Wizard (set is_vcn1_created and is_vcn2_created to false)
is_vcn1_created = false
is_vcn2_created = false
# Update VCN-01 OCID and its Public Subnet OCID, as well as VCN-02 OCID
vcn1_id = "REPLACE_CREATED_VCN1_OCID_HERE"
public_subnet1_id = "REPLACE_CREATED_PUBLIC_SUBNET1_OCID_HERE"
vcn2_id = "REPLACE_CREATED_VCN2_OCID_HERE"
自動オプション:
また、VCNを作成するための2つの自動化オプション(VCN-01
およびVCN-02
): ルート・モジュール・アプローチと子モジュール・アプローチも提供します。1つ目は、開発とテスト、または1回かぎりのVCNsデプロイメントに適しています。2つ目は、大規模で複雑なデプロイメントのためのより優れた組織とスケーラビリティを提供し、コードの再利用性とメンテナンス性を促進することで、本番環境に最適です。
TerraformにVCNsを作成するように指示するには、まず、input.auto.tfvars
でis_vcn1_created
フラグとis_vcn2_created
フラグの両方をtrue
に設定するか、variables.tf
でデフォルト値に設定する必要があります。次に、VCN CIDRブロック(vcn?_cidr_block
)、パブリック・サブネットCIDRブロック(public_subnet?_cidr_block
)、プライベート・サブネットCIDRブロック(private_subnet?_cidr_block
)およびホスト名接頭辞(host_name?_prefix
)を指定します。変数名は、プレースホルダとして疑問符(?
)を使用して抽象化されます。?
を1または2に置き換えることで、VCN-01とVCN-02にそれぞれ別々の構成を定義します。
また、特定の変数の値(oci_regions
(キーへのリージョン識別子のマッピング)、network_deployment_option
(TF-ROOT-MODULE
またはTF-CHILD-MODULE
)およびdipslay_name_prefix
(AP-Lab-02-1
など)も定義する必要があります。最後のVCN表示名には、包括的な名前を生成するためのnetwork_deployment_option
値が含まれます(たとえば、PHX-AP-LAB02-1-TF-ROOT-MODULE-VCN-01
)。
-
アプローチ1: Terraformルート・モジュール
このアプローチでは、Terraform構成が簡略化されています。チュートリアル1: Terraformを使用したOracle Cloud Infrastructure Architect Professional認定の高速化の
network.tf
ファイルを、ルート・モジュール内のlab02-demo-flat/
という名前のサブディレクトリに複製しました。このディレクトリでは、2つの個別のファイルnetwork1.tf
およびnetwork2.tf
を使用して、テストと理解を容易にするためにVCN-01およびVCN-02の作成を自動化します。# Network Deployment Methods (Root Module) network_deployment_option = "TF-ROOT-MODULE" # For testing and PoC only # Turn flags on to instruct Terraform to create VCN-02 and VCN-02 is_vcn1_created = true is_vcn2_created = true # Networking parameters: CIDR Blocks and Host Name prefix vcn1_cidr_block = "10.0.0.0/16" vcn2_cidr_block = "172.0.0.0/16" public_subnet1_cidr_block = "10.0.0.0/24" public_subnet2_cidr_block = "172.0.0.0/24" private_subnet1_cidr_block = "10.0.1.0/24" private_subnet2_cidr_block = "172.0.1.0/24" host_name_prefix = "<RegionKey>apl2" # Same prefix VCN-01/02
-
アプローチ2: Terraform子モジュール
lab02-demo-module/
ディレクトリから事前構築されたTerraformモジュールを使用することもできます。これにより、ルート・モジュールのnetwork.tf
ファイルがIaCベスト・プラクティスに準拠した子モジュールに変換されます。または、Oracle Cloud Infrastructure Provider、OCI GitHub (terraform-provider-OCI)などのパブリック・リポジトリ、またはOCI Live Labsで使用可能なものなどの内部Oracleモジュールから、事前構築済のTerraformモジュールを使用できます。子モジュール・アプローチの使用を反映するように
network_deployment_option
値を設定します。network_deployment_option = "TF-CHILD-MODULE" # IaC Best Practice for Production.
# Module Call to Create VCN-01 module "vcn-01" { source = "./modules/network" region = var.region compartment_id = var.compartment_id display_name_prefix = "${var.display_name_prefix}-${var.network_deployment_option}-VCN-01" network_deployment_type = var.network_deployment_option vcn_cidr_block = var.vcn1_cidr_block public_subnet_cidr_block = var.public_subnet1_cidr_block private_subnet_cidr_block = var.private_subnet1_cidr_block host_name_prefix = "${try(var.regions_keys_map[var.region], "OCI")}${var.host_name_prefix}1" } # Module Call to Create VCN-02 module "vcn-02" { source = "./modules/network" region = var.region compartment_id = var.compartment_id display_name_prefix = "${var.display_name_prefix}-${var.network_deployment_option}-VCN-02" network_deployment_type = var.network_deployment_option vcn_cidr_block = var.vcn2_cidr_block public_subnet_cidr_block = var.public_subnet2_cidr_block private_subnet_cidr_block = var.private_subnet2_cidr_block host_name_prefix = "${try(var.regions_keys_map[var.region], "OCI")}${var.host_name_prefix}2" }
タスク2: 2つのローカル・ピアリング・ゲートウェイの作成
手動オプション:
OCIでLPGを手動で作成するには、ローカル・ピアリング・ゲートウェイの作成を参照してください。この場合、構成ファイル(input.auto.tfvars
またはvariables.tf
)でis_lpg1_created
およびis_lpg2_created
フラグをfalse
に設定します。
自動オプション:
Terraformを使用してタスクを自動化するには、これらのフラグをtrue
に設定します。これにより、LPG-01およびLPG-02を作成するようにTerraformに指示されます。
# Create 2 Local Peering Gateways (LPG-01 and LPG-02) then peer them.
is_lpg1_created = true
is_lpg2_created = true
次のTerraformコード・スニペットは、LPG-01とLPG-02の両方を作成し、それらの間のピアリング関係を確立して、VCNs間のプライベート接続を可能にします。
# LPG-01 Creation
resource "oci_core_local_peering_gateway" "lpg-01" {
count = (var.is_vcn1_created && var.is_lpg1_created) ? 1 : 0
# Required
compartment_id = var.compartment_id
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-LPG-01" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-LPG-01"
vcn_id = var.is_vcn1_created ? module.vcn-01.vcn_ocid : var.vcn1_id
}
# LPG-02 Creation
resource "oci_core_local_peering_gateway" "lpg-02" {
depends_on = [oci_core_local_peering_gateway.lpg_01]
count = (var.is_vcn2_created && var.is_lpg2_created) ? 1 : 0
# Required
compartment_id = var.compartment_id
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-LPG-02" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-LPG-02"
vcn_id = var.is_vcn2_created ? module.vcn-02.vcn_ocid : var.vcn2_id
# Peering lpg-02 with lpg-01
peer_id = oci_core_local_peering_gateway.lpg_01[count.index].id
}
タスク3: 仮想マシン・インスタンスの起動
手動オプション:
OCIコンソールを使用してVMインスタンスを手動で起動するには、インスタンスの作成を参照してください。
自動オプション:
チュートリアル1: TerraformによるOracle Cloud Infrastructure Architect Professional認定の促進の簡易バージョンのTerraformコードを使用して、VMプロビジョニングの自動化を提供します。仮想マシンVM-01を作成するようにTerraformに指示するには、is_instance_created
フラグをtrue
に設定します。VCNがTerraformで作成されている場合、VMの表示名にはnetwork_deployment_option
設定(たとえば、PHX-AP-LAB02-1-TF-ROOT-MODULE-VM-01
またはPHX-AP-LAB02-1-TF-CHILD-MODULE-VM-01
)が含まれます。
# Task 3: Launch a VM(VM-01) in the Public Subnet of VCN-01.
is_instance_created = true
次のTerraformコードでは、VCN-01パブリック・サブネット内の図1に示すように、VM-01の作成が自動化されます。
resource "oci_core_instance" "this" {
count = (var.is_instance_created) ? 1 : 0
availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
compartment_id = var.compartment_id
create_vnic_details {
assign_private_dns_record = "true"
assign_public_ip = "true"
subnet_id = var.is_vcn1_created ? module.vcn-01.public_subnet_ocid : var.public_subnet1_id
}
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-VM-0${count.index + 1}" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-VM-0${count.index + 1}"
instance_options {
are_legacy_imds_endpoints_disabled = "false"
}
metadata = {
"ssh_authorized_keys" = "${file(var.ssh_public_key)}"
}
shape = var.shape_name
shape_config {
memory_in_gbs = var.shape_memory_in_gbs
ocpus = var.shape_numberof_ocpus
}
source_details {
source_id = var.image_ids[var.region]
source_type = "image"
}
}
タスク4: VCN-01およびVCN-02のカスタム・プライベート・ゾーンの作成
OCIのプライベートDNSゾーンには、VCN内でのみアクセス可能な内部DNSレコードが格納されます。DNSの概念を理解するために、最初に2つのカスタム・プライベート・ゾーンを手動で作成する方法を示します。図3は、VCN-01 (PHX-AP-LAB02-1-VCN-01
)にプライベートDNSゾーンzone-a.local
を作成し、それにrecord
を追加する方法を示しています。
図3: プライベートDNSゾーンを作成し、それをVCN-01に関連付けてから、新しいレコードをゾーンに追加します
手動オプション:
-
VCN-01 (
zone-a.local
)のプライベートDNSゾーンを作成および構成します。-
OCIコンソールに移動し、「ネットワーキング」、「DNS管理」、「ゾーン」に移動して、「プライベート・ゾーン」をクリックします。
-
「ゾーンの作成」をクリックし、ゾーン名(
zone-a.local
)を入力して、関連付けられたVCNとして「既存のDNSプライベート・ビューの選択」、PHX-AP-LAB02-1-VCN-01
を選択し、「作成」をクリックします。 -
ゾーンが作成されたら、自動生成されたNSおよびSOAレコードを表示します。
-
「レコードの管理」をクリックし、「レコードの追加」を選択します。
-
次の情報を入力して、「レコードの追加」をクリックします。
- 名前:
server01
と入力します。 - タイプ:
A - IPv4 Address
を選択します。 - TTL:
30 seconds
と入力します(必要に応じてフィールドをロック解除します)。 - アドレス:
10.0.0.2
と入力します。
- 名前:
-
「変更の公開」および「変更の公開の確認」をクリックします。
ノート:操作が正常に終了するのを待ちます(状態がUPDATINGからACTIVEに変更されました)。
-
-
VCN-02 (
zone-b.local
)のプライベートDNSゾーンを作成および構成します。図3と同じステップに従って、VCN-02 (PHX-AP-LAB02-1-VCN-02
)のプライベート・ゾーンを作成します。-
「ゾーン」、「プライベート・ゾーン」にナビゲートし、「ゾーンの作成」をクリックします。
-
「名前」に
zone-b.local
と入力し、関連付けられたVCNとして「既存のDNSプライベート・ビューの選択」、PHX-AP-LAB02-1-VCN-02
を選択して、「作成」をクリックします。 -
「レコードの管理」をクリックし、「レコードの追加」を選択します。
-
次の情報を入力して、「レコードの追加」をクリックします。
- 名前:
server01
と入力します。 - タイプ:
A - IPv4 Address
を選択します。 - TTL:
60 seconds
と入力します(必要に応じてフィールドをロック解除します)。 - アドレス:
172.16.0.123
と入力します。
- 名前:
-
「変更の公開」および「変更の公開の確認」をクリックします。
ノート:手動作成ステップをスキップすると、
zone not found: 3 (NXDOMAIN)
のようなエラーが発生します。
-
自動オプション:
このチュートリアルでは、Ansibleを使用した高度な自動アプローチも提供します。Ansibleは、インフラストラクチャの構成を管理するオープンソースの自動化ツールです。この文脈において、Ansibleプレイブックは、プライベートDNSゾーンの作成を自動化するタスクの集合です。詳細は、Ansible Playbook Keywordsを参照してください。
input.auto.tfvars
またはvariabes.tf
でis_task4_automated
をtrue
に設定して、playbooks.sh
でAnsible playbook
実行をトリガーし、プライベートDNSゾーン作成とレコード追加の両方を1回実行で自動化します。
# Task 4: Create and Configure two DNS zones (zone-a and zone-b).
is_task4_automated = true
Using Terraform’s local-exec
provisioner, you can execute an Ansible playbook to automatically create zone-a.local
in VCN-01 and zone-b.local
zones in VCN-02 with their respective records
.詳細は、ソース・コード: oci-ansible-collectionを参照してください。
# Create 2 Custom Private Zones and Associated Records in OCI
resource "null_resource" "ansible-create-zones-playbook" {
count = (var.is_task4_automated) ? 1 : 0
# Create inventory
provisioner "local-exec" {
command = "sh ~/terraform-ws/lab2-demos/playbooks.sh"
}
}
タスク5: 関連付けられたゾーンAのインスタンスのテスト
手動オプション:
VMインスタンスを手動でSSHして、VMインスタンスがzone-a.local
に関連付けられているかどうかを確認します。
-
パブリックIPアドレスを使用してインスタンスにSSHで接続します。
ssh -i <private_ssh_key> <public_ip_address>
-
server01.zone-a.local
のDNSレコードを検索します。host server01.zone-a.local
予期される出力:
server01.zone-a.local has address 10.0.0.2
-
システム生成のゾーンエントリを確認します。
host -t NS zone-a.local
予期される出力:
zone-a.local has NS record vcn-dns.oraclevcn.com.
-
ゾーンの権限レコードを確認します。
host -t SOA zone-a.local
予期される出力:
zone-a.local has SOA record ven-dns.oraclevcn.com. hostmaster.oracle.com. 2 3600 3600 3600 10
-
関連するVCNビューに基づくDNS解決の違いを確認します。
host server01.zone-b.local
予期される出力:
server01.zone-b.local not found: 3 (NXDOMAIN)
出力は、
zone-b.local
がVCNのどのビューにも関連付けられていないことを示しています。
自動オプション:
is_test_instance_associated_zone_a
フラグをtrue
に設定して、zone-a.local
とのVM-01
アソシエーションをテストするようにTerraformに指示します。
# Test Instance for Associated Zone (zone-a.local)
is_test_instance_associated_zone_a = true
次のTerraformコードは、remote-exec
プロビジョナを使用して、VM-01ゾーン・アソシエーションのテストを自動化します。
resource "null_resource" "dns_test_1" {
depends_on = [oci_core_instance.this[0]]
count = (var.is_test_instance_associated_zone_a) ? 1 : 0
connection {
agent = false
timeout = "30m"
host = oci_core_instance.this[0].public_ip
user = "opc"
private_key = file(var.ssh_private_key) # Avoid exposing SSH keys directly
}
provisioner "remote-exec" {
inline = [
"echo \"Begin Test 1 - Instance Associated Zone-A\"",
"echo \"1. Successful SSH to the instance using public ip address: ${oci_core_instance.this[0].public_ip}\"",
"echo \"2. Look up DNS records for server01.zone-a.local.\"",
"host server01.zone-a.local",
"echo \"3. Verify the system-generated zone entry.\"",
"host -t NS zone-a.local",
"echo \"4. Verify the authority record for the zone.\"",
"host -t SOA zone-a.local",
"echo \"5. Observe the difference in DNS resolution based on the associated VCN views.\"",
"host server01.zone-b.local",
"echo \"End Test 1 - Instance Associated Zone-A\"", ]
}
}
タスク6: VCN Resolverの構成とその他のプライベート・ビューの追加
手動オプション:
VCNリゾルバを手動で構成するには、OCIコンソールのVCN-01の詳細ページに移動し、「VCN Resolver」および「プライベート・ビュー」を選択します。
ドロップダウン・メニューから「VCN-02」を選択し、「Save」をクリックして変更を保存します。プライベート・リゾルバの詳細ページのステータスがUPDATINGからACTIVEに変更されるまで待機します。
自動オプション:
VCNリゾルバ構成を自動化するために、Terraformのlocal-exec
プロビジョナを利用して、OCI CLI、AnsibleプレイブックまたはTerraformモジュールを実行します。
is_task6_automated
フラグをtrue
に設定して、Terraformに指示します。
is_task6_automated = true
提供されているbashスクリプトupdate_resolver.sh
では、VCN-01のプライベート・リゾルバを更新し、VCN-02をDNSプライベート・ビューとして関連付けるステップが強調表示されます。また、OCIのハイブリッドTerraform DNS構成の例は、terraform-OCI-hybrid-dnsから入手できます。
# Task 6: Configure the VCN Resolver, adding the Other Private View
resource "null_resource" "run-get-resolver" {
count = (var.is_task6_automated) ? 1 : 0
# Create inventory
provisioner "local-exec" {
command = "sh ~/terraform-ws/lab2-demos/update_resolver.sh"
}
}
タスク7: 関連付けられたゾーンBのインスタンスのテスト
手動オプション:
VCNリゾルバを構成した後、サーバーが適切に解決されることを確認します。
-
パブリックIPアドレスを使用してインスタンスにSSHで接続します。
ssh -i <private_ssh_key> <public_ip_address>
-
server01.zone-a.local
のDNSレコードを検索します。host server01.zone-b.local
予期される出力:
server01.zone-b.local has address 172.16.0.123
ノート: DNS解決が失敗した場合は、数分待って変更が有効になります。必要に応じて、インスタンスを再起動します。
自動オプション:
is_test_instance_associated_zone_b
フラグをtrue
に設定して、VM-01と2番目のVCN (VCN-02)の2番目のゾーン(zone-b.local
)との関連付けをテストするようにTerraformに指示します。
# Test Instance for Assoicated Zone B
is_test_instance_associated_zone_b = true
次のコードでは、Terraformのremote-exec
プロビジョナを使用してテストを自動化し、VMインスタンスのzone-b.local
との関連付けを検証します。
resource "null_resource" "dns_test_2" {
depends_on = [oci_core_instance.this[0]]
count = (var.is_test_instance_associated_zone_a) ? 1 : 0
connection {
agent = false
timeout = "30m"
host = oci_core_instance.this[0].public_ip
user = "opc"
private_key = file(var.ssh_private_key)
}
provisioner "remote-exec" {
inline = [
"echo \"Begin Test 2 - Instance Associated Zone-B\"",
"echo \"1. Successfull SSH into the instance using its public ip address: ${oci_core_instance.this[0].public_ip}\"",
"echo \"2. Look up DNS records for server01.zone-b.local.\"",
"host server01.zone-b.local",
"echo \"End Test 2 - Instance Associated Zone-B\"" ]
}
}
デプロイ・オプション
2つのデプロイメント・オプションについて説明します。
-
Oracle Resource Manager (ORM)は、ガイド付きワークフローを備えた使いやすいインタフェースを提供します。
-
Terraform CLI (Community Edition)は、宣言的な構成ファイルを介して、演習2リソースの柔軟でスケーラブルな管理を提供します。
To provision Lab 2 resources (VCN-01/VCN-02, LPG-01/LPG-02, and VM-01) and trigger the required tests, you need to provide default values for: image OCIDs map for each used region (image_ids
), compartment OCID (compartment_id
), display name prefix (display_name_prefix
), networking (is_vcn1_created
, is_vcn2_created
, is lpg1_created
, is_lpg2_created
, vcn_1_id
, vcn_2_id
, and public_subnet1_id
), compute instance (is_instance_created
, shape_name
), and testing flags for instance and zone associations (is_test_instance_associated_zone_a
and is_test_instance_associated_zone_b
).
オプション1: Oracle Resource Manager (ORM)の使用
図4は、演習2のリソース作成のためのORMスタックの作成を示しています。
図4: Oracle Resource Manager - Lab2スタックの作成(VCN-01、VCN-02、LPG-01およびLPG-02、VM-01)
Terraformは、図5に示すように、インフラストラクチャのプロビジョニングを7つのステップで自動化します。ソース構成の分析、Terraformテンプレート・パッケージの構築、デフォルトの変数値の提供、ORMスタックの作成、変更の計画、それらの変更の適用によるOCIでのリソースのプロビジョニング、およびオプションでリソースの破棄を行います。JenkinsやOCI DevOpsなどのDevOps CI/CDツールを統合することで、プロセス全体を自動化し、シングルクリック・ソリューションに近い便利な機能を提供します。
図5: Oracle Resource Managerスタック・ワークフロー(作成、計画、適用および破棄)
オプション2: Terraformコマンドライン・インタフェース(CLI)の使用(Community Edition)
Terraform CLIは、宣言的な構成ファイルを介してクラウド・リソースの柔軟でスケーラブルな管理を可能にするコード・ツールとしての強力なInfrastructureです。OCI-blog-fast-tracking-apcertif-part2.zipからTerraformコードをダウンロードし、input.auto.tfvars
ファイルをOCIの詳細(compartment_id
、image_ids
)でカスタマイズし、README.md
の手順に従って環境を設定し、terraform init
、terraform plan
およびterraform apply
コマンドを実行して演習2を完了します。
必要なTerraformフラグを事前に設定して、クリック数と完了時間を短縮する各タスクにbashスクリプトが含まれています。これらのスクリプトは、複数のレベルの柔軟性を提供します。
-
順次実行:タスク1から3 (
run_task1-3.sh
およびrun_task4.sh
)以降、タスク7 (run_task6-7.sh
)に進みます。 -
カスタム順序:タスク1から3の後に一時停止し、タスク4を手動で完了し、Terraformを使用してタスク5で再開してから、タスク6を手動で実行し、後続のスクリプトを使用してタスク7を完了できます。
-
ハイブリッド実行:タスク1から5 (
run_task1-3.sh
、run_task4.sh
、run_task5.sh
)を自動的に実行し、タスク7の自動完了のためにスクリプトを再開する前に、run_taks6-7.sh
の相互作用を利用して、タスク6がOCIコンソールで手動で完了するまで一時停止します。 -
完全自動化:これらのタスクをCI/CDパイプラインに統合して、DevOps本番環境でワンクリックで実行できます。
本質的に、このパッケージは、プライベートDNSを構成するためのガイドとベスト・プラクティスを提供し、ラボ2を簡素化し、OCI DNSによるスムーズな学習エクスペリエンスを保証します。
##########################################################################
# Terraform module: Configuring Private DNS Zones, Views, and Resolvers. #
# File Name: input.auto.tfvars #
# Copyright (c) 2024 Oracle Author: Mahamat H. Guiagoussou. #
##########################################################################
# Working Compartment
compartment_id = "REPLACE_WITH_YOUR_WORKING_COMPARTMENT_OCID_HERE"
# Region based display name prefix
display_name_prefix = "AP-LAB02-1" # Replace with your prefix
# TASK 1 - Create 2 VCNs (VCN-01 and VCN-02) manually using the OCI
# VCN Wizard (semi automated option) or Terraform (Root or Child)
# Turn flags off to indicate VCN-01 and VCN-02 are not created with TF
#is_vcn1_created = false # Set to 'false' to create VCN-01
#is_vcn2_created = false # Set to 'false' to create VCN-02
# After Creating VCN-01 & VCN-02 with VCN Wizard, updae OCIDs
vcn_id = "REPLACE_VCN1_OCID_HERE"
vcn_id = "REPLACE_VCN2_OCID_HERE"
public_subnet_id = "REPLACE_PUBLIC_VCN1_SUBNET_OCID_HERE"
# Create VCN-01 and VCN-02 with Terraform. Use only one of 2 options:
# (1) Root Module - Dupplicated code ("network1.tf" & "network2.tf")
# (2) Child Module - Use an existing Terraform Network Module.
# Network Deployment Options (Root Module)
network_deployment_option = "TF-ROOT-MODULE" # "TF-CHILD-MODULE"
# Turn flags on to instruct Terraform to create VCN-02 and VCN-02
is_vcn1_created = true # Set to 'true' to create VCN-01
is_vcn2_created = true # Set to 'true' to create VCN-02
# Networking parameters: CIDR Blocks and Host Name prefix
vcn1_cidr_block = "10.0.0.0/16"
vcn2_cidr_block = "172.0.0.0/16"
public_subnet1_cidr_block = "10.0.0.0/24"
public_subnet2_cidr_block = "172.0.0.0/24"
private_subnet1_cidr_block = "10.0.1.0/24"
private_subnet2_cidr_block = "172.0.1.0/24"
host_name_prefix = "<region-key>apl1"
# Task 2: Create two(2) Local Peering Gateways (LPG-01 & LPG-02)
is_lpg1_created = false
is_lpg2_created = false
# Task 3: Launch a VM (VM-01) in the public subnet
is_instance_created = false
# Shape Definition
shape_name = "VM.Standard.A1.Flex"
shape_memory_in_gbs = "6"
shape_numberof_ocpus = "1"
# SSH keys
ssh_public_key = "REPLACE_SSH_PUBLIC_KEY_PATH"
ssh_private_key = "REPLACE_SSH_PRIVATE_KEY_PATH"
# Task 4: Create and Configure OCI Private Zones (zone-a/b.local)
is_task4_automated = false
# Task 5: Test your instance for Associated Zone A.
is_test_instance_associated_zone_a = false
# Task 6: Configure the VCN Resolver, adding the Other Private View.
is_task6_automated = false
# Task 7: Test your Instance for Associated Zone B.
is_test_instance_assoracle = false
このチュートリアルでは、Oracle Cloud Infrastructure (OCI)でプライベートDNSゾーン、ビューおよびリゾルバを構成するための包括的なアプローチを提供します。これらのコンポーネントを作成、構成およびテストするための手動と自動の両方の方法が提供されています。This hands-on, semi-automated approach ensures a solid understanding of DNS resolution across different VCNs in OCI.
Through seven tasks, you have created two VCNs, established LPGs, launched a VM, configured two custom DNS zones, and verified VM DNS association before and after adding the second VCN as an associated private view to the DNS Resolver of the first VCN.
次のステップ
このチュートリアルでは、Terraform、Ansible、Oracle Resource Manager ORM、OCI CLI bashシェル・スクリプティングなどのInfrastructure as Code IaCツールを使用してOCIインフラストラクチャのプロビジョニングを自動化することで、OCI Architect Professional Certification(2024)の候補者が、ラボ2のDNS構成のような複雑なタスクを30分からわずか5分に高速化できます。今回の効率化により、人的ミスを減らし、リソース管理コストを削減し、大規模な成功率を高めます。
TerraformとAnsibleを学び、ORM、OCI CLI、bashスクリプトを活用して、効果的なOCIインフラストラクチャ管理のためのベストIaCプラクティスを探ります。
関連リンク
承認
- 作成者 - Mahamat H.Guiagoussou氏(マスター・プリンシパル・クラウド・アーキテクト)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Configure Private DNS Zones, Views, and Resolvers to Accelerate OCI Architect Professional Certification with Terraform
G19554-01
November 2024