使用Terraform的方法学习(第一步:使用tfenv安装Terraform)

首先

因为下一份工作要使用Terraform,所以我打算把它整理起来进行学习。

    【次】Terraformを使って覚える。(その2:git-secretsとVS Codeのインストール)

我的技能感

以前, 我曾学习过CloudFormation并写了一些相关文章,但对于Terraform只是稍微接触过一下,现在已经完全忘记了,所以我打算重新学习一下。

    CloudFormationをゼロから勉強する。(その1:前準備)

Terraform是什么

HashiCorp提供的工具是一种称为IaC(基础设施即代码)的工具,用于通过代码管理基础设施环境。

CloudFormation虽然也是一种类似的工具,但CloudFormation仅针对AWS环境的构建,而Terraform是一个可以在AWS、GCP和Azure等多个平台使用的工具。

此外,与CloudFormation类似,由于需要构建各种云基础设施服务,因此在进行服务器配置等操作时,需要使用Ansible等工具。

提供给你参考的教材

由于仅靠自学很困难,所以我想参考以下内容,系统地学习一下。

「实践Terraform」是我之前买来并开始使用但中途搁置的内容。而「通过AWS和Terraform实现基础设施即代码」是因为正好在Udemy打折销售,所以我买了下来。

    • 実践Terraform AWSにおけるシステム設計とベストプラクティス

 

    AWSとTerraformで実現するInfrastructure as Code

准备安装Terraform

这次我想考虑以下环境并进行安装尝试。

種別内容OSWindows 11 HomeアーキテクチャAMD Ryzen 7 3700U基盤環境Amazon Web Service

在安装Terraform之前,我们需要先准备好相关的功能和周边设置。

    1. 安装 Terraform 创建 IAM 用户

 

    1. 安装 AWS CLI

 

    1. 为 Terraform 创建用户配置文件到 AWS CLI

 

    安装 Git

上述的1至3是为了在Terraform中操作AWS环境而需要创建和操作专用用户所必需的AWS CLI安装与设置。第4步是为了使用Terraform的源代码管理以及使用后面提到的tfenv时想要使用包含在Git软件包中的Git Bash,因此需要进行Git的安装。

创建 IAM 用户 使用 Terraform

为了用于Terraform的执行,请在AWS的IAM中创建以下Terraform用户。

在实际运营环境中,需要严格设置权限,但由于本次目的是学习Terraform,我们将直接分配AdministratorAccess管理策略。

設定項目設定内容ユーザー名terraformAWS認証情報タイプを選択アクセスキー – プログラムによるアクセス既存のポリシーを直接アタッチAdministratorAccessタグ未設定

在创建IAM用户之后,我们需要从所创建用户的“认证信息”选项卡中获取访问密钥,并将其保存为CSV文件或其他格式。

安装AWS CLI

只需从AWS提供的以下在线手册中下载并运行面向Windows的安装程序。

    AWS CLI の最新バージョンをインストールまたは更新します。

如果在安装完成后,在PowerShell或命令提示符等中显示如下内容,则表示正常。

aws --version
aws-cli/2.7.10 Python/3.9.11 Windows/10 exe/AMD64 prompt/off

创建用于Terraform的AWS CLI用户配置文件。

使用刚刚获取的访问密钥,使用AWS CLI创建一个用于Terraform的用户配置文件。

通过PowerShell执行aws configure命令,按照以下方式进行注册。

aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Default region name [None]: ap-northeast-1
Default output format [None]: json

如果已经存在其他用户配置文件,请按照以下指南创建另一个配置文件。

    AWS CLIで複数アカウントを使い分ける。

安装Git

您只需要从以下下载页面下载Windows版本的Git,然后运行安装程序即可。

在安装过程中,会询问一些问题,但即使选择默认设置也没有问题。

    Git Downloads

安装Terraform

我打算使用一个名为tfenv的工具来安装Terraform。

tfenv是一个工具,可以安装并切换多个版本的Terraform进行使用。

Terraform经常进行版本升级,有时由于版本更改了语法而无法正常运行。在这种情况下,可以使用tfenv切换版本进行操作。

由于本次的目的是学习如何使用Terraform,所以不需要安装tfenv,但实际运用中经常会用到,所以我计划借此机会尝试使用tfenv。

    1. 安装tfenv

 

    1. 设置tfenv使用的环境变量

 

    使用tfenv安装Terraform

