Terraformを使用したインフラストラクチャ・コンポーネントの開発について

ダウンロードしたTerraformモジュールには、様々なインフラストラクチャ・コンポーネントを作成して設定するための個別のスクリプトが含まれています。これらのスクリプトを表示および編集して、作成されるコンポーネントおよび各コンポーネントの特性を理解できます。

Terraformディレクトリのルート・レベルには、様々なサブディレクトリの構成ファイルを参照する主要な構成ファイルmain.tf,が含まれます。このディレクトリには、Terraform構成ファイルで使用される変数や、Terraformプロバイダ、データ・リソースまたは出力に関する情報を含む変数を定義するファイルも含まれます。さらに、セキュリティ・リストおよびルート表を作成するためのTerraform構成ファイルもルート・レベルに配置されています。

Terraformディレクトリには、modulesディレクトリがあります。modulesディレクトリの内容は次のとおりです。

  • bastion:ベース・ホストの作成に使用されます。

  • compute: UNIXおよびWindowsのOracle Cloud Infrastructure Computeインスタンスの作成に使用します。

  • dbsystem: Oracle Cloud Infrastructure Databaseシステムの作成に使用します。

  • filesystem: Oracle Cloud Infrastructureファイル・ストレージ・ファイル・システムの作成に使用されます。

  • loadbalancer: Oracle Cloud Infrastructureロード・バランシング・インスタンスの作成に使用されます。

  • network:仮想クラウド・ネットワーク(VCN )、サブネット、インターネット・ゲートウェイ、サービス・ゲートウェイ、動的ルーティング・ゲートウェイ(DRG)およびネットワーク・アドレス変換(NAT)ゲートウェイなどのネットワーク・リソースの作成に使用されます。

作成するインフラストラクチャ・コンポーネントについて

インフラストラクチャ・コンポーネントを作成する前に、コンポーネントのタイプ、数値および配布に関する入力を指定する必要があります。たとえば、必要なアプリケーション・インスタンスの数、単一の可用性ドメインまたは2つの可用性ドメインのすべてのリソースを作成するかどうか、データベースのエディションとバージョンなどを指定できます。

Terraformディレクトリのルート・レベルでterraform.tfvarsファイルを使用して、この入力を指定します。terraform.tfvarsファイルをテキスト・エディタで開き、必要な情報を入力します。このファイルで使用できる推奨値は、ルート・レベルのディレクトリにあるREADMEを参照してください。

デフォルトで、Terraformモジュールは、2つの可用性ドメインにコンポーネントを作成します。これは、terraform.tfvarsファイルの変数ADの値によって制御されます。この値を編集することにより、インフラストラクチャ・コンポーネントのホストに使用される可用性ドメインを表示または変更できます。単一の可用性ドメインにコンポーネントを作成する場合、ADの値をterraform.tfvarsファイルの必要な可用性ドメイン1, 2, or 3,に設定します。2つの可用性ドメインにコンポーネントを作成する場合、可用性ドメインの数を指定または変更します。

