【初心者向け】MacにTerraform環境を導入してみた
こんにちは!コンサル部のinomaso(@inomasosan)です。
AWS環境構築でTerraformを入社前から使用していたのですが、改めて新規環境を導入した際に意外と手こずってしまったので、備忘も兼ねてブログに手順を残すことにしました。
環境
- macOS Catalina 10.15.7
- Homebrew 2.7.3
tfenv設定
tfenvはTerraformのバージョンマネージャーです。
Terraformは頻繁にアップデートがあるため、バージョンを簡単に切り替えられるようにします。
1. tfenvインストール
Homebrewでtfenvをインストールします。
% brew install tfenv
インストール後に、バージョン確認してみましょう。
% tfenv --version
2. 複数のTerraformバージョンインストール
インストール可能なバージョン一覧を確認します。
% tfenv list-remote
今回は2021年1月時点でGAされている最新の0.14.4と、一つ前の0.13.6をインストールします。
% tfenv install 0.14.4 % tfenv install 0.13.6
このままだと、最後にインストールした0.13.6が選択されてしまいます。
0.14.4を使用したいので、バージョンを切り替えます。
% tfenv use 0.14.4 Switching default version to v0.14.4 Switching completed
バージョン確認コマンドを実行してみましょう。 使用したいバージョンの先頭に「*」が表示されていればOKです。
% tfenv list * 0.14.4 (set by /usr/local/Cellar/tfenv/2.0.0/version) 0.13.6
git-secrets設定
Gitでコード管理する場合、AWSの認証情報を誤って公開してしまうと不正アクセスされる危険性があります。 git-secretsを導入しておくと、Gitで認証情報を誤ったコミットを防ぐことができます。
1. Gitインストール
Gitが未インストールであれば、以下のコマンドを実行します。
% brew install git
インストール後に、バージョン確認してみましょう。
% git --version
2. git-secrets設定
git-secretsが未インストールであれば、以下のコマンドを実行します。
% brew install git-secrets
全リポジトリにAWS認証情報のパターンを設定します。
% git secrets --register-aws --global
設定ファイルの内容を確認してみましょう。
% cat ~/.gitconfig [secrets] providers = git secrets --aws-provider patterns = (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16} patterns = (\"|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key aws_access_key_id = "AKIAIOSFODNN7EXAMPLE" |Key)(\"|')?\\s*(:|=>|=)\\s*(\"|')?[A-Za-z0-9/\\+=]{40}(\"|')? patterns = (\"|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?(\"|')?\\s*(:|=>|=)\\s*(\"|')?[0-9]{4}\\-?[0-9]{4}\\-?[0-9]{4}(\"|')? allowed = AKIAIOSFODNN7EXAMPLE allowed = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
allowedはAWS公式ドキュメントのAWS アクセスキーを管理するためのベストプラクティスに記載されている、サンプルキーのようです。
新規リポジトリ作成時に、git-secretsがインストールされるよう設定します。
% git secrets --install ~/.git-templates/secrets % git config --global init.templatedir '~/.git-templates/secrets'
3. 動作確認
AWS認証情報が記載されていた場合に、Gitのコミットを防ぐことができるのかを確認します。
まずはテスト用のディレクトリを作成し、移動します。
% mkdir aws-secrets-test % cd aws-secrets-test
Gitの新規リポジトリを作成します。
% git init
テスト用のAWS認証情報は~/.gitconfig
のallowed
のサンプルキーを参考にします。
数字の部分を7から8に変更してmain.tf
を作成しましょう。
% echo "aws_access_key_id = \"AKIAIOSFODNN8EXAMPLE\"\naws_secret_access_key = \"wJalrXUtnFEMI/K8MDENG/bPxRfiCYEXAMPLEKEY\"" > main.tf
main.tf
をコミット対象にします。
% git add main.tf
Gitにコミットしてエラーになることを確認します。
% git commit -m "secrets test" main.tf:1:aws_access_key_id = "AKIAIOSFODNN8EXAMPLE" main.tf:2:aws_secret_access_key = "wJalrXUtnFEMI/K8MDENG/bPxRfiCYEXAMPLEKEY" [ERROR] Matched one or more prohibited patterns Possible mitigations: - Mark false positives as allowed using: git config --add secrets.allowed ... - Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory - List your configured patterns: git config --get-all secrets.patterns - List your configured allowed patterns: git config --get-all secrets.allowed - List your configured allowed patterns in .gitallowed at repository's root directory
まとめ
以上、Terraform環境導入のまとめでした。
この記事が、どなたかのお役に立てば幸いです。それでは!