Software development of explosion! -夢の破片(カケラ)たちの日々-

ソフトウェア開発を中心としたコンピューター関連のネタを扱ったブログです

Software development is passion and explosion!

CDK for Terraform で Azure StaticSiteApps のアプリをデプロイした際のハマりどころメモ

純正 Provider の有無は CDKTF のプロバイダーから検索

https://github.com/orgs/cdktf/repositories?q=cdktf-provider-

下記ページのまんま(リンク抜粋してるだけだし)

Providers - CDK for Terraform | Terraform | HashiCorp Developer

各プロバイダーの API は HCL と同じ

どんな設定ができるか?だとか、HCLと VSCode の「定義へ移動」(F12) を使って調べればわかる。

Input Variables の使い方が謎

cdktf cli では、現時点では環境変数でしか指定できない。 というのは良いのだが、cdktf synth なり cdktf deploy なりする際に HCL 生成時にランダムで発行される XXXX が付いてしまう。 回避方法が不明なため、1 回はコケさせて XXXX を確認しないとダメそう。(それってどうなの?という感じがするのだが。。。)

サービスプリンシパルは Azure AD アプリ

そのまんま。アプリの登録から登録する。

サービスプリンシパル (アプリ) に ロールを割り当てる

learn.microsoft.com

これをしないと、

Cannnot register providers: Microsoft.TimeSeriesInsights. Errors were: Cannot register provider Microsoft.TimeSeriesInsights with Azure Resource Manager: resources.ProvidersClient#Register: Failure responding to request: StatusCode=403

やら

Unable to list provider registration status, it is possible that this is due to invalid credentials or the service principal does not have permission to use the Resource Manager API, Azure error: resources.ProvidersClient#List: Failure sending request: StatusCode=0

やら、ログ取り忘れたけど ResourceGroup 作成や ResourceManager API のアクセス権限が無いと怒られる。(与えてないから当然なのだが)

GitHub Actions から OIDC を使うための Azure の設定

learn.microsoft.com

単純に、どこだっけ?となるのでメモ。

stdin が無いと怒られたりするので CDKTF Action を使いましょう

https://github.com/hashicorp/terraform-cdk-action

こんなエラーが出る。

Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.
Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported

tfstate の管理

Terraform Cloud を使うなり、AWS S3 なり外部に保存しておいて、毎回、落としてきて使う。変更があったら更新する。をしないとダメそう。(Terraform の宿命だろうけど)

作ったもの

https://github.com/poad/azure-examples