Open5

AIを使わずに terraform show -json の結果を使ってパラメータシートを作る

anfangdanfangd

ペルソナ

パラメータシートを見たい人

  1. Terraformコードを見る人
  2. Terraformのplan結果を見る人
  3. AWSマネコンを見る人
  4. aws-cliを使って値を取る人
  5. 提供されたインフラの情報を見る人 ←
    1. AWSへのアクセス権限がない、もしくは限定的
    2. 払い出されたリソースのみを見るが、何が払い出されたかは教えてもらわないとわからない人
      1. 権限が絞られている開発チーム、設計をレビューする人
    3. TerraformコードのリポジトリやAWSマネコンへのアクス権限がないトラブルシュートする人
anfangdanfangd

実装アイデア

  • 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 -}}

anfangdanfangd

出力形式はAWSマネコンに寄せたい。
単純に表形式にするのでなく、ものによって別の表示形式にもしたい。
そうすると、リソース単位で表現形式をテンプレとして定義する必要がありそう。

anfangdanfangd

デフォルトのテンプレはツール側で用意するが、利用者も定義できるようにしたい。
定義するためのリソースIDみたいなものが必要になりそう。
リソースIDは terraform-provider-aws の情報を使うので、そこの情報を分かりやすく出力する仕組みが必要そう。

anfangdanfangd

hashicorp/terraform-provider-aws/internal/service/${service_name}/ の単位でフォルダを作成し、その中にテンプレを用意する必要がありそう。

横一列の表形式、縦に二行の表形式の2パターンで良いかも?

そこを制御して、より上位のテンプレに差し込む感じか?

そしたら、個別フォルダにテンプレは不要で、関数だけあれば良さそう。