変更を行わずに、提案されたデフォルト値を使用してTerraform構成ファイルを適用すると、次のインフラストラクチャ・コンポーネントが2つの可用性ドメインに作成されます。

  • 名前がpsftvcnでIPアドレス範囲が172.16.0.0/16.のVCN

  • 6つのサブネット、各可用性ドメインに8つ。各サブネットには/24 CIDRがあります。たとえば、172.16.4.0/24.サブネット名の末尾に付いた数字は、サブネットが作成された可用性ドメインを示します。

    • appsubad1およびappsubad2という名前のアプリケーション・サーバーのプライベート・サブネット。

    • Webサーバーのプライベート・サブネット。名前はwebsubad1およびwebsubad2です。

    • ロード・バランサのプライベート・サブネット。名前はlbsubad1およびlbsubad2です。

    • dbsubad1およびdbsubad2という名前のデータベース・システムのプライベート・サブネット。

    • essubad1およびessubad2という名前のElasticSearchサーバーのプライベート・サブネット

    • toolsssubad1およびtoolssubad2という名前のPeopleToolsインスタンスのプライベート・サブネット。

    • fsssubad1およびfsssubad2という名前のファイル・システム・サービスのプライベート・サブネット。

    • ベース・ホストのパブリック・サブネット。名前はbassubad1およびbassubad2です。

  • 次のルート表。terraform.tfvarsファイルで指定されたVCNのDNSラベルは、各ルート表の名前の前に付けられます。

    • ルールのないデフォルトのルート表。

    • プライベート・ルート表。psftvcnpvtrt,は、オブジェクト記憶域トラフィックをサービス・ゲートウェイにルーティングするためのルート・ルールと、NATインスタンスへの他のすべてのトラフィックを持つ表です。

    • インターネット・ゲートウェイにトラフィックをルーティングするルート・ルールを含むパブリック・ルート表psftvcnpubrt,

  • 次のセキュリティ・リスト:

    • デフォルトのセキュリティ・リスト。

    • アプリケーション・サーバー・サブネットのAppSecListという名前のセキュリティ・リスト。

    • ベース・ホストのサブネットのセキュリティ・リストで、名前はBastionSecListです。

    • DBSecListという名前の、データベース・サブネットのセキュリティ・リスト。

    • ESSecListという名前のElasticSearchサーバー・サブネットのセキュリティ・リスト。

    • FSSSecListという名前のファイルシステム・サーバー・サブネットのセキュリティーリスト。

    • LBSecListという名前のロード・バランサ・サブネットのセキュリティ・リスト。

    • PToolsSecListという名前のPeopleToolsサブネットのセキュリティ・リスト。

    • WebサーバーのサブネットのWebSecListという名前のセキュリティ・リスト。

  • psftvcnigw.という名前のインターネット・ゲートウェイterraform.tfvarsファイルに指定されているDNSラベルは、インターネット・ゲートウェイの名前の前に付けられます。インターネット・ゲートウェイは、クラウド・ネットワークのエッジをインターネットに接続します。VCNからVCN以外のパブリックIPアドレスへのトラフィックは、インターネット・ゲートウェイを経由します。

  • psftvcndrg.という名前の動的ルーティング・ゲートウェイterraform.tfvarsファイルに指定されているDNSラベル名は、動的ルーティング・ゲートウェイの名前の前に付けられます。動的ルーティング・ゲートウェイは、IPSec VPNまたはOracle Cloud Infrastructure FastConnectを使用したオンプレミス・ネットワークへのトラフィックや、リモートVCNピーリングを使用した別のリージョンのVCNへのトラフィックなど、インターネット以外のVCNと宛先間のトラフィックのパスを提供します。

  • psftvcnsvcgtw.という名前のサービス・ゲートウェイterraform.tfvarsファイルに指定されているDNSラベル名は、サービス・ゲートウェイの名前の前に付けられます。サービス・ゲートウェイを使用すると、VCNが、Oracle Cloud Infrastructure オブジェクト記憶域などの公開Oracle Cloud Infrastructureサービスにアクセスできますが、パブリック・インターネットにVCNを公開することはできません。

  • 両方の可用性ドメインに分散されている次のOracle Cloud Infrastructure Computeインスタンス。terraform.tfvarsファイルに指定された環境接頭辞が各インスタンス名に接頭辞として付けられ、リージョン、可用性ドメイン番号およびカウントに接尾辞が付加されます。各インスタンスには、関連付けられたブート・ボリュームがあります。

    • アプリケーション・サーバー。作成されるアプリケーション・サーバー・インスタンスの数とその形状は、terraform.tfvarsファイルに指定された値によって決まります。

    • 基本ホスト。

  • 2つのOracle Cloud Infrastructure Databaseシステム(各可用性ドメインに1つ)Oracle Cloud Infrastructure Databaseシステムの名前、バージョン、エディションなどのプロパティは、terraform.tfvarsファイルに指定する値によって決まります。Oracle Cloud Infrastructure Databaseシステムは、データベース・サブネットdbsubad1およびdbsubad2.に作成されます。

  • PeopleSoftソフトウェアのステージングに使用されるファイル・システムが1つ作成されます。ファイルシステムは、ファイルシステムのサブネットfssubad1に作成されます。ファイル・システムはすべてのOracle Cloud Infrastructure Computeインスタンスにマウントされます。

  • 2つのロード・バランサ(各可用性ドメインに1つずつ)terraform.tfvarsファイルに指定された環境接頭辞が各ロード・バランサ名に接頭辞として付けられ、リージョンおよびカウントの接尾辞が付加されます。ロード・バランサは、Webサーバーのサブネットwebsubad1およびwebsubad2.にあります。ロード・バランサのバックエンド・セットおよびリスナーも作成されます。

Terraformを使用したインフラストラクチャ・コンポーネントの作成

OCIプロバイダとともにTerraformをインストールし、ローカル・システムに環境変数を設定したら、Terraformモジュールを適用してOracle Cloud Infrastructureでインフラストラクチャ・コンポーネントを作成します。

  1. ローカルシステムで、端末を開くかWindows PowerShellを起動します。Terraformモジュールがあるディレクトリにナビゲートします。
  2. 入力: terraform apply
  3. アクションを確認するプロンプトが表示されたら、yes.を入力します。
Terraformが起動し、現在のディレクトリのTerraformモジュールで指定されたすべてのコンポーネントが作成されます。出力には、作成されるオブジェクトが表示されます。データベース・システムなど、一部のオブジェクトの作成には非常に長い時間がかかる場合があります。すべてのコンポーネントが作成されると、Terraformに完了メッセージが表示されます。例: Apply complete! Resources: 90 added, 0 changed, 0 destroyed.

コマンド出力のOutputsセクションに、Terraformという形式で、作成されたインスタンスのパブリックおよびプライベートIPアドレスが表示されます。接続先のインスタンスのIPアドレスをメモします。

エラーが発生した場合は、それらのエラーを修正してterraform applyを再度実行できます。このコマンドを初めて実行したディレクトリと同じディレクトリでこのコマンドを再実行したことを確認します。Terraformでは、コンポーネントの現在の状態をチェックし、存在しないコンポーネントを作成します。ただし、Terraformを別のディレクトリまたは同じTerraformモジュールを持つ別のローカル・システムから実行すると、Terraformではこれが新しい設定として扱われ、様々な構成ファイルに指定されたすべてのリソースが作成されます。別のディレクトリまたはローカル・システムでTerraformを実行して既存のリソースを管理する場合は、既存のディレクトリから新しいディレクトリまたはシステムにTerraform状態ファイルをコピーします。しかし、一般的に、あるシステムまたはディレクトリでTerraformを使用して、別のシステムまたはディレクトリでTerraformによって作成されたコンポーネントを管理することはお薦めできません。