ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
TerraformでOracle Cloud Infrastructure Architect Professional認定を加速
イントロダクション
Oracle Cloud Infrastructure (OCI) Architect Professional認定資格を取得するには、Oracle Cloudおよびハンズオン・エクスペリエンスを深く理解する必要があります。このチュートリアルでは、TerraformでInfrastructure as Code (IaC)を利用して、移行を加速させます。
次の図1は、デプロイするターゲットOCIアーキテクチャを示しています。右側には、OCI Architect Professional Certification(2024)ラボに対する構造化されたアプローチの概要が7つのステップに分かれています。認定試験ラボに合わせた事前構築済みのTerraformコード・スニペットを活用することで、反復的なタスクが自動化され、貴重な時間を確保して、重要なOCIコンセプトの習得に集中できます。このアプローチにより、ラボの完成が加速されるだけでなく、プラットフォームをより深く理解できるようになります。
図1: OCI Architecture Professional認定ラボ1 - アーキテクチャと手動対自動プロセス
手動メソッドの欠点
OCI認定試験のハンズオン・ラボへの手動アプローチは、大きなハードルになる可能性があります。欠点は次のとおりです。
- エラーが発生しやすい:反復的な手動タスクにより、人的エラーのリスクが高まり、入力ミス、ステップの欠落、遅延が発生します。
- 消費時間:複雑なワークフローは時間がかかり、進行を妨げ、演習を制限します。
- スケーラブルでない:コピー・アンド・ペースト、エラーの導入、および修正の乗算作業が必要です。
- ボトルネックのテスト:手動タスクの評価は主観的であり、正確なパフォーマンス測定と準備を妨げます。
- ドキュメントの欠点:非公式な人間の入力、一貫性のない慣行、および手順の保守における課題に依存します。
- 手動の痛みを超えて:
- 従来の方法では、すべてまたは何も圧力が発生します。ひとつの逃した一歩は、不必要なストレスを加え、真の理解を曖昧にする進歩を脱線させることができる。
- これらの方法は、必須スキルと必須タスクの境界線をぼかします。退屈なセットアップで貴重な練習時間が失われ、学習やOCIスキルの習得が妨げられます。
OCIスキルを迅速に習得: 自動化のパワー
このチュートリアルでは、タスクを自動化し、コア・スキルに焦点を当て、練習時間を短縮することで、OCI認定を加速する方法を示します。
主な利点:
- フォーカスされた学習:反復的なタスクを自動化し、コア概念を習得する時間を確保し、理解と知識の保持を深めます。
- オンデマンドの演習:自動化するラボのどの部分を選択するか、学習ペースをパーソナライズし、準備を加速することで、柔軟性を獲得します。
- 効率の向上:自動化により、準備時間を最大80%短縮します。
その他の利点は次のとおりです。
- スケーラビリティとコスト効率:オンデマンドでインフラストラクチャを簡単にスケール・アップまたはスケール・ダウンできるため、コストを削減できます。
- エラーの削減:人的エラーを排除し、インフラストラクチャが常に安全かつ正しくプロビジョニングされるようにします。
OCI Architect Professional認定(2024)のジャーニーを促進するために、Terraformを使用して図1に示すラボ1: Oracle Cloud Infrastructure Architect Professionalを自動化します。この自動化されたアプローチは、他の認定ラボや実際のクラウド・デプロイメントに拡張できます。
CIDRブロックではなく別のNSGへのイングレス・ソースとしてのネットワーク・セキュリティ・グループ(NSG)
このチュートリアルでは、OCIのネットワーク・セキュリティ・グループと、Virtual Cloud Network (VCN)内のネットワーク・トラフィックを詳細に制御する方法について説明します。ネットワーク・セキュリティ・グループは仮想ファイアウォールとして機能し、VCN内のリソースへのネットワーク・アクセスを制御します。これには、OCI Computeインスタンス、Kubernetesクラスタ、データベースなどが含まれます。ネットワーク・セキュリティ・グループは、サブネット間のみでなくリソース間の制御を可能にすることで、セキュリティ・リストよりも高い柔軟性を提供します。
半自動ハイブリッド・アプローチ(7ステップ)
OCI Architect Professional認定のハンズオン・ラボは、包括的なものの、時間がかかる場合があります。Lab 1: Oracle Cloud Infrastructure Architect Professionalで、完了までに少なくとも25分が必要なことを検討してください。TerraformでVCN、NSG、仮想マシン(VM)の作成などの反復タスクを自動化することで、今回は最大80%削減でき、面倒な手動ステップではなくコア・セキュリティの概念に集中できます。提案された半自動アプローチは柔軟性を提供し、どのタスクを自動化するかを選択できます。
目的
- Terraformを使用して、Oracle Cloud Infrastructure Architect Professional認定資格の準備を加速します。
前提条件
-
Terraformの基本的な知識。初心者は、Oracle Cloud Infrastructure Architect ProfessionalまたはTerraform for_each: A simple Tutorial with Examplesなどの初心者ガイドを完了する必要があります。
-
TerraformプラグインでのOCI Cloud Shell、Oracle Resource Manager (ORM)またはIDE (Visual Studioなど)の使用。
タスク1: Virtual Cloud Network (VCN)の作成
手動オプション:
OCI VCNウィザードを使用して、コア・ネットワーキング・リソース(VCN、インターネット・ゲートウェイ、ルート表、セキュリティ・リスト、パブリックおよびプライベート・サブネット)を作成します。詳細は、仮想ネットワーキングのクイックスタートを参照してください。
-
OCIコンソールに移動し、「ネットワーキング」、「Virtual Cloud Networks」に移動して、新しいVCNを作成します。
-
「VCN情報」をクリックし、「VCN」、「プライベート・サブネット」および「パブリック・サブネット」のOCIDsを書き留めます(図2)。
-
デプロイメント・オプションの項に示すように、OCIDsを
input.auto.tfvars
(またはterraform.tfvars
)ファイルに追加します。
デフォルトでは、create_vcn
フラグはオフです(OCIコンソールからVCNを手動で作成します)。VCN OCID、サブネットOCIDsを収集し、input.auto.tfvars
ファイルに追加します。
# Step 1a - Create VCN using VCN Wizard (create_vcn flag off)
create_vcn = false
# Copy from the console the VCN OCIDs and subnets (public, Private) OCIDs.
vcn_id = "REPLACE_CREATED_VCN_OCID_HERE"
private_subnet_id = "REPLACE_CREATED_PRIVATE_SUBNET_OCID_HERE"
public_subnet_id = "REPLACE_CREATED_PUBLIC_SUBNET_OCID_HERE"
図2: VCN OCID、パブリック・サブネットOCIDおよびプライベート・サブネットOCIDを収集するためのコンソールVCNビュー
自動オプション:
次のステップを使用してVCNを作成します。
-
VCNおよびすべてのネットワーキング・リソースを自動的に作成するには、
input.auto.tfvars
ファイルでcreate_vcn
フラグをtrue
に設定します。 -
VCN、パブリック・サブネット、プライベート・サブネットのCIDRブロックおよびホスト名接頭辞を指定します。
# Step 1b - Create VCN using Terraform. Provided the CIDR Blocks for the # VCN, Subnets and all other required input (host_name_prefix). create_vcn = true # Provide the VCN & Subnet CIDR Blocks as well as host name prefix vcn_cidr_block = "10.0.0.0/16" public_subnet_cidr_block = "10.0.0.0/24" private_subnet_cidr_block = "10.0.1.0/24" host_name_prefix = "phxapl4"
タスク2: 2つのNSG (NSG-01およびNSG-02)の作成
手動オプション:
次のステップを使用して、2つのNSG (NSG-01およびNSG-02)を作成します。
-
タスク1で作成したVCNを選択します。
-
「リソース」で、「ネットワーク・セキュリティ・グループ」をクリックします。
-
「ネットワーク・セキュリティ・グループの作成」をクリックし、次の情報を入力します。
- 名前:名前を入力します。たとえば、
<REGION-KEY>-AP-LAB01-NSG-01
です。 - コンパートメントの作成:作業コンパートメントを入力します。
- 「作成」をクリックします。
- 名前:名前を入力します。たとえば、
-
<REGION-KEY>-AP-LAB01-NSG-02
という名前の2番目のNSGについて、ステップ1から3を繰り返します。
自動オプション:
次のTerraformコードでは、2つのNSG (NSG-01およびNSG-02)が作成されます。
resource "oci_core_network_security_group" "nsg-01" {
count = (var.create_vcn && var.create_nsg_1) ? 1 : 0
#Required
compartment_id = var.compartment_id
vcn_id = var.create_vcn ? oci_core_vcn.this.*.id[0] : var.vcn_id
display_name = "${var.display_name_prefix}-TF-NSG-01"
}
resource "oci_core_network_security_group" "nsg-02" {
count = (var.create_vcn && var.create_nsg_2) ? 1 : 0
#Required
compartment_id = var.compartment_id
vcn_id = var.create_vcn ? oci_core_vcn.this.*.id[0] : var.vcn_id
display_name = "${var.display_name_prefix}-TF-1-NSG-02"
}
2つのNSGを作成するには、create_nsg_1
およびcreate_nsg_2
フラグをtrue
に設定します。
# Step 2: Create two(2) empty Network Security Groups (NSG-01 & NSG-02).
create_nsg_1 = true
create_nsg_2 = true
タスク3: TerraformおよびRun Internet Control Message Protocol (ICMP) Ping Testを使用した4つのVMの起動
OCIコンソールから手動でVMを起動することに慣れているとします。詳細は、インスタンスの作成を参照してください。
ノート: 4つのVM (パブリック・サブネットに3つのVM、プライベート・サブネットに1つのVM)を作成するTerraform自動化オプションのみについて説明します。
create_vm_1_3
フラグを有効にして、3つのVM (VM-01、VM-02およびVM-03)を作成するようにTerraformに指示します。
# Step 3a: Launch three(3) VMs(VM-01, VM-02, VM-03) in the public subnet.
create_vm_1_3 = true
パブリック・サブネット内に3つのコンピュート・インスタンスを作成するには、次のTerraformコードでcount
メタ引数を使用しました。この簡潔なアプローチにより、より複雑なfor_each
メタ引数と比較して作成プロセスが簡略化されます。count
を3に設定すると、0、1および2の索引が付けられたインスタンスが自動的に生成され、コードの可読性と効率が向上します。
resource "oci_core_instance" "VM1-3" {
count = (var.create_vm_1_3) ? 3 : 0
availability_domain = "GqIF:PHX-AD-1"
compartment_id = var.compartment_id
create_vnic_details {
assign_ipv6ip = "false"
assign_private_dns_record = "true"
assign_public_ip = "true"
subnet_id = var.create_vcn ? oci_core_subnet.My-Public-Subnet.*.id[0] : var.public_subnet_id
#nsg_ids = (var.create_vcn && var.create_nsg_1) && (count.index == 2) ? [oci_core_network_security_group.nsg-1.*.id[0]] : []
nsg_ids = (var.automate_step_4 && var.create_nsg_1) ? (var.create_vcn ? [oci_core_network_security_group.nsg-1.*.id[0]] : [oci_core_network_security_group.nsg-01.*.id[0]]) : []
}
display_name = "${var.display_name_prefix}-VM-0${count.index + 1}"
metadata = {
"ssh_authorized_keys" = "${file(var.ssh_public_key)}"
}
shape = "VM.Standard.A1.Flex"
shape_config {
memory_in_gbs = "6"
ocpus = "1"
}
source_details {
source_id = var.amper_image_id
source_type = "image"
}
}
ノート: SSHを介してパブリックVMにアクセスするには、独自のSSHキー・ペアを生成します。詳細は、SSHキーの生成を参照してください。
次に、create_vm_4
フラグを有効にして、プライベート・ネットワーク内にVM-04を作成するようにTerraformに指示します。
# Step 3b: Launch the fourth VM (VM-04) in the private subnet.
create_vm_4 = true
これは、プライベート・サブネットに4番目のインスタンス(VM-04)を作成するTerraformコードの一部です。
resource "oci_core_instance" "vm-4" {
count = (var.create_vm_4) ? 1 : 0
availability_domain = "GqIF:PHX-AD-1"
compartment_id = var.compartment_id
create_vnic_details {
#assign_ipv6ip = "false"
assign_private_dns_record = "true"
assign_public_ip = "false"
subnet_id = var.create_vcn ? oci_core_subnet.My-Private-Subnet.*.id[0] : var.private_subnet_id
#nsg_ids = (var.create_vcn && var.create_nsg_1) ? [oci_core_network_security_group.nsg-2.*.id[0]] : []
nsg_ids = (var.automate_step_6 && var.create_nsg_2) ? (var.create_vcn ? [oci_core_network_security_group.nsg-2.*.id[0]] : [oci_core_network_security_group.nsg-02.*.id[0]]) : []
}
display_name = "${var.display_name_prefix}-VM-04"
shape = "VM.Standard.A1.Flex"
shape_config {
memory_in_gbs = "6"
ocpus = "1"
}
source_details {
source_id = var.amper_image_id
source_type = "image"
}
}
手動ICMPエコー・テスト: NSGがトラフィックに与える影響を監視します。
-
OCIコンソールに移動し、「コンピュート」および「インスタンス」に移動します。4つのインスタンスがすべてリストされます。
-
3つのインスタンスのパブリックIPアドレス(VM-01、VM-02、VM-03)を書き留めます。
-
コンピュータから、各VMインスタンスのパブリックIPアドレスにpingを送信します。
予期した結果:
-
セキュリティ・リストにICMPエコー・ルールがないため、すべてのインスタンスは失敗します。
-
デフォルトのセキュリティ・ルールでは、すべてのパブリックVMへのSSHアクセス(ポート22)が許可されています。
自動ICMPエコー・テスト:このテストは、Terraform local-exec
プロビジョナを使用して自動化されます。
-
3つのパブリックVMを表す3つの要素を含む配列
VM1_3
と、pingの数を指定する変数icmp_ping_count
を定義しました。 -
次のTerraformコードは、ICMPエコー・テストをローカル・マシンから
VM-02
に自動化します。resource "null_resource" "icmp_ping_VM2_fromlocal" { depends_on = [oci_core_instance.VM1-3[1]] count = (var.icmp_pingvm2_fromlocal) ? 1 : 0 # Ping VM-02 from local Computer provisioner "local-exec" { command = "ping -c ${var.icmp_ping_count} ${oci_core_instance.VM1-3[1].public_ip}" } }
input.auto.tfvars
ファイルを編集して、icmp_ping_count
変数の値を設定します。ローカル・コンピュータから3つのパブリックVMのそれぞれにpingを有効にするには、icmp_pingvm?_fromlocal
フラグをtrue
に設定します(1、2または3は特定のVMを表します)。
# ICMP ping from Local Computer (First Attempt)
icmp_pingvm1_fromlocal = true
icmp_pingvm2_fromlocal = true
icmp_pingvm3_fromlocal = true
タスク4: ICMPイングレス・トラフィックの構成およびNSG-01へのvNICsのアタッチ
手動オプション:
VM-03とNSG-01間のトラフィックを構成するために必要な次のサブタスク。
タスク4.1: ネットワークでの新規イングレス・ルールの追加
最初のNSG (NSG-01)を更新するには、図3に示すステップに従います。
-
VCNを選択します。
-
「ネットワーク・セキュリティ・グループ」でNSG-01を選択し、「ルールの追加」をクリックします。
-
次の情報を入力して、「追加」をクリックします。
- ソース・タイプ: CIDRと入力します。
- ソースCIDR:
0.0.0.0/0
と入力します。 - IPプロトコル: 「ICMP」を選択します。
- タイプ: 8と入力します。
- コード: 「すべて」を選択します。
図3: NSG-01へのイングレス・ルールの追加によるインターネットからのICMP Pingの許可
タスク4.2: NSG-01を指すように3番目のVM (VM-03)を構成する
NSG-01をVM-03仮想ネットワーク・インタフェース(VNIC)にアタッチするには、図4に示すステップに従います。
-
「コンピュート」で、「インスタンス」、「VM-03」および「詳細の表示」をクリックします。
-
アタッチされたvNICsを選択し、「プライマリvNIC」をクリックします。
-
「vNIC情報」で、「ネットワーク・セキュリティ・グループ」の横にある「編集」リンクをクリックし、「NSG-01」を選択します。
-
「変更を保存」をクリックします。
図4: VM-03 vNICへのNSG-01のアタッチ
自動オプション:
input.auto.tfvars
ファイルに移動し、automate_step_4
フラグをオンにします。
# Step 4: Add CIDR ingress rule in Network, attach VM-03 vNIC with NSG-01.
automate_step_4 = true
ノート:
- 自動リソース・プロビジョニングにTerraformを活用しながら、構成タスクを手動で実行することを強くお薦めします。
- Terraformの自動化を選択した場合は、必ず、NSG-01をVM-03 vNICに正常にアタッチするために、VMを再作成(破棄および再作成)してください。
- 選択したオプションにかかわらず、演習ではICMP pingテストが義務付けられています。
手動チェック:ローカル・コンピュータからVM VM-01、VM-02およびVM-03のパブリックIPアドレスに対して、2番目のICMPエコー・テスト(ping)を実行します。
結果:
- pingはすべて失敗します。3番目のインスタンス(VM-03)のみが正常に応答します。
- VM-03は、インバウンドICMPトラフィックを許可するNSG-01へのvNICのアタッチのためにpingに応答します(図4)。
自動チェック: input.auto.tfvars
ファイルにナビゲートし、すべてのicmp_pingvm?_fromlocal
フラグをtrueに設定します(1、2または3は特定のVMを表します)。
# ICMP ping from Local Computer (Second Attempt)
icmp_pingvm1_fromlocal = true
icmp_pingvm2_fromlocal = true
icmp_pingvm3_fromlocal = true
タスク5: 2つのNSGをネストする前にICMP Pingを実行する
手動オプション:
最初に、3つのパブリックVMからVM-04のプライベートIPアドレスにpingを試行します。
- パブリック・サブネット内のすべてのコンピュート・インスタンス(VM-01、VM-02、VM-03)にSSH接続します。
- 各サーバーからVM-04のプライベートIPアドレスをpingします。
予想結果:すべてのping試行が失敗します。接続を有効にするには、ネストされたNSGアーキテクチャが必要です。
自動オプション:
パブリックVM (VM-01、VM-02およびVM-03)ごとにicmp_test_from_vm?
フラグをtrueに設定します。各フラグ名の特定の VM番号(1、2、または3)に置き換えます。
# Step 5: SSH to VM-01, VM-02, VM-03 and ping VM-04 (First Attempt).
icmp_test_from_vm1 = true
icmp_test_from_vm2 = true
icmp_test_from_vm3 = true
このオプションは、Terraform remote-exec
プロビジョナを利用してICMPテストを自動化します。VMの作成時に使用される公開キーに対応する秘密SSHキーを指定する必要があります。シェル・スクリプトping_script.sh
は、icmp_ping_count
で定義されたping試行回数を繰り返します。
resource "null_resource" "icmp_ping_vm4_from_vm1" {
depends_on = [oci_core_instance.VM1-3[0]]
count = (var.icmp_test_from_vm1) ? 1 : 0
connection {
agent = false
host = oci_core_instance.VM1-3[0].public_ip
user = "opc"
private_key = file(var.ssh_private_key)
}
# At this stage we assume that the ping_script.sh is copied under /home/opc
provisioner "remote-exec" {
inline = [
"echo \" PING PRIVATE IP ${oci_core_instance.vm-4[0].private_ip}\"",
"chmod +x ping_script.sh",
"export TARGET_IP=${oci_core_instance.vm-4[0].private_ip}",
"export PING_COUNT=${var.icmp_ping_count}",
"sh ping_script.sh",
]
}
}
タスク6: ネストされたNSGの構成(NSG-01およびNSG-02)
手動オプション:
2番目のNSG (NSG-02)をソースとしてNSG-01を指定するイングレス・ルールで構成し、2つのNSG間のICMPトラフィック・フローを有効にします。
タスク6.1: ネットワークでのイングレス・ルールの追加(Virtual Cloud Network)
-
VCN (VCN-01)で、「セキュリティ・ルール」をクリックします。
-
「NSG-02」を選択し、「ルールの追加」をクリックします。
-
次の情報を入力して、「追加」をクリックします。
- ソース・タイプ: 「ネットワーク・セキュリティ・グループ」を選択します。
- ソース: NSG-01と入力します。
- IPプロトコル: 「ICMP」を選択します。
- タイプ: 8と入力します。
- コード: 「すべて」を選択します。
図5: NSG-01をソースとしてNSG-02イングレス・ルールに追加
タスク6.2: NSG-02を指すように4番目のVM (VM-04)を構成する
-
VM-04の「vNIC情報」(図6)で、NSGの横にある「編集」リンクをクリックし、「NSG-02」を選択します。
-
「変更の保存」をクリックします。
図6: VM-04 vNICへのNSG-02のアタッチ
自動オプション:
このタスクを自動化するには、input.auto.tfvars
ファイルでautomate_step_6
をtrueに設定します。
# Step 6: Add NSG-01 as ingress rule source, attach NSG-02 to VM04 vNIC.
automate_step_6 = true
タスク7: ネストされたNSGの最終ICMPエコー・テストの実行
手動によるエンドツーエンド・テスト:
VM-04のプライベートIPアドレスをパブリックVMからpingを再試行します。
-
パブリック・サブネットの3つのインスタンス(VM-01、VM-02、VM-03)にSSH接続します。
-
それぞれから、VM-04のプライベートIPにpingを実行します。図1に示すように、VM-03のみが成功します。
説明: VM-04のvNICは、NSG-02内のルールおよびデフォルトのセキュリティーリストのルールによって管理されるようになりました。NSG-01はNSG-02のイングレス・ルール・ソースとして構成され、インターネットからのトラフィックが許可されます。
エンドツーエンドの自動テスト:
TerraformでICMPエコーpingテストを自動的に実行できるようにします。
-
各3つのVM (VM-01、VM-02およびVM-03)の
icmp_test_from_vm?
フラグをtrue
に設定します。 -
図1の左側に示すように、VM-03のみがVM-04を正常にpingします。
# Step 7: SSH to VM-01, VM-02, VM-03 and ping VM-04 (Second Attempt).
icmp_test_from_vm1 = true
icmp_test_from_vm2 = true
icmp_test_from_vm3 = true
図7は、VM-03へのSSH接続の確立後に実行された複数のICMP ping試行の結果を示しています。この図は、ネストされたNSGを実装する前後のping結果を比較しています。
図7: NSG-02をNSG-01にネストし、vNICsをVMに接続する前後のPingの結果
ノート: Terraformを使用する場合は、手動構成から切り替えた後にVMを再作成し、NSG-02をVM-04 vNICに正しくリンクするようにします。
デプロイ・オプション
オプション1: Terraformコマンドライン・インタフェース(CLI)の使用(Community Edition)
Terrafromコマンドを実行して、Terraform CLIを使用してインフラストラクチャを計画およびデプロイする前に、提供されているTerraform構成を、ローカル・マシンまたはOCI Cloud Shellから特定の環境の詳細で更新する必要があります。oci-blog-fast-tracking-apcertif-main.zipから完全なTerraformソース・コードをダウンロードします。環境に合せてカスタマイズする必要があるファイルは、input.auto.tfvars
ファイルのみです(同様に、ファイル名はterraform.tfvars
です)。たとえば、使用済コンピュータ・イメージ(amper_image_id
)のOCIDs、およびラボ・リソースが作成されるコンパートメント(compartment_id
)を指定できます(必要に応じてデフォルト値のみ変更)。このパッケージには、環境の設定、ラボの実行、ネットワークとセキュリティの概念の理解に関する包括的な手順が記載されています。OCIの高度なラーニング・エクスペリエンスを強化するための詳細なガイド、ヒント、ベストプラクティスが含まれています。
##########################################################################
# Terraform module: Nested NSGs - NSG-01 as Ingress source to NSG-02. #
# #
# Copyright (c) 2024 Oracle Author: Mahamat Hissein Guiagoussou #
##########################################################################
# Working Compartment
compartment_id = "REPLACE_WORKING_COMPARTMENT_OCID_HERE"
# Image OCID - https://docs.oracle.com/en-us/iaas/images/
amper_image_id = "REPLACE_INSTANCE_REGIONAL_IMAGE_OCID_HERE"
# Region based display name prefix
display_name_prefix = "AP-LAB01-1" # Replace with your own prefix
##########################################################################
# Step 1a - Create VCN using VCN Wizard (turn off the create_vcn flag), #
##########################################################################
create_vcn = false
vcn_id = "REPLACE_VCN_OCID_HERE"
private_subnet_id = "REPLACE_PRIVATE_SUBNET_OCID_HERE"
public_subnet_id = "REPLACE_PUBLIC_SUBNET_OCID_HERE"
##########################################################################
# Step 1b - Create VCN using Terraform. Provide the CIDR Blocks for the #
# VCN, Subnets and other required input (host_name_prefix). #
##########################################################################
cvcn_cidr_block = "10.0.0.0/16"
public_subnet_cidr_block = "10.0.0.0/24"
private_subnet_cidr_block = "10.0.1.0/24"
host_name_prefix = "phxapl4"
##########################################################################
# Step 2: Create two(2) empty Network Security Groups: NSG-01 & NSG-02. #
##########################################################################
create_nsg_1 = false
create_nsg_2 = false
##########################################################################
# Step 3a: Launch three VMs(VM-01, VM-02, VM-03) in the public subnet. #
##########################################################################
create_vm_1_3 = false
##########################################################################
# Step 3b: Launch the fouth VM (VM-04) in the private subnet. #
##########################################################################
create_vm_4 = false
# Shape Definition
shape_name = "VM.Standard.A1.Flex"
shape_memory_in_gbs = "6"
shape_numberof_ocpus = "1"
# Ping all public VM from Local Computer
icmp_pingvm1_fromlocal = false
icmp_pingvm2_fromlocal = false
icmp_pingvm3_fromlocal = false
# Compute Instance SSH keys
ssh_public_key = "~/cloudshellkey.pub"
ssh_private_key = "~/cloudshellkey"
# Ping VM-04 from Public VMs (VM-02, VM-02, and VM-03) via SSH
icmp_test_from_vm1 = false
icmp_test_from_vm2 = false
icmp_test_from_vm3 = false
##########################################################################
# Step 4: Add CIDR ingress rule in Network & Attach VM3 vNIC with NSG-01 #
##########################################################################
automate_step_4 = false
##########################################################################
# Step 5: SSH to VM-01, VM-02, VM-03 and ping VM-04 (First Attempt). #
##########################################################################
##########################################################################
# Step 6: Add NSG-01 as ingress rule source, Attach VM4 vNIC with NSG-02 #
##########################################################################
automate_step_6 = false
##########################################################################
# Step 7: SSH to VM-01, VM-02, VM-03 and ping VM-04 (Second Attempt). #
##########################################################################
# Number of time ping is executed
icmp_ping_count = "REPLACE_NUMBER_OF_PING_ATTEMPTS_HERE"
オプション2: Oracle Resource Managerの使用(変数入力サンプル)
変数(amper_image_id
、compartment_id
など)の定義、ネットワーク・リソースのプロビジョニング(create_vcn
、create_msg_1/2
)、VMの作成(create_vm_1_3
、create_vm_4
、shape_name
)、ICMP ping(icmp_pingvm1_fromlocal
、icmp_test_from_vm1
)およびインフラストラクチャをデプロイする計画の実行によって、Oracle Resource Managerスタックを作成します。
次のステップ
Infrastructure as Codeの(IaC)原則は、Terraformを使用して、迅速なデプロイメントとセキュリティの向上を通じてインフラストラクチャ管理を大幅に強化します。たとえば、OCI Architect Professional Certification (2024)のLab 1: Become An OCI Architect Professional (2024)でネストされたNSGを手動で構成すると、通常約25分かかります。
Terraformを活用することで、複雑なOCIリソースのプロビジョニングと構成にかかる時間を大幅に短縮し、効率が大幅に向上しました。これは、複雑なネットワーク・セキュリティ構成を管理するOCIユーザーの測定可能な時間とコスト削減につながります。さらに、IaCは一貫性を促進し、人的エラーのリスクを軽減し、学習と実際の顧客の実装の両方にとって貴重なモデルとなります。Terraformまたはその他の同様のツールを使用したOCI自動化ニーズへのIaCの適用についてさらに学習するには、OCIリファレンス・アーキテクチャとベスト・プラクティスを調査しながら、残りのOCI Architect Professional認定ラボで学習した原則を適用することを検討してください。
承認
- 著者 - Mahamat Hissein Guiagoussou (マスター・プリンシパル・クラウド・アーキテクト)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Accelerate Oracle Cloud Infrastructure Architect Professional Certification with Terraform
G13856-01
August 2024