在中文中,可以这样表达:“开始使用terraform进行环境搭建。”
【环境】- 环境
ProductName: macOS
ProductVersion: 11.3
从brew安装(tfenv)。
$ brew install tfenv
确认版本
$ tfenv --version
tfenv 2.1.0
确认可安装的版本
$ tfenv list-remote
0.15.3
・
・
・
0.1.0
安装多个Terraform版本。
$ tfenv install 0.15.3
$ tfenv install 0.15.2
#tfenv 0.15.3 インストール
~$ tfenv install 0.15.3
Installing Terraform v0.15.3
Downloading release tarball from https://releases.hashicorp.com/terraform/0.15.3/terraform_0.15.3_darwin_amd64.zip
######################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.15.3/terraform_0.15.3_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
Archive: tfenv_download.SuqcbJ/terraform_0.15.3_darwin_amd64.zip
inflating: /usr/local/Cellar/tfenv/2.1.0/versions/0.15.3/terraform
Installation of terraform v0.15.3 successful. To make this your default version, run 'tfenv use 0.15.3'
##tfenv 0.15.2 インストール
$ tfenv install 0.15.2
Installing Terraform v0.15.2
Downloading release tarball from https://releases.hashicorp.com/terraform/0.15.2/terraform_0.15.2_darwin_amd64.zip
######################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.15.2/terraform_0.15.2_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
Archive: tfenv_download.vGB3t7/terraform_0.15.2_darwin_amd64.zip
inflating: /usr/local/Cellar/tfenv/2.1.0/versions/0.15.2/terraform
Installation of terraform v0.15.2 successful. To make this your default version, run 'tfenv use 0.15.2'
如果继续这样下去,最后安装的版本0.15.2将被选中。
由于我想要使用0.15.3版本,所以需要切换版本。
% tfenv use 0.15.3
Switching default version to v0.15.3
Switching completed
$ tfenv list
* 0.15.3 (set by /usr/local/Cellar/tfenv/2.1.0/version)
0.15.2
git-secrets的配置
安装Git
$ git init
在整个代码库中设置AWS认证信息的模式。
$ git secrets --register-aws --global
Git秘密設置
在整个代码库中设置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
在AWS官方文件中,允许是指用于管理AWS访问密钥的最佳实践中所提到的示例密钥。
确认动作
-
- AWS認証情報が記載されていた場合に、Gitのコミットを防ぐことができるのかを確認
- まずはテスト用のディレクトリを作成し、移動する
$ mkdir aws-secrets-test
$ cd aws-secrets-test
-
- テスト用の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环境的内容。
参考资料(非常感谢您!)
-
- 【初心者向け】MacにTerraform環境を導入してみた
-
- Terraform職人入門: 日々の運用で学んだ知見を淡々とまとめる
- LocalStackに向けてTerraformを実行する