Open5
AIを使わずに terraform show -json の結果を使ってパラメータシートを作る
ペルソナ
パラメータシートを見たい人
Terraformコードを見る人Terraformのplan結果を見る人AWSマネコンを見る人aws-cliを使って値を取る人- 提供されたインフラの情報を見る人 ←
- AWSへのアクセス権限がない、もしくは限定的
- 払い出されたリソースのみを見るが、何が払い出されたかは教えてもらわないとわからない人
- 権限が絞られている開発チーム、設計をレビューする人
- TerraformコードのリポジトリやAWSマネコンへのアクス権限がないトラブルシュートする人
実装アイデア
- terraform-provider-aws を読んでリソース情報を取得する
- この辺を使ってAWSサービスのカテゴライズする
- こういうのを使ってアトリビュートの情報を取得する
- 下記のようなテンプレ作ってぐるぐる回す。情報があるものだけ出力する。列はアトリビュートを使う。
# Terraform パラメータシート
{{- range $cat, $resList := .Groups }}
## {{ $cat }} リソース
| リソースアドレス | パラメータ | 値 |
|-----------------|-----------|-----|
{{- range $res := $resList }}
{{- range $k, $v := $res.Values }}
| {{ $res.Address }} | {{ $k }} | {{ printf "%v" $v }} |
{{- end }}
{{- end }}
{{ end -}}
出力形式はAWSマネコンに寄せたい。
単純に表形式にするのでなく、ものによって別の表示形式にもしたい。
そうすると、リソース単位で表現形式をテンプレとして定義する必要がありそう。
デフォルトのテンプレはツール側で用意するが、利用者も定義できるようにしたい。
定義するためのリソースIDみたいなものが必要になりそう。
リソースIDは terraform-provider-aws の情報を使うので、そこの情報を分かりやすく出力する仕組みが必要そう。
hashicorp/terraform-provider-aws/internal/service/${service_name}/
の単位でフォルダを作成し、その中にテンプレを用意する必要がありそう。
横一列の表形式、縦に二行の表形式の2パターンで良いかも?
そこを制御して、より上位のテンプレに差し込む感じか?
そしたら、個別フォルダにテンプレは不要で、関数だけあれば良さそう。