1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OCI リソース・マネージャ で 3層Webアプリケーション を爆速で構築する

Posted at

はじめに

前回の記事で、TerraformによるOCI構築を紹介しました。
【LiveLabs】Terraform を 使用して OracleCloud で Compute を構築してみた
前回の構築方法は、CloudShellからサンプルソースをダウンロードし、それを展開するというものでしたが、今回はOCIのIaCフルマネージドサービスであるリソース・マネージャから3層Webアプリケーションをデプロイしてみたいと思います。

リソース・マネージャとは

Oracle Cloud InfrastructureResourceManager
Oracle Cloud InfrastructureResourceManagerは、Terraformを使用してOracleCloudInfrastructureにインフラストラクチャリソースをプロビジョニングできるフルマネージドサービスです。
Terraformテンプレート定義を取り込み、インフラストラクチャリソースを簡単に作成および管理できます。
これにより、Infrastructure-as-Codeを使用して、コンピューティング、ネットワーキング、ロードバランサー、ブロック、オブジェクトストレージを含むすべてのOCIリソースにわたるプロビジョニングを自動化できます。 Resource Managerは、Identity and Access Management(IAM)とも統合されているため、Terraform操作の詳細なアクセス許可を定義できます。現在、CLI、SDK、およびコンソールをサポートしています。

構築するもの

今回もLiveLabsの中から、リソース・マネージャのハンズオンを選び、進めていきます。
ただ、LiveLabsのシナリオの中で選択していたアーキテクチャがAlways Free対象のもので、私のアカウントでは選択できなかったため、「MuShop Basicクイックスタート」というテンプレートを選択しました。ここがLiveLabsとの差異になりますが、手順には影響がございません。

構築するシステム構成イメージは下記の通りです。
image.png

構築手順

  1. リソース・マネージャ スタックを作成する
  2. アプリケーションをデプロイする
  3. お片付け

1. リソース・マネージャ スタックを作成する

左上のナビゲーションメニューをクリックし、開発者サービスに移動して、[スタック]を選択します。
image.png
[スタックの作成]ボタンを押下します。
image.png

テンプレートを選択し、テンプレートの選択をクリックします。 [クイックスタート]タブに移動し、[MuShop Basicクイックスタート]を選択します。 [テンプレートの選択]をクリックします。
image.png
image.png
[次]ボタンを押下します。
image.png
[次]ボタンを押下します。
image.png
[作成]ボタンを押下します。
image.png
どのようなリソースがスタックに登録されたか確認してみましょう。
[Terraform構成:ダウンロード]ラベルを押下すると、zipファイルがダウンロードされ、登録されたリソースが参照できます。
image.png
このうち、tfvars.example拡張子のファイルで各リソースの環境情報を定義し、tfファイルで各リソースのプロパティ値を設定していることがわかります。

2. アプリケーションをデプロイする

コンソール画面から、リソース・マネージャで設定したTerraform構成をベースに、アプリケーションをデプロイしましょう。リソース・マネージャでは、デプロイ操作をジョブと呼んでいます。

ジョブは、スタックに関連付けられたTerraform構成ファイルに対してアクションを実行します。 3つのアクションを実行でき、それらは計画、適用、および破棄です。 Terraformコマンドの実行はアトミックではないため、並列実行による競合状態や状態の破損を防ぐことが重要です。これが発生しないようにするために、Resource Managerは、単一の状態ファイルに対して、特定の時間に1つのジョブのみがスタックに対して実行できるようにします。
[スタックの詳細]ページから、スタックの構成(つまり、更新、削除、タグの追加、変数の編集)を完全に管理し、最新のTerraform構成を含むzipアーカイブをダウンロードすることもできます。これはトラブルシューティングの際に特に役立ちます。

[計画]をクリックして計画を実行し、次の情報を入力します。

名前:MuShopAppPlan
[計画]をクリックします
image.png

すると、ジョブが受け入れ済み➤進行中となります。

しばらくして、スタックがアクティブに変わったら成功です!
image.png

では、[適用]ボタンを押下してみましょう。
名前は「MuShopAppApply」とします。
image.png
適用アクションが成功したら、ログに含まれるTerraform出力を読み取ってリソースがプロビジョニングされていることを確認するか、コンソール画面から、様々なリソース(VCN、ロードバランサー、サブネット、データベースなど)を確認することができます。
2インスタンスはComputeに一覧表示されます。
※ロードバランサーのヘルスステータスがOKステータスになるまでに数分かかります。

VCN
image.png

Load Balancer
image.png

Compute
image.png
ComputeはWebサーバ兼アプリケーションサーバとして機能しており、上記のロードバランサーにバックエンドとして2インスタンスが設定されています。
image.png

Autonomous Database
image.png

これらのリソースが全て作成され、スタックの適用ジョブも成功したことが確認できました。
image.png

ロードバランサのステータスが[OK]に変わったら、IPアドレスをコピーして新しいWebブラウザタブに貼り付けます。サンプルのWebページが読み込まれ、ページの上部に接続しているWebサーバーが表示されます。
image.png

3. お片付け

Terraformを正常に適用してクラウドリソースを構築した(そしてオプションでGitlabへのソース移行を完了した)ので、[スタックの詳細]ページに戻り、リソースマネージャーを使用してすべてを破棄しましょう。

[破棄]をクリックして、次の情報を入力することから始めます。

名前:MuShopAppDestroy
[破棄]をクリックします
image.png

最後のステップは、[スタックの詳細]ページの[その他のアクション]ボタンをクリックしてスタックを削除することです。 [スタックの削除]をクリックし、モーダルウィンドウで[削除]をクリックして確認します。
ステータスが「成功」と表示されるまで待ってから続行してください。

image.png

さいごに

今回はリソース・マネージャのテンプレートからアーキテクチャを構築いたしましたが、GitLabと連携し、ローカルで編集したリソースから任意のアーキテクチャを構築することも可能です。
今回のように、サーバ上のアプリケーションを一緒にデプロイすることも可能です。

また、個別のサービスに対するOCI用のTerraformリファレンスは下記に用意されています。
Oracle Cloud Infrastructure Provider
https://registry.terraform.io/providers/oracle/oci/latest/docs
image.png
IaCによる構築、開発は運用コストを下げるだけではなく、開発の迅速性を向上させ、手作業による構築ミスを低減する効果もあります。
今回のような基本構成についてはスクリプトが公開されているので、汎用的なソースは踏襲し、ワークロードに合わせてプロパティ値をカスタマイズしていく開発方法でスモールスタートしていく方針がよいと考えています。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?