Alibaba Cloud サーバレスで作るTerraform実行ポータル【前編】

2023年3月30日掲載

キービジュアル

皆さまこんにちは、ソフトバンクの周です。

この記事では非エンジニアの方々でも使えるTerraform実行ポータルを作ってみましたのでご紹介させていただきます。

目次

パブリッククラウドを取り扱う中で、同様の構成を顧客に素早く納品したい、ステージングやテスト用に同様の環境がほしい、などのご要望をしばしば耳にします。クラウドが当たり前になってきた昨今、QCD(品質、コスト、デリバリー)を高めることは組織の生産性を向上させるためには必要不可欠です。

一方、TerraformなどのIaC管理ツールを使用して自動化する場合、環境のキッティングであったり、ツールへの理解が求められます。

本記事では、Alibaba Cloudの各プロダクトを使用して、"実行者がキッティングなしでどなたでも簡単に環境をデプロイできる" Terraform実行ポータルの作り方をご紹介させていただきます。

 

本記事は"Alibaba Cloud サーバレスで作るTerraform実行ポータル"記事の前編になります。後編記事もあわせてご覧下さい。

Alibaba Cloud サービスのご紹介

ObjectStorageService(OSS)

Object Storage Service (OSS) は、Alibaba Cloud によって提供されている、安全で費用対効果が高く、耐久性に優れたクラウドストレージサービスです。 99.9999999999%のデータ耐久性 (設計上) と 99.995% のサービス可用性を提供できます。

Alibaba Cloud が提供するストレージサービスです。

 

FunctionCompute(FC)

Function Compute は、イベント駆動型のフルマネージドコンピューティングサービスです。Function Compute を使用すると、管理や O&M を考慮することなく、あらゆる種類のアプリケーションやサービスをすばやく構築できます。

Alibaba Cloud が提供するサーバーレスコンピューティングサービスです。

 

ContainerRegistry(ACR)

Container Registryは安全にイメージを管理し、グローバルのリージョン全体で安定したイメージビルドを作成し、簡単に権限を管理できます。イメージレジストリの作成とメンテナンスを簡素化し、複数リージョンでのイメージ管理をサポートします。

Alibaba Cloud が提供するコンテナレジストリサービスです。

アプリケーションイメージ

完成したアプリケーションは以下になります。

デプロイしたい環境のアクセスキー、シークレットキーを入力することで任意のAlibabaアカウントに環境をデプロイすることができます。

またデプロイしたstateファイルはOSSバケットに保持しているおり、同じアクセスキーであれば、環境の削除も可能です。

実行後のキャプチャは以下になります。

インフラの準備

ObjectStorageService(OSS)構築

まずはOSSの作成になります。OSSは3つの目的のために使用します。

  • フロントエンドアプリケーション(SPA)のホスト
  • バックエンドに使用するterraform変数ファイル.tfvarsの格納
  • 各環境のデプロイ状態を保持するterraform stateファイルの格納

本記事では用途別にそれぞれバケットを作成します。手順は下記の通りです。

  1. Alibabaクラウドコンソールにログインし、プロダクト一覧より「Object Storage Service」を選択します。
  2. バケットリストから「バケットの作成」ボタンを押下し、それぞれのバケットを3つ作成します。

※バケット名は任意です。リージョンやその他のパラメータも要件に合わせて変更してください。デフォルト値でも問題ありません。

※本記事では便宜上、「frontend-bucket-01」、「backend-bucket-02」、「state-bucket-03」とそれぞれ命名します。

Function Compute(FC)構築

続いて、Function Computeの構築をしていきます。

Function ComputeはフロントエンドからAPIコールされた際、terraformを実行するために使用します。仮想サーバではなくサーバレスを選択した理由は、1. サーバの設定や管理が不要、2. コスト面で優れているためです。