请注意,以下提供了关于没有使用 tfenv 进行 Terraform 安装的补充说明。如果您不使用 tfenv,请参考以下补充内容。

    1. 【補充】非使用tfenv進行Terraform的安裝

 

    【補充】從命令行設定Terraform使用的環境變數的永久設定

安装tfenv

tfenv的安装和初始设置是从之前安装的Git Bash克隆以下tfenv的GitHub,然后设置环境变量以配置tfenv路径的流程。

使用Git Bash从GitHub上下载并执行以下内容。

另外,在以下情况下会在「C:\Users\[用户名]」创建一个名为「.tfenv」的文件夹,并将克隆的文件存放其中。如果您想将其存放在其他位置,请更改路径。

git clone https://github.com/tfutils/tfenv.git .tfenv

使用环境变量设置tfenv

为了将tfenv命令添加到路径中,我们需要在主目录(C:\Users\[用户名])创建一个名为“.bashrc”的文件,并进行PATH环境变量的设置。

听说路径无法设置为Windows格式,所以要进行以下转换。

    • 【変換前】:C:\Users\UserName.tfenv\bin

 

    【変換後】:/c/Users/UserName/.tfenv/bin

此外,以下部分我们使用了Here Document来进行设置,但是如果直接执行的话,$PATH会被解析为变量。因此,我们需要用单引号或双引号将_EOF_包裹起来。

cat << "_EOF_" >> .bashrc
export PATH=$PATH:/c/Users/UserName/.tfenv/bin
_EOF_

一旦成功创建了.bashrc文件,可以使用source命令来加载该文件。

source .bashrc

使用tfenv来安装Terraform。

使用tfenv命令来下载和安装Terraform。

要使用tfenv来确认可安装的Terraform版本,请执行以下命令。

tfenv list-remote

然后,将显示可以安装的Terraform版本,请记下要安装的版本。

1.3.0-alpha20220622
1.3.0-alpha20220608
1.2.3
1.2.2
(省略)

我打算在写这篇文章时,安装最新的稳定版本”1.2.3″。

tfenv install 1.2.3

使用tfenv命令可以安装指定版本的Terraform,但是在使用tfenv的情况下,需要指定要使用哪个版本,因为它会从已安装在终端的版本中选择。可以使用tfenv use命令指定。

tfenv use 1.2.3

为了确认当前使用的版本,请执行tfenv list命令。

在命令结果中,以“*”开头的版本是当前使用的版本。

tfenv list
* 1.2.3 (set by /c/Users/UserName/.tfenv/version)

如果安装的版本已指定为“*”,则安装完成。

【附注】不使用tfenv的Terraform安装方法

如果不使用tfenv,我也会提供关于Terraform安装方法的补充说明。

只需要从HashiCorp的下载页面下载文件并将其存放在任意位置,然后运行即可完成Windows版的安装。

    Download Terraform

然而,仅仅将它放置在一个随意的位置并不能让路径通畅,所以还需要进行环境变量的设置。

从命令中设置Terraform环境变量的持久化配置。

尽管可以通过GUI画面进行设置,但我打算使用PowerShell进行设置。

由于此处已经介绍了通过命令设置环境变量的方法,所以只列出了如何将永久设置添加到用户变量的路径。

    コマンド操作でWindowsの環境変数を設定する。

我們可以使用以下命令來確認設定之前的設定。

[System.Environment]::GetEnvironmentVariable('PATH' , 'User')

为了向环境变量PATH添加路径,必须在现有设置之后进行追加,因此有点麻烦。但我们可以创建一个临时变量,将结果合并在一起来完成。

$path = [System.Environment]::GetEnvironmentVariable('PATH' , 'User')
$path += ';' + 'C:\Users\UserName\Documents\terraform_1.2.3_windows_amd64'
[System.Environment]::SetEnvironmentVariable('PATH' , $path , 'User')

关闭 PowerShell 后,再次打开,并且能够成功执行以下命令且无需指定路径。

terraform.exe --version
Terraform v1.2.3
on windows_amd64

最后

本次安装了tfenv和Terraform在Windows上,并进行了初始设置。

我打算在下次开发时进行所需工具的安装和设置。