1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

インフラをオートレビューしたい!!(terraform)

Last updated at Posted at 2018-09-23

前回までの流れ

以前の記事でひとまずローカルで回せるプログラムはできました。
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してくれるようにする
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?