インフラストラクチャとしてのコード(IaC)の領域では、過去数年間で最も有用なツールの1つはHashiCorpのTerraform Windowsです。インフラストラクチャのバージョン管理、リソースの自動プロビジョニング、さまざまなクラウドベンダーでの実行能力は、どのDevOpsと自動化ワークフローにとっても非常に重要です。
Terraformの1つのユースケースは、CI/CDです。Terraformを使用すると、以下の作業を実行できます:
私の最新のビデオ
- テスト環境の作成
- アプリケーションのデプロイ
- 統合テストの実行
- テスト環境の破棄
これらのすべてのステップは自動的に実行されます。また、データセンターは必要ありません!
前提条件
この記事では、Terraform Windowsのセットアップと実行方法について説明します。一緒に進める場合は、以下の前提条件を満たしていることを確認してください。
- A Windows 10 device
- AWSアカウント
- そのデバイスにAWS CLIがインストールされ、設定されていること。インストール方法はこちら、設定方法はこちらで学ぶことができます。
- (オプション)Terraform拡張機能を備えたVisual Studio Code
Terraform Windowsアプリケーションのインストール
Terraformの機能を最大限に活用するには、まず選択したオペレーティングシステムにTerraformをインストールする必要があります。この記事では、Windowsに焦点を当てますが、Terraformは他のオペレーティングシステムでも実行できることを知っておいてください。Windows以外の場合は、インストールドキュメントを参照してください。
手動でインストールする場合
パッケージマネージャーを使用できない場合、またはインストールプロセスの動作を理解したい場合、Terraformを手動でインストールできます。バイナリをダウンロードし、それをシステムパス環境変数に追加することができます。これが難しそうに見える場合でも、次のセクションで簡単な方法があるので安心してください。
- Terraformの適切なバージョンをHashiCorpのダウンロードページからダウンロードします。私の場合、Windows 64ビット版です。
- Terraformの実行可能ファイルを配置するためのC:\ドライブにフォルダを作成します。私はインストーラをC:\toolsなどのサブフォルダに配置することをお勧めします。
- ダウンロードが完了したら、ファイルエクスプローラーでそれを探してください。zipファイルをステップ2で作成したフォルダに展開します。
- スタートメニューを開き、”environment”と入力すると、最初に表示されるのはシステム環境変数の編集オプションです。それをクリックすると、このウィンドウが表示されます。

5. 下部の環境変数…をクリックすると、次のような画面が表示されます:

6. 「システムの環境変数」と書かれた下部のセクションの中で、Pathという名前の項目を見つけて編集をクリックします。すると、Windowsが必要とするバイナリの場所のリストが表示されます。
7. 新規をクリックし、terraform.exeが保存されているフォルダのパスをリストの一番下に追加します。完了時には、以下のようになります。

