学习Terraform入门时一边创建一边记忆(1)-安装和初始设置
开始学习云计算不久后,我了解到可以将基础架构编码化。这就是所谓的基础架构即代码(IaC)方法。
如果使用IaC工具,有很多选择。
如果使用AWS,可选择CloudFormation;如果使用Azure,可选择ARMTemplate;
而支持多云环境的IaC工具是HashiCorp公司的Terraform。
因为我之前有一些简单的接触,现在重新学习Terraform并且积累了一些经验,所以我想以教程的形式总结一下。我决定以使用AWSCLI创建的环境作为主题,在Terraform中重新创建这个环境,以便学习。
边制作边学习Terraform入门系列
-
- 安装和初始设置 => 这次是这个
-
- 基本部分
-
- VPC部分
-
- EC2部分
-
- Route53 + ACM部分
-
- ELB部分
- RDS部分
系统配置
以下是包括ELB、EC2、RDS等常见三层架构的配置。
源代码如下。
环境
-
- macOS BigSur 11.3.1
- Homebrew 3.1.9
在中文中原生地的释义是”安装Terraform”。
你可以很容易地通过Homebrew进行安装。
brew install terraform
已经安装了最新版本0.15.5,该版本位于/usr/local/bin/中,所以无需设置环境变量路径。
terraform --version
Terraform v0.15.5
顺便提一下,您也可以使用tfenv进行安装。
使用tfenv可以方便地切换多个版本,也便于在团队开发中固定版本。不过,由于通过tfenv执行terraform命令较慢,所以目前我暂时不使用^^;
# tfenvのインストール
brew install tfenv
# tfenvを使ってterraformをインストール
tfenv install 0.15.4
tfenv install 0.15.5
# デフォルトバージョンを指定
tfenv use 0.15.4
# 一覧を表示(0.15.4を使う設定になっている)
tfenv list
0.15.5
* 0.15.4 (set by /usr/local/Cellar/tfenv/2.2.2/version)
# バージョン確認
terraform --version
Terraform v0.15.4
# バージョン切り替え
tfenv use 0.15.5
# バージョンが切り替わった
tfenv list
* 0.15.5 (set by /usr/local/Cellar/tfenv/2.2.2/version)
0.15.4
# バージョン確認
terraform --version
Terraform v0.15.5
如果你使用tfenv,你可以在当前目录下创建一个名为.terraform-version的文件,并在其中写下需要使用的版本,这样就可以强制使用指定的版本。使用tfenv install命令(无参数)也可以直接安装指定的版本。
0.15.5
Visual Studio Code的擴充功能
我已经安装了以下两个软件。
-
- HashiCorp Terraform
- Terraform Autocomplete
在「HashiCorp Terraform」中,可以进行语法检查、语法高亮显示和候选项显示。如果想要跳转到参考资料,可以尝试使用「Terraform Autocomplete」,它似乎非常方便,所以我正在试验性地使用它。
此外,在链接页面中也已经指出,HashiCorp Terraform具有自动格式化功能,因此,添加”editor.formatOnSave”: true并启用它会很方便。它可以在保存时自动整理缩进。
格式化
为了启用格式化,请将以下内容添加到Terraform扩展的扩展设置中。
"[terraform]": {
"editor.formatOnSave": true
}
设置别名
开始使用Terraform后,您将频繁输入以下命令:
-
- terraform plan
-
- terraform apply
- terraform destroy
由于每次都输入 “terraform” 很麻烦,所以在 .zshrc 中注册别名会很方便。
alias tf="terraform"
alias tfp="terraform plan"
alias tfv="terraform validate"
alias tff="terraform fmt -recursive"
alias tfa="terraform apply -auto-approve"
alias tfd="terraform destroy -auto-approve"
apply和destroy是用于创建、更新和删除的命令。
由于添加了-auto-approve选项,您不需要输入yes/no进行确认,但在实际工作中使用此选项非常危险,因此根据需要进行删减。在熟练之前,最好不要使用别名手动输入,并在确认计划结果后进行yes/no的确认。
安装git-secrets
使用Terraform访问AWS之前,您需要先注册身份验证信息。有几种定义身份验证信息的方法,但为了避免将这些敏感信息错误地包含在Git源码管理中,建议先安装git-secrets软件。
# インストール
brew install git-secrets
# git-secretsの設定
git secrets --register-aws --global
git secrets --install ~/.git-templates/git-secrets
git config --global init.templatedir '~/.git-templates/git-secrets'
安装AWSCLI
为了注册访问AWS的认证信息,需要安装AWSCLI。您可以从官方页面的”MacOS”链接中下载PKG并进行安装。
如果成功安装了AWSCLI,我们要注册IAM用户的访问密钥。
根据该用户的访问权限,会使用Terraform来创建、更新、删除资源等操作,通常会创建一个具有AdministratorAccess权限的用户并分配给他。
aws configure set aws_access_key_id <アクセスキーID>
aws configure set aws_secret_access_key <シークレットアクセスキー>
请确认 ~/.aws/credentials 文件中已经注册了认证信息。
[default]
aws_access_key_id = <アクセスキーID>
aws_secret_access_key = <シークレットアクセスキー>
我将尝试进行操作确认。
请执行下面的命令,如果能显示出所使用的IAM用户的信息,那就可以了。
aws sts get-caller-identity
{
"UserId": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
"Account": "123456789012",
"Arn": "arn:aws:iam::123456789012:user/terraform"
}
我准备好了使用Terraform。
下次,我想通过创建和删除VPC命令来介绍Terraform的基本用法!
请参考以下链接。
AWS コマンドラインインターフェイス
【初心者向け】MacにTerraform環境を導入してみた