tfnotify@自動レビューツール¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. tfnotifyとは¶
terraform
コマンドの処理結果を、レビューコメントとしてGitHubにPOSTで送信する。
URLや送信内容を設定ファイルで定義する。
CircleCIで利用する場合は、ダウンロードしたtfnotifyのバイナリファイルを実行する。
環境別にtfnotifyを配置しておくと良い。
tfnotifyをより強化したtfcmtというツールがある。
tfnotifyもtfcmtもGitHubのAPIにしかサポートしておらず、GitLabの場合はtfcmt-gitlabを使用すると良い。
02. コマンド¶
--config¶
設定ファイルを使用して、tfnotifyを実行する。
*実装例*
#!/bin/bash
set -xeuo pipefail
terraform -chdir=./"${ENV}" plan \
-out="${ENV}".tfplan \
-parallelism=30 | ./ops/tfnotify --config ./"${ENV}"/tfnotify.yml plan
#!/bin/bash
set -xeuo pipefail
# 認証情報を出力する
source ./aws_envs.sh
terraform -chdir=./"${ENV}" apply \
-parallelism=30 \
"${ENV}".tfplan | ./ops/tfnotify --config ./"${ENV}"/tfnotify.yml apply
03. tfnotify.yml
ファイル¶
ci¶
使用するCIツールを設定する。
# https://github.com/mercari/tfnotify
---
ci: circleci
notifier¶
リポジトリに通知をPOST送信できるように、認証情報を設定する。
# https://github.com/mercari/tfnotify
---
notifier:
github:
# 環境変数に登録したパーソナルアクセストークン
token: $GITHUB_TOKEN
repository:
# 宛先のユーザー名もしくは組織名
owner: "foo-company"
name: "foo-repository"
terraform¶
通知内容を設定する。
# https://github.com/mercari/tfnotify
---
terraform:
plan:
template: |
{{ .Title }} for staging <sup>[CI link]( {{ .Link }} )</sup>
{{ .Message }}
{{ if .Result }}
<pre><code> {{ .Result }}
</pre></code>
{{end}}
<details><summary>Details (Click me)</summary>
<pre><code> {{ .Body }}
</pre></code></details>
apply:
template: |
{{ .Title }}
{{ .Message }}
{{ if .Result }}
<pre><code>{{ .Result }}
</pre></code>
{{end}}
<details><summary>Details (Click me)</summary>
<pre><code>{{ .Body }}
</pre></code></details>