8. 開いたメニューのそれぞれに対してOKをクリックし続け、メニューが表示されなくなるまで進めます。
9. 新しいパスがWindowsに認識されることを確認するために、新しいCMD/PowerShellプロンプトを開き、refreshenv
と入力します。
10. terraform --version
と入力してインストールが成功したか確認します。バージョンが表示されれば、準備完了です。
簡単な方法
ふー、たくさんの作業でしたね!新しいソフトウェアをデバイスにインストールするたびにこれを行うのは大変です。代わりにパッケージマネージャを使用しましょう。Windowsで使用できるいくつかのパッケージマネージャがありますが、私のおすすめはChocolateyです。これは一行のコマンドでソフトウェアのインストール、削除、更新を簡単に行うことができ、Terraformも例外ではありません。
Chocolateyを使用してTerraformをインストールするには、以下の手順を実行します。
- 管理者としてCMD/PowerShellプロンプトを開き、インストールページからコマンドを使用してChocolateyをインストールします。
- それが完了したら、
choco install terraform
を実行します。必要に応じて、デバイスに自動的に同意するために末尾に-y
を追加することもできます。
そのコマンドを実行すると、次のような結果が表示されます。
3. インストールが成功したかを確認するには、terraform --version
を入力します。
Linuxの方法
I can almost hear what you’re thinking. Wait a minute Chris, didn’t you say this was going to cover installing Terraform on Windows?
はい、それはまだ使えます。ただし、Windows 10の機能の1つであるWindows for Linux Subsystem、またはWSLを使用することもできます。これにより、Windows上でLinuxコマンドを実行できます。
- WSLをインストールします。ここでは、WSLのインストールとセットアップ方法について詳しく説明しませんが、一緒に進めるためにまだ設定されていない場合は、以下のTechSnipsのスニップを参照してください。
2. WSLシェルでapt-get install unzip
を実行します。これは後でTerraformバイナリを展開するために必要です。
3. wget https://releases.hashicorp.com/terraform/0.12.6/terraform_0.12.6_linux_amd64.zip
を実行してTerraformをダウンロードします。バージョンとアーキテクチャをデバイスに最適なもので置き換えてください。Terraformのリリースの完全なリストはこちらで確認できます。
4. unzip terraform_0.12.6_linux_amd64.zip terraform
を実行して、zip ファイルの内容を terraform という名前のフォルダに展開してください。
5. ZIP ファイルが解凍されたら、システムパスからアクセス可能な場所に移動する必要があります。幸いにも、Linux にはデフォルトでバイナリを追加できるフォルダがあります。Terraform バイナリを mv terraform /usr/local/bin/
を実行してそこに移動してください。/usr/local/bin フォルダはシステムパスにすでに設定されています。
6. インストールが成功したかどうかを確認するために、terraform --version
を実行してください。
AWS Terraform EC2 インスタンスの自動化
Terraform をインストールしたので、使用を開始できます。この記事では、シンプルな AWS Terraform EC2 インスタンスの構築をデモンストレーションします。ただし、Terraform は数百種類の異なるインフラストラクチャをプロビジョニングできることを知っておいてください。
始めるには、Terraform EC2 スクリプトを実行するためのディレクトリが必要です。各環境ごとに別のディレクトリを持つことが重要です。この時点では、Terraform には実行する内容をフィルタリングする方法がありません。現在の作業ディレクトリのすべてのスクリプトが実行されます。
TF スクリプトのセットアップ
- 管理者として実行される cmd や PowerShell コンソールで、
mkdir hello-terraform
を実行してからcd ./hello-terraform
を実行してください。 - ディレクトリを作成したら、Terraformスクリプトが必要になります。以下は使用できる例です。これはAWSのプロバイダを使用してAWSのインスタンスリソースを作成する典型的なTerraformスクリプトです。
スクリプト全体が必要な場合は、以下をコピーしてください。このスクリプトの動作を理解したい場合は、以下をお読みください。
# Terraform HCL
上記のスクリプトをmain.tf
という名前で作業ディレクトリに保存します。
TFスクリプトの理解
さらに進む前に、以下のブロックとその宣言に注目してください。
#Terraform HCL
このブロックは、Terraform EC2にどのプロバイダを使用するかを伝えています。主要なクラウドベンダーのプロバイダだけでなく、オンプレミスのベンダーのプロバイダもあります。より高度な場合は、自分でGolangを書くこともできます。
このブロックは、TerraformにAWSプロバイダを使用し、~/.aws/credentials
ファイル内のdefault
プロファイルのアクセスキーを使用するよう伝えています。このファイルは、前提条件に記載されているように、aws config
コマンドでAWS CLIをセットアップすると作成されます。
また、~/
は現在のユーザーディレクトリの省略形です。Windowsの場合、これは$env:USERPROFILE
または%USERPROFILE%
と等価です。ただし、Terraformはその表記をサポートしていません(執筆時点では)。
以下のブロックは、Terraform EC2インスタンスの作成方法と構築内容について説明しています。 aws_instanceのTerraformドキュメントを参照すると、いくつかのパラメータが必須であることとオプションであることがわかります。この場合、必須パラメータはUbuntu 18.04 LTS用のAMI ID(ami-07d0cf3af28718ef8
)とインスタンスタイプのt2.micro
です。
作成されるインスタンスにName
というキーとHelloTerraform
という値のタグブロックを渡すことで、このタグも割り当てられます。これはオプションです。
#Terraform HCL
スクリプトが設定されたら、作業ディレクトリからterraform init
を実行して呼び出します。これにより、すべての依存関係とプロバイダが.terraform
というフォルダにダウンロードされます。うまくいけば、次のような結果が得られるはずです:
変更を行う前に、Terraform EC2ではterraform plan
を実行することで、作成される内容を確認することができます。以下はその出力です:
# aws_instance.ubuntu が作成されます
AWS EC2インスタンスの構築:作成中
これで、terraform apply
を実行して自分自身で実行する準備が整いました。以下は、terraform plan
と同様の出力ですが、変更を適用することを確認するためのプロンプトが追加されています。
「はい」と入力すると、Terraform EC2はアクセスキーを使用してAWS APIを呼び出し、Terraform EC2インスタンスのプロビジョニングを開始します。これには時間がかかる場合があります。完了すると、以下のような表示が表示されます:
AWS EC2インスタンスの破棄
テスト環境の使用が終わったら、インスタンスを破棄することができます。
コマンドプロンプト/PowerShellコンソールで、terraform destroy
と入力します。apply
コマンドと同様に、Terraformが破棄するリソースのリストが表示され、実際に破棄する前に確認が求められます。
「はい」と入力すると、Terraform EC2はインスタンスの破棄を開始し、完了したことを確認します。