前回までの流れ
以前の記事でひとまずローカルで回せるプログラムはできました。
terraformをパースして自動で命名規則等のアラートを出したい!
今回はレビューの設定を書くyamlを綺麗にしていこうと思います!!
どのようなレビューにしたいか
テストは主に以下の二つ(否定形も含む)
- 存在チェック
- **が存在しているか
- 内容チェック
- **の値が**か
- **の値が特定の正規表現にあっているか
そしてそれらが条件で繋げられるようにしたい
(例:policy_documentの名前が .*_secret
の時に condition
が存在しているかどうか)
実際のyamlの形式
s3.yaml
aws_s3_bucket:
-
title: description_checker
description: simple existance checker
mode: existance
key: description
-
title: private_checker
description: simple value checker
mode: value
key: acl
value: private
-
title: bucket_checker
description: simple value regex checker
mode: value
key: bucket
value: .*-tf-review-bucket.*
-
title: tag_checker
description: nested value checker
mode: nested
key: tags
nest:
-
title: name_checker
description: nested value checker
mode: value
key: Name
value: .*-tf-review-bucket.*
-
title: env_checker
description: nested value checker
mode: value
key: Env
value: (dev|stg|prd)
-
title: if_checker
mode: if
key: logging
nest:
title: name_checker
mode: existance
key: lifecycle_rule
terraformのコードは docker run
のマウントで設定
tf_auto_reviewer
以下のコマンドで実行することでテスト対象を設定できるように変更しました。
docker run -v `pwd`/${TF_ROOT_PATH}:/tmp/terraform
これであとはciで動的に設定できれば簡単なテストは実行できそう
今後やりたきこと
ログも綺麗にしてかなりいい感じになってきたので、
次は実際のデプロイフローに組み込みたい。。。
- yamlが否定形に対応できるように変更
- globがなぜか再帰的に見てくれないところを直す
- jenkinsで自動的にreviewしてくれるようにする