Skip to content
This repository has been archived by the owner on Feb 19, 2021. It is now read-only.

Latest commit

 

History

History
55 lines (41 loc) · 4.01 KB

Readme.md

File metadata and controls

55 lines (41 loc) · 4.01 KB

Infrastructure デプロイメントスクリプト

COVID-19Radar プロジェクトに必要なリソースをプロビジョニングするスクリプトです。

インストールされるリソース

  • Storage Account (terraform state の管理用)
  • CosmosDB
  • Notification Hub
  • Application Insights
  • Azure Functions

CosmosDB, NotificationHub の PrimaryKey及び、Application Insgihts の INSTRUMENTATION_KEYは自動で、Azure Functions の AppSettingsに保存されます。

前提条件

リソースのdeploy

terraform state 格納用の Storage Account をプロビジョンする

リソースをdeployする前に、terraform の stateをメンバーとシェアするための Storage Account とコンテナをする必要があります。スクリプトが01_initの下に用意していますので、実行してください。これは、各人が実行する必要はなく、環境に付き1回実行するだけで結構です。

$ cd infrastructure/01_init
$ az login
$ az account set --subscription="<YOUR_SUBSCRIPTION_ID>"
$ terraform init -backend=true -backend-config=storage_account_name=<01_Init_STORAGE_ACCOUNT_NAME>
$ terraform validate
$ terraform apply -auto-approve

解説すると、この terraform スクリプトは、Azure CLIのログイン情報を使って認証します。最初に Azure CLIでログインした後、terraform のコマンドを実行します。CloudShellを使っている場合は必要ありません。  terraform init は terraform の環境を初期化します。プロバイダをダウンロードしたります。 terraform validateにより terraform のファイルに対して静的解析を実施します。もし、warningが出た場合は指示にしたがって修正してください。最後に、terraform applyにより実際に環境が構築されます。スクリプトに修正を加えた時は、terraform planで変更点を確認して、terraform applyを実行してください。インフラストラクチャが必要なもののみ変更されます。このインフラの状態は、ステートファイルと呼ばれるファイル.terraform以下に配置されて、保存されます。

Runtime 環境の構築

すでに、az loginを実行している前提で説明いたします。02_runtime には、環境を構築するスクリプトが含まれています。CosmosDB, NotificationHub, ApplicationInsights, Function Appが自動で作成せれ、コンフィグレーションされます。 01_initとの違いは、terraform initの箇所です。backend-configが指定されています。01_initの時は、terraform のステートファイルが、ローカルに保存されましたが、今回は01_initで作成された Storage Account の blob に保存されるようになっています。それにより、他の人とステートのシェアが可能になります。後は、下記のコマンドを実行して、環境構築を行ってください。

$ cd ..
$ cd 02_runtime
$ terraform init -backend=true -backend-config=storage_account_name=<01_Init_STORAGE_ACCOUNT_NAME>
$ terraform validate
$ terraform apply -auto-approve

設定変更したいときは?

variables.tfに初期設定の変数が格納されています。いくつかの変数は、プレフィックスの扱いで、ランダムの変数が追加されます。Azureのリソースは、名前がGlobalユニークである必要のあるリソースがいくつかあるので、名前がダブらないように、そのような挙動になっています。

おわりに

よい terraform ライフを。