Fuction Computeでは1. 組み込みランタイム、2. カスタムランタイム、3. コンテナイメージの3つの実行環境が用意されています。本記事ではソースコードのポータビリティを考慮し、コンテナイメージとしてデプロイし作成していきます。

Function Computeでまずサービスを作成していきます。手順は下記の通りです。

  1. Alibabaクラウドコンソールのプロダクト一覧より「Function Compute」を選択します。
  2. 「サービスと機能」から「新しいの作成」ボタンを押下します。
  3. 「サービス名」を入力します。
  4. 「作成」ボタンを押下します。

※本記事では便宜上、backend-serviceと命名します。

※Log設定は必須ではありませんが、要件に応じて変更してください。

作成完了後、サービスの設定を変更していきます。

  1. 左メニューの「サービスの詳細」から、「設定」ボタンを押下します。
  2. 「ロールの設定」から「AliyunFCDefaultRolePolicy」を選択します。

「ストレージ設定」から「OSSのマウント」を有効化します。使用するパスはそれぞれ下記の通りです。

  1. バケット名: "backend-bucket-02"
  2. OSSアクセスアドレス: デフォルトのエンドポイント
  3. 関数ローカルディレクトリ: /app/backend (アプリケーション実行環境にマウントするパスです。)
  4. 関数ローカルディレクトリ権限: 読み取りと書き込み

「保存」ボタンを押下します。

 

続いて関数を作成していきます。

  1. 左メニューの「関数の管理」から、「関数の作成」を押下します。
  2. 「コンテナイメージを使い作成する」を選択します。
  3. 「基本設定」で下記の通り入力します。
  4. 関数名: 任意 (本記事では「backend-fc」とします。)
  5. Webサーバモード: はい
  6. リクエストタイプ: HTTPリクエスト
  7. 「イメージ設定」で下記の通り入力します。
  8. イメージ選択モード: サンプルイメージの使用

※その他の設定はデフォルトで構いません。

※関数を作成するため、一旦サンプルイメージを使用しています。記事後編で作成したDockerイメージをPush後、設定を変更します。

  1. 「トリガー設定」で下記の通り入力します。
  2. リクエストメソッド: POST
  3. インターネットアクセスURLの無効化: ×
  4. 認証方法: 認証不要
  5. 「作成」ボタンを押下します。

以上で、Function Computeの定義が完了しました。

AlibabaContainerRegistry(ACR)構築

続いて、Function Compute上で動かすためのDockerイメージを格納するコンテナレジストリを作成していきます。

<インスタンス作成>

  1. Alibabaクラウドコンソールのプロダクト一覧より「Function Compute」を選択します。
  2. 左メニューの「インスタンス」から、「インスタンスの作成」ボタンを押下します。
  3. Personal Editionインスタンスを選択し作成します。

※Enterprise Editionは高額なため、誤って選択しないようご注意ください。

<名前空間・リポジトリ作成>

  1. インスタンスを押下し、左メニューの「名前空間」から、「名前空間の作成」ボタンを押下します。
  2. 名前空間は任意名で入力します。(本記事では「portal-space」とします。)
  1. 左メニューの「リポジトリ」から、「リポジトリの作成」ボタンを押下します。
  2. リポジトリ情報はそれぞれ下記の通りです。
  3. 名前空間: portal-space (先ほど作成した名前空間)
  4. リポジトリ名: 任意 (本記事では「terraform-image」とします。)
  5. リポジトリタイプ: プライベート
  6. サマリー: 任意
  7. 「次へ」ボタンを押下します。
  8. 「ソースコード」で「ローカルリポジトリ」を選択します。
  9. 「リポジトリの作成」ボタンを押下します。

以上で全てのインフラ構築が完了になります。後編からアプリケーションの作成とデプロイを記載していきますので、よければ合わせてご覧ください。

続きは、後編記事で掲載していますので、是非ご覧下さい。

関連サービス

Alibaba Cloud

Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。

おすすめの記事

条件に該当するページがございません