OCI Terraformを使用した単純なインフラストラクチャの設定
Terraformを使用して、Oracle Cloud Infrastructureアカウントに単純なインフラストラクチャを設定します。
主なタスクは:
- 他のTerraformチュートリアルから既存のスクリプトをコピーします。
- スクリプトを編集して、1つのディレクトリ内のすべてのリソースを結合します。
apply
コマンドを実行して、次のリソースを作成します:- コンパートメント
- 仮想クラウド・ネットワーク
- コンピュート・インスタンス

詳細は、次を参照してください:
開始前
このチュートリアルを正常に実行するには、次が必要です:
- 有料Oracle Cloud Infrastructureアカウント。無料Oracle Cloudプロモーションのリクエストおよび管理を参照してください。
- MacOS、LinuxまたはWindowsコンピュータ。
- Terraformチュートリアル・リソース:
- 次のすべてのステップを実行します:
- 作成したスクリプトを次のディレクトリに保持します:
$HOME/tf-provider/
$HOME/tf-compartment/
$HOME/tf-compute/
$HOME/tf-vcn/
1. 準備
前のTerraformチュートリアルで作成したスクリプトを新しいディレクトリにコピーします。
2. スクリプトの編集
スクリプトを編集してコンパートメントに新しい名前を割り当て、ハードコードされたすべてのOCIDを参照で置き換えます。
前のチュートリアルでは、コンパートメントOCIDをハードコードしました。ここで、compartment.tf
からコンパートメントを参照するように<compartment-ocid>
を更新します。
- コンパートメントOCIDが
outputs.tf
ファイルで参照される方法を確認します。grep -R compartment outputs.tf
出力例:
# Outputs for compartment output "compartment-name" { value = oci_identity_compartment.tf-compartment.name output "compartment-OCID" { value = oci_identity_compartment.tf-compartment.id
- 次のように、コンパートメントOCIDの値をメモ帳にコピーします:
oci_identity_compartment.tf-compartment.id
compartment_id
を参照しているファイルを見つけます。grep -Rn compartment_id
出力例:
availability-domains.tf:7: compartment_id = "<tenancy-ocid>" compartment.tf:3: compartment_id = "<tenancy-ocid>" compute.tf:4: compartment_id = "<compartment-ocid>" private-security-list.tf:6: compartment_id = "<compartment-ocid>" private-subnet.tf:6: compartment_id = "<compartment-ocid>" public-security-list.tf:6: compartment_id = "<compartment-ocid>" public-subnet.tf:6: compartment_id = "<compartment-ocid>" vcn-module.tf:9: compartment_id = "<compartment-ocid>"
ノート
availability-domains.tf
ファイルとcompartment.tf
ファイルは、どちらも<tenancy-ocid>
を指します。たとえば、compartment.tf
ファイルはテナンシを親コンパートメントとしてポイントし、その下にコンパートメントを作成します。この2つのファイルのcompartment_id
は編集しないでください。availability-domains.tf
およびcompartment.tf
ファイルを除き、grep
コマンドの結果の残りのファイルで、compartment_id = "<compartment-ocid>"
を次のように置き換えます:compartment_id = oci_identity_compartment.tf-compartment.id
チュートリアルコンピュート・インスタンスの作成では、コンピュート・インスタンスをホストするパブリック・サブネットをハードコードしました。ここで、public-subnet.tf
ファイルからpublic-subnet-OCID
を参照するようにcompute.tf
ファイルを更新します。
サブネットOCID
がoutputs.tf
ファイルでどのように参照されているかを確認します。grep -R subnet outputs.tf
出力例:
... # Outputs for private subnet output "private-subnet-name" { value = oci_core_subnet.vcn-private-subnet.display_name output "private-subnet-OCID" { value = oci_core_subnet.vcn-private-subnet.id # Outputs for public subnet output "public-subnet-name" { value = oci_core_subnet.vcn-public-subnet.display_name output "public-subnet-OCID" { value = oci_core_subnet.vcn-public-subnet.id
- パブリック・サブネットOCIDの値をメモ帳にコピーします:
oci_core_subnet.vcn-public-subnet.id
subnet_id
を参照しているファイルを見つけます。grep -Rn subnet_id
出力例:
compute.tf:19: subnet_id = "<your-public-subnet-ocid>"
grep
コマンドの結果として得られるcompute.tf
ファイルで、compartment_id = "<your-public-subnet-ocid>"
を次のように置き換えます:subnet_id = oci_core_subnet.vcn-public-subnet.id
完了!これで、すべてのスクリプトを実行する準備ができました。
3. 単純なインフラストラクチャの作成
Terraformスクリプトを実行して、コンパートメント、仮想クラウド・ネットワークおよびコンピュート・インスタンスをパブリック・サブネットに作成します。
tf-simple-infrastructure
ディレクトリの作業ディレクトリを初期化します。terraform init
- 実行計画を作成し、Terraformがアカウントに対して行う予定の変更を確認します:
terraform plan
出力例:
.... Terraform will perform the following actions: # oci_core_instance.ubuntu_instance will be created .... Plan: 14 to add, 0 to change, 0 to destroy. Changes to Outputs: + all-availability-domains-in-your-tenancy = [ ....
- Terraformを使用して単純なインフラストラクチャを作成します:
terraform apply
確認を求められた場合は、作成するリソースに
yes
を入力します。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」で、「コンパートメント」を選択します。
- コンパートメント名が表示されるまでページをリフレッシュします。
- ナビゲーション・メニューを開き、「ネットワーキング」、「仮想クラウド・ネットワーク」の順に選択します。
- コンパートメントを選択します。
コンパートメントがない場合は、ページをリフレッシュします。
- VCNを選択し、作成されたリソースを確認します。
- ナビゲーション・メニューを開き、「コンピュート」を選択します。「コンピュート」で、「インスタンス」を選択します。
- インスタンスがインスタンスのリストに表示されることを確認します。
出力ターミナルで出力を確認します。
oci_identity_compartment.tf-compartment: Creating...
oci_identity_compartment.tf-compartment: Creation complete after 7s [id=xxx]
module.vcn.oci_core_vcn.vcn: Creating...
module.vcn.oci_core_vcn.vcn: Creation complete after 2s [id=xxx]
module.vcn.oci_core_internet_gateway.ig[0]: Creating...
module.vcn.oci_core_nat_gateway.nat_gateway[0]: Creating...
module.vcn.oci_core_default_security_list.lockdown[0]: Creating...
module.vcn.oci_core_service_gateway.service_gateway[0]: Creating...
oci_core_security_list.private-security-list: Creating...
oci_core_security_list.public-security-list: Creating...
module.vcn.oci_core_internet_gateway.ig[0]: Creation complete after 1s [id=xxx]
module.vcn.oci_core_route_table.ig[0]: Creating...
oci_core_security_list.public-security-list: Creation complete after 1s [id=xxx]
module.vcn.oci_core_default_security_list.lockdown[0]: Creation complete after 1s [id=xxx]
oci_core_security_list.private-security-list: Creation complete after 1s [id=xxx]
module.vcn.oci_core_route_table.ig[0]: Creation complete after 1s [id=xxx]
oci_core_subnet.vcn-public-subnet: Creating...
module.vcn.oci_core_nat_gateway.nat_gateway[0]: Creation complete after 2s [id=xxx]
module.vcn.oci_core_service_gateway.service_gateway[0]: Creation complete after 3s [id=xxx]
module.vcn.oci_core_route_table.service_gw[0]: Creating...
module.vcn.oci_core_route_table.nat[0]: Creating...
module.vcn.oci_core_route_table.service_gw[0]: Creation complete after 0s [id=xxx]
module.vcn.oci_core_route_table.nat[0]: Creation complete after 1s [id=xxx]
oci_core_subnet.vcn-private-subnet: Creating...
oci_core_subnet.vcn-public-subnet: Creation complete after 2s [id=xxx]
oci_core_instance.ubuntu_instance: Creating...
oci_core_subnet.vcn-private-subnet: Creation complete after 2s [id=xxx]
oci_core_instance.ubuntu_instance: Still creating... [10s elapsed]
oci_core_instance.ubuntu_instance: Still creating... [20s elapsed]
oci_core_instance.ubuntu_instance: Still creating... [30s elapsed]
oci_core_instance.ubuntu_instance: Creation complete after 38s [id=xxx]
Apply complete! Resources: 14 added, 0 changed, 0 destroyed.
参照:
次の処理
完了!Terraformを使用して、Oracle Cloud Infrastructureアカウントに単純なインフラストラクチャが正常に作成されました。
データ・ソース、リソースおよびモジュールの使用方法がわかったら、Oracle Cloud Infrastructureプロバイダから単純なインフラストラクチャに新しいオブジェクトを追加します。
Oracle製品を使用した開発の詳細を確認するには、次のサイトを参照してください: