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 アプリ
そのまんま。アプリの登録から登録する。
サービスプリンシパル (アプリ) に ロールを割り当てる
これをしないと、
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 の設定
単純に、どこだっけ?となるのでメモ。
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 の宿命だろうけど)