※ 本記事は、Akarsha Itigiによる”An overview of using Terraform to deploy OCI’s managed PostgreSQL database“を翻訳したものです。
2024年2月7日
PostgreSQLは、オープン・ソースのオブジェクト・リレーショナル・データベースで、堅牢なアーキテクチャと揺るぎないデータ整合性を考慮し、エンタープライズ環境での主要な選択となっています。マネージドサービスであるAmazon Web Services (AWS) Relational Database Service (RDS) for PostgreSQLまたはAzure Database for PostgreSQLからOracle Cloud Infrastructure (OCI)への移行を検討しているお客様は、OracleがフルマネージドのPostgresSQLサービスを提供していることがわかります。このコスト効率が高く、スケーラブルで高パフォーマンスなデータベース・サービスは、高い柔軟性と信頼性を求めている大企業と中小企業の両方に適しています。

図1: OCI DatabaseにPostgreSQLを使用する理由
アーキテクチャ設定の確認
この投稿では、OCIマネージドのPostgreSQLサービス、およびTerraformを使用したOCIテナンシでのデプロイメントを確認します。Terraformによってプロビジョニングされたコンピュート・インスタンスを使用してこのサービスにアクセスする方法を説明します。重要な仮想クラウド・ネットワーク(VCN)のネットワーク設定、キー・ポートへのアクセスを許可するセキュリティ・リスト、および3ノードのマネージドのPostgreSQLデータベース・システムについて説明します。必要なPSQLコマンドの処理は、Terraform構成によって自動化されます。
また、この記事では、シームレスな設定のための包括的なウォークスルーを備えたTerraformを使用したPostgreSQLサービスによるOCIマネージド・データベースのステップバイステップ・デプロイメントについても説明します。図1に、完全なデプロイメント・アーキテクチャを示します。

図2: Terraform構成によってプロビジョニングされたマネージドのPostgreSQLデータベース・システムのアーキテクチャ設計
選択したリージョンに可用性ドメインが1つある場合、高可用性データベース・システムを作成すると、可用性ドメイン固有またはリージョナル・サブネットが定義されているかどうかに関係なく、リージョン内のすべてのフォルト・ドメインにすべてのPostgreSQLインスタンスが分散されます。
フォルダ内のTerraform構成を使用したリソースの作成
Terraformを使用して、3ノードのOCIマネージドのPostgreSQLリソースをデプロイするには、次のステップを使用します:
-
プロバイダ情報の設定: OCIへの接続に必要な詳細を定義するproviders.tfというファイルを作成します。このファイルには、バージョン付きのOCI Terraformプロバイダ・コード、ユーザーOCID、テナンシOCID、リソースがプロビジョニングされるリージョンなどが含まれます。この情報は、APIキーを安全に生成することでOCIから取得します。
-
VPCネットワークの作成: vcn.tfというファイルを作成して、ネットワークを設定します。パブリックであるネットワーク・セグメント(サブネット)とプライベートであるネットワーク・セグメントを決定します。PostgreSQLはプライベート・サブネットに配置する必要があります。セキュリティ・リスト・ルールを追加します。1つはプライベート・サブネット・セキュリティ・リストに追加して、ポート5432を介してPostgreSQLにアクセスできるようにし、もう1つはパブリック・サブネット・セキュリティ・リストでポート22でのSSHアクセスを有効にします。PostgreSQLへの接続に使用されるコンピュート・インスタンスは、パブリック・サブネットにプロビジョニングされ、インターネットからアクセスできるようになります。これらのルールが正しく設定されていない場合は、インスタンスにアクセスしてPostgreSQLに接続できません。
-
コンピュート・インスタンスの作成: instance.tfという名前のファイルを使用して、PostgreSQLデータベースにアクセスするコンピュート・インスタンスを作成します。このコンピュート・インスタンスは、VCNのパブリック・サブネットに配置され、プライベート・サブネットのPostgreSQLに接続します。また、PostgreSQLデータベースに接続するには、インスタンスにPSQL CLIツールをインストールする必要があります。
-
PostgreSQLサービスの設定: postgresql.tfというファイルに、実際のOCIマネージドのPostgreSQLインスタンスの作成に必要なコードを入力します。ノードの数、OCPUの数、各ノードのRAMの量、デプロイするサブネット、ユーザー資格証明、可用性ドメインおよびリージョンなどの特性を定義します。
-
変数を定義: variables.tfという名前のファイルを作成し、他のファイル(vcn.tf、instance.tf、postgresql.tf)で使用される値を含めます。これらの値を設定したら、Terraformを実行して、OCIテナンシでのリソース作成を開始します。
Terraformフォルダ内のすべてのファイルは他のファイルに依存して、PostgreSQL設定がアーキテクチャに従って動作するようにするため、これらのファイルを Terraformフォルダ内で整理しておいてください。Terraformは、すべてのファイルの内容をまとめて評価し、どのリソースを作成するかを決定して、既知のリソースの依存関係に対応します。たとえば、サブネット内でコンピュート・リソースをプロビジョニングするには、VCNサブネットが存在している必要があります。

図3: tfファイルを含むPostgreSQLフォルダ
terraformスクリプトの実行
端末またはコマンド・プロンプトを使用して、次のコマンドを実行し、Terraformを初期化し、OCIテナンシ内にリソースを作成します:
terraform init
terraform plan
terraform apply
OCI PostgreSQLデータベースへの接続
設定が完了したら、Oracle Cloudコンソールにログインします。「Databases」で、PostgreSQLを選択し、OCI PostgreSQLインスタンスを見つけてエンドポイントIPアドレスをメモします。次に、「Compute and Instances」で、PSQL CLIが装備されているコンピュート・インスタンスのパブリックIPアドレスを見つけます。パブリックIPアドレスを使用して、SSHでこのコンピュート・インスタンスにアクセスします。インスタンス内で指定されたコマンドを実行して、OCI PostgreSQLデータベース・システムとの接続を確立します。
psql --version
psql -h endpoint_ip -U admin_username -d postgres
![]()
図4: Oracle Cloudコンソール内のPostgreSQLと、OCIコンピュート・インスタンスからデータベースへの接続
まとめ
Terraformを使用することで、マネージドのPostgreSQLデータベース・システムを簡単にデプロイし、エンタープライズまたはあらゆるタイプのアプリケーションに接続できます。PostgreSQLを備えたOCIデータベースは、OCIでコスト効率が高く、高いパフォーマンス、スケーラビリティ、高可用性、および耐久性のあるソリューションを提供します。新しいPostgreSQLクラスタを作成するには、無料トライアル・アカウントにサインアップします。Oracle Cloud InfrastructureおよびPostgreSQLの詳細は、サービスのドキュメントを参照してください。
