LoginSignup
1
2

More than 1 year has passed since last update.

Terraformを使って覚える。(その1:tfenvを使ったTerraformインストール)

Last updated at Posted at 2022-07-02

はじめに

次の仕事でTerraformを使うことになったため、勉強のためにまとめていこうと思います。

私のスキル感

以前、CloudFormationは勉強して以下のような記事をいくつか書きましたが、Terraformは以前気になって少し触ってみた程度で、もうすっかり忘れてしまったので改めて学びなおそうと思います。

Terraformとは

HashiCorpが提供しているツールで、いわゆるインフラ環境をコードで管理するIaC(Infrastructure as Code)と呼ばれるツールの一種となります。

CloudFormationも同様のツールとなりますが、CloudFormationがAWS環境の構築のみ対象としているのに対して、TerraformAWSだけではなく、GCPAzureでも使用できるツールとなります。

また、CloudFormationと同様、各種クラウド基盤のサービス部分の構築を対象としているため、サーバの設定などを行う場合はAnsible等のツールを利用する必要があります。

勉強のための参考書など

いきなり独学で覚えるのも大変なので、以下を参考に体系的に勉強してみようと思います。

実践Terraform」は以前触ってみた際に買って途中までやって積んであったもの、「AWSとTerraformで実現するIaC」はちょうどUdemyでセールになっていたのでポチったものです。

Terraformのインストール準備

今回は以下環境を想定してインストールしてみようと思います。

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

目的となるTerraformをインストールする前に、前提となる機能や周辺設定を先に整えておきます。

  1. Terraform用IAMユーザ作成
  2. AWS CLIのインストール
  3. AWS CLIへのTerraform用ユーザプロファイル作成
  4. Gitのインストール

上記1~3はTerraformからAWS環境を操作するための専用ユーザ作成と操作に必要となるAWS CLIのインストール&セットアップ、4はTerraformのソースコード管理と、後述するtfenvGitのパッケージに含まれるGit Bashを使いたいためGitのインストールを行います。

Terraform用IAMユーザ作成

Terraformからの実行用として、AWSのIAMに以下Terraformユーザを作成しておきます。

実際の運用環境ではしっかりと権限設定する必要がありますが、今回はTerraformの勉強が目的なのでAdministratorAccessの管理ポリシーを直接割り当ててしまいます。

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

IAMユーザ作成後、作成したユーザの「認証情報」タブからアクセスキーをCSVファイル等で取得しておきます。

AWS CLIのインストール

AWSの以下オンラインマニュアルよりWindows用インストーラをダウンロードして実行するだけです。

インストール完了後、PowerShellやコマンドプロンプト等で以下のように表示されればOK。

AWS_CLIバージョン確認
aws --version
aws-cli/2.7.10 Python/3.9.11 Windows/10 exe/AMD64 prompt/off

AWS CLIへのTerraform用ユーザプロファイル作成

先ほど取得したアクセスキーを使い、AWS CLITerraform用のユーザプロファイルを作成します。

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も使ってみようと思います。

  1. tfenvのインストール
  2. tfenv用環境変数の設定
  3. tfenvを使用したTerraformのインストール

尚、tfenvを使用しない場合のTerraformインストール方法も補足として記載したため、tfenvを使用しない場合は、以下の補足を確認してください。

  1. 【補足】tfenvを使用しないTerraformのインストール
  2. 【補足】コマンドからのTerraform用環境変数の永続設定

tfenvのインストール

tfenvのインストール&初期セットアップは、先ほどインストールを行ったGit Bashより以下tfenvGitHubからClone、その後tfenvのパスを設定するため環境変数の設定を行うといった流れとなります。

以下をGit Bashから実行してGitHubからダウンロードします。

なお、以下の場合「C:\Users\[ユーザ名]」に「.tfenv」というフォルダが作られて、その中にCloneしたファイルが格納されますので、別の場所にしたい場合はパスを変更してください。

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

また、以下ではヒアドキュメントで設定を行っておりますが、そのまま実行すると$PATHが変数展開されてしまうため、_EOF_をシングルクォートかダブルクォートでくくるようにします。

.bashrcの作成と環境変数設定
cat << "_EOF_" >> .bashrc
export PATH=$PATH:/c/Users/UserName/.tfenv/bin
_EOF_

.bashrcが作成出来たら、sourceコマンドで作成した.bashrcを読み込んでおきます。

.bashrcの読み込み
source .bashrc

tfenvを使用したTerraformのインストール

Terraformtfenvのコマンドを使用してダウンロード&インストールを行います。

tfenvを使用してインストール可能なTerraformのバージョンを確認するためには以下コマンドを実行します。

tfenvでTerraformのインストール可能バージョンの確認
tfenv list-remote

すると以下のようにインストール可能なTerraformバージョンが表示されるため、インストールするバージョンを控えておきます。

tfenv_list-remote実行例
1.3.0-alpha20220622
1.3.0-alpha20220608
1.2.3
1.2.2
(省略)

今回は記事を書いている時点で最新安定板となる「1.2.3」をインストールしてみようと思います。

tfenvでのTerraformインストール
tfenv install 1.2.3

tfenvコマンドを実行することで、指定のバージョンのTerraformをインストールすることができましたが、tfenvを使用する場合、さらに端末にインストールされているバージョンからどのバージョンを使用するかを指定する必要があるため、tfenv useコマンドで指定します。

使用するTerraformバージョンの指定
tfenv use 1.2.3

現在使用しているバージョンを確認するためにはtfenv listコマンドを実行します。

コマンド結果のうち、先頭に「*」が記載されているバージョンが現在使用中のバージョンとなります。

現在使用中のTerraformバージョンの確認
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変数に追加(ユーザ変数の場合)
$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のバージョン確認
terraform.exe --version
Terraform v1.2.3
on windows_amd64

おわりに

今回はWindowstfenvTerraformをインストールして、初期セットアップまで行いました。

次回は開発するのに必要となるツール類のインストール&セットアップを行っていこうと思います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2