はじめに
次の仕事でTerraform
を使うことになったため、勉強のためにまとめていこうと思います。
私のスキル感
以前、CloudFormation
は勉強して以下のような記事をいくつか書きましたが、Terraform
は以前気になって少し触ってみた程度で、もうすっかり忘れてしまったので改めて学びなおそうと思います。
Terraformとは
HashiCorp
が提供しているツールで、いわゆるインフラ環境をコードで管理するIaC
(Infrastructure as Code)と呼ばれるツールの一種となります。
CloudFormation
も同様のツールとなりますが、CloudFormation
がAWS環境の構築のみ対象としているのに対して、Terraform
はAWS
だけではなく、GCP
やAzure
でも使用できるツールとなります。
また、CloudFormation
と同様、各種クラウド基盤のサービス部分の構築を対象としているため、サーバの設定などを行う場合はAnsible
等のツールを利用する必要があります。
勉強のための参考書など
いきなり独学で覚えるのも大変なので、以下を参考に体系的に勉強してみようと思います。
「実践Terraform」は以前触ってみた際に買って途中までやって積んであったもの、「AWSとTerraformで実現するIaC」はちょうどUdemy
でセールになっていたのでポチったものです。
Terraformのインストール準備
今回は以下環境を想定してインストールしてみようと思います。
種別 | 内容 |
---|---|
OS | Windows 11 Home |
アーキテクチャ | AMD Ryzen 7 3700U |
基盤環境 | Amazon Web Service |
目的となるTerraform
をインストールする前に、前提となる機能や周辺設定を先に整えておきます。
- Terraform用IAMユーザ作成
- AWS CLIのインストール
- AWS CLIへのTerraform用ユーザプロファイル作成
- Gitのインストール
上記1~3はTerraform
からAWS
環境を操作するための専用ユーザ作成と操作に必要となるAWS CLI
のインストール&セットアップ、4はTerraform
のソースコード管理と、後述するtfenv
でGit
のパッケージに含まれるGit Bash
を使いたいためGit
のインストールを行います。
Terraform用IAMユーザ作成
Terraform
からの実行用として、AWSのIAMに以下Terraformユーザを作成しておきます。
実際の運用環境ではしっかりと権限設定する必要がありますが、今回はTerraform
の勉強が目的なのでAdministratorAccess
の管理ポリシーを直接割り当ててしまいます。
設定項目 | 設定内容 |
---|---|
ユーザー名 | terraform |
AWS認証情報タイプを選択 | アクセスキー - プログラムによるアクセス |
既存のポリシーを直接アタッチ | AdministratorAccess |
タグ | 未設定 |
IAMユーザ作成後、作成したユーザの「認証情報」タブからアクセスキーをCSVファイル等で取得しておきます。
AWS CLIのインストール
AWS
の以下オンラインマニュアルよりWindows用インストーラをダウンロードして実行するだけです。
インストール完了後、PowerShellやコマンドプロンプト等で以下のように表示されればOK。
aws --version
aws-cli/2.7.10 Python/3.9.11 Windows/10 exe/AMD64 prompt/off
AWS CLIへのTerraform用ユーザプロファイル作成
先ほど取得したアクセスキーを使い、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
尚、すでに別のユーザプロファイルが存在する場合は以下を参考に別のプロファイルを作成します。
Gitのインストール
Git
もWindows版は以下ダウンロードページよりWindows用インストーラをダウンロードして実行するだけです。
インストール時、色々と聞かれますが、そのままデフォルトでも問題ありません。
Terraformのインストール
今回はtfenv
というツールを使ってTerraform
をインストールしようと思います。
tfenv
とはTerraform
を複数バージョンインストールして、切り替えて使用できるツールです。
Terraform
は頻繁にバージョンアップが行われており、バージョンにより構文が変わってしまって動かないといったこともあるため、そのような場合、tfenv
でバージョンを切り替えて使用するといった運用を行うことができます。
今回の目的としてはTerraform
の使い方を覚えることなので、tfenv
はインストールしなくても良いですが、実際の運用では使われることも多いと思われるので、これを機にtfenv
も使ってみようと思います。
- tfenvのインストール
- tfenv用環境変数の設定
- tfenvを使用したTerraformのインストール
尚、tfenv
を使用しない場合のTerraform
インストール方法も補足として記載したため、tfenv
を使用しない場合は、以下の補足を確認してください。
- 【補足】tfenvを使用しないTerraformのインストール
- 【補足】コマンドからのTerraform用環境変数の永続設定
tfenvのインストール
tfenv
のインストール&初期セットアップは、先ほどインストールを行ったGit Bash
より以下tfenv
のGitHub
からClone、その後tfenv
のパスを設定するため環境変数の設定を行うといった流れとなります。
以下をGit Bash
から実行してGitHub
からダウンロードします。
なお、以下の場合「C:\Users\[ユーザ名]」に「.tfenv」というフォルダが作られて、その中にCloneしたファイルが格納されますので、別の場所にしたい場合はパスを変更してください。
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
また、以下ではヒアドキュメントで設定を行っておりますが、そのまま実行すると$PATH
が変数展開されてしまうため、_EOF_
をシングルクォートかダブルクォートでくくるようにします。
cat << "_EOF_" >> .bashrc
export PATH=$PATH:/c/Users/UserName/.tfenv/bin
_EOF_
.bashrc
が作成出来たら、source
コマンドで作成した.bashrc
を読み込んでおきます。
source .bashrc
tfenvを使用したTerraformのインストール
Terraform
をtfenv
のコマンドを使用してダウンロード&インストールを行います。
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
インストール方法についても記載しておきます。
Windows版のインストール自体は簡単で、HashiCorp
のダウンロードページからダウンロードしたファイルを任意の場所に格納して実行するだけとなります。
ただ、適当な場所に置いただけではパスが通っていないので、環境変数の設定も行っておきます。
【補足】コマンドからのTerraform用環境変数の永続設定
GUI画面から設定を行っても良いですが、今回はPowerShell
で設定しようと思います。
コマンドからの環境変数設定方法については以下で紹介しているため、ユーザ変数のPATH
に永続設定を追加する方法だけ記載します。
設定前の設定を以下コマンドで確認します。
[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
おわりに
今回はWindows
にtfenv
とTerraform
をインストールして、初期セットアップまで行いました。
次回は開発するのに必要となるツール類のインストール&セットアップを行っていこうと思います。