Terraformを使ってAWSやGCP等のクラウドインフラストラクチャをコードで管理(IaC=Infrastructure as Code)していきます。
第1回は、Windows環境にてTerraformの実行環境を構築し、テストとしてAWS上にEC2インスタンスを起動するまでの手順を解説します。
注意点
- 本記事にてAWSのEC2インスタンスを起動します。使用するアカウントに無料枠がない場合、AWSの料金が発生します。また、無料枠がある場合でも起動したままにすると無料枠を使い切って料金が発生する可能性があります。
- AWS上のEC2インスタンスの起動と削除等の操作を行います。誤って本番環境へ変更を加えてしまうようなことが無いよう、テスト環境を用意して実施することを推奨します。
- AWSアカウントのアクセスキーやシークレットキーをGitなどに公開してしまうと、悪意ある第三者によってAWSアカウントが不正に利用され、多額の請求が発生する可能性があります。アクセスキーやシークレットキーの取り扱いには十分に注意してください。
概要
前提事項
本記事では以下の前提で進めていきます。
- Terraform実行環境(Windows PC)にVisual Studio Codeをインストール済みであること
- AWSアカウントが作成済みで基本的な操作(IAMやEC2)が可能であること
- Linuxコマンドの基本的な知識(Bashコマンドライン)があること
環境
本記事に記載している手順は以下の環境にて実施しています。
- Terraform実行環境:WIndows11 Pro(22H2)
- AWS CLIバージョン:2.13.7
- Gitバージョン:2.41.0.windows.3
- Terraformバージョン:1.5.4
- Visual Studio Codeバージョン:1.81.0
実施の流れ
以下の流れで進めていきます。
- AWS CLIのインストールと初期化
- GitBashのインストール
- Terraformのインストール
- Git-secretのインストール(オプション)
- テスト:EC2インスタンスを起動する
AWS CLIのインストールと初期設定
ステップ1 AWS CLIのインストール
Webブラウザで「AWS CLI」と検索し、AWS CLIのサイト(https://aws.amazon.com/jp/cli/)からインストーラをダウンロードします。
ダウンロードしたインストーラ(本記事執筆時点でのファイル名は『AWSCLIV2.msi』)を実行し、インストールを行います。
インストールフォルダの選択など、全てデフォルトのままで問題ありません。
インストールが完了したら、PowerShellまたはコマンドプロンプトを起動して以下のコマンドを実行します。
> aws --version
aws-cli/2.13.7 Python/3.11.4 Windows/10 exe/AMD64 prompt/off
このようにAWS CLIのバージョンが表示されれば、問題なくインストールが完了しています。
ステップ2 AWS IAMユーザの作成
TerraformでAWSのサービスを制御する際に使用するIAMユーザを作成します。
実運用環境で使用する場合も、コードの記述ミス等によるトラブルを防止するためにも、適切な権限を付与したTerraform用ユーザを作成すべきですが、今回はあくまでテストとなりますので管理者権限(FullAccess)を持つユーザを新規に作成します。
※使用可能なユーザが既にあれば新規作成は必須ではありません。
AWSマネジメントコンソールにてIAMを開き、以下の2つのユーザを用意します。
用途 | 付与ポリシー | ユーザ名(例) |
---|---|---|
AWS CLI管理用 | AdministratorAccess | awsadmin |
Terraform用 | AdministratorAccess | terraform |
※このあとのステップにてアクセスキーとシークレットキーが必要になりますのでメモしておいてください。
ステップ3 AWS CLIの初期設定
PowerShellまたはコマンドプロンプトを起動して以下のコマンドを実行します。
aws configure
aws configure —profile terraform
デフォルトプロファイルおよびterraformプロファイルの2つのプロファイルが作成されました。
それぞれのプロファイルにステップ2で作成したIAMユーザを紐づけます。
以下のファイルをメモ帳などのテキストエディタで開きます。
C:Users[ユーザ名].awscredentials
[default]にステップ2で作成したAWS CLI管理用ユーザのアクセスキーとシークレットキーを
[terraform]にTerraform用ユーザのアクセスキーとシークレットキーをそれぞれ記述します。
[default]
aws_access_key_id = *****************
aws_secret_access_key = *****************
[terraform]
aws_access_key_id = *****************
aws_secret_access_key = *****************
GitBashのインストールと初期化
Git(GitBash)のインストール
Windows環境からTerraformを実行する場合、GitBashを使用することが推奨されています。
GitBashはWindows用Gitインストーラに含まれていますので、Gitのインストーラをダウンロードしてインストールします。
Gitの公式サイトからWindows用インストーラをダウンロードします。
Windows10以降の環境であれば64-bitのStandalone Installerを使用します。
ダウンロードしたインストーラを実行し、Gitをインストールします。
インストールオプションは基本的にデフォルトのままで問題ありませんが、エディタの選択は『Visual Studio Code』を、改行コード変換の指定は『Checkout as-is, commit as-is』を選択することお勧めします。
※Visual Studio Codeが未インストールの場合は『Visual Studio Code』を選択できません。
GitBashの初期化
Gitで使用するアカウントを登録するため、PowerShellまたはコマンドプロンプトを開いて以下のコマンドを実行します。
git config --global user.email "[メールアドレス]"
git config --global user.name "[ユーザ名]"
メールアドレスとユーザ名は自身のものを自由に入力してください。
Terraformのインストール
tfenvのインストール
Terraformのバージョンを管理するツールであるtfenvをインストールします。
作業しているPCで以下のフォルダを開きます。
C:Users[ユーザ名]
フォルダ内で右クリックしてメニューから『Open Git Bash here』を選択します。
※メニューに表示されない場合はSHIFTキーを押しながら右クリックします
GitBashが起動するので以下のコマンドを実行します。
git clone https://github.com/tfutils/tfenv.git .tfenv
フォルダ内に『.tfenv』フォルダが作成され、tfenvのファイルがクローン(ダウンロード)されます。
続いて、C:Users[ユーザ名] の直下に『.bashrc』というテキストファイルを作成し、以下の内容を記述します。
export PATH=$PATH:/c//Users/[ユーザ名]/.tfenv/bin
※ユーザ名は実際のユーザ名に置き換えてください
※パスの区切り文字が”/”であることに注意
.bashrcを作成して保存したら、一度GitBashを再起動します。
.bashrcはLinuxのシェルにおける「ドットRCファイル」と呼ばれ、シェル(今回の場合Bash)の起動時に自動実行する処理を記述する初期化ファイルです。
Terraformのインストール
続いてTerraformをインストールします。
GitBashで以下のコマンドを実行します。
tfenv list-remote
利用可能なTerraformのバージョン一覧が表示されます。 ※エラーになる場合はここまでの工程で誤りがないか再度見直してみてください。特に.bashrcの記述内容に誤りがあると「コマンドが見つからない」旨のエラーとなります。
今回はアルファ版を除く最新版である1.5.4を選択しました。
バージョン1.5.4をインストールします。
tfenv install 1.5.4
インストール後、バージョン1.5.4を使用することを宣言します。
tfenv use 1.5.4
※tfenvを使用すれば、複数のバージョンをインストール(install)し、バージョンを切り替え(use)ることが可能です。
正常にインストールできたかテストしてみます。
$ terraform --version
Terraform v1.5.4
on windows_amd64
上記のようにterraform1.5.4が使用可能になったことが確認できました。
Visual Studio Code拡張機能のインストール
HashiCorp社より提供されているVisual Studio Code(VSC)用の拡張機能を導入することにより、VSCでTerraformのコードを記述する際に補完やシンタックスハイライトの機能が使えるようになります。
VSCの拡張機能にて「HashiCorp」と検索し、『HashiCorp Terraform』をインストールしておきましょう。
Git-secretのインストール(オプション)
別途記載
参考:https://zenn.dev/kkk777/articles/8f55db1e9678f2
テスト:EC2インスタンスを起動してみる
ようやくTerraform実行環境の準備が整いましたので、テストとしてTerraformを使用してEC2インスタンスを起動してみます。
コードの作成
Terraformのコードを格納するプロジェクトフォルダを作成します。
今回は
C:Users[ユーザ名]terraform
を作成してコードを格納することにします。エクスプローラ等で上記フォルダを作成してください。
フォルダを作成できたら、VSCにてフォルダを開きます。
VSCのメニュー『ファイル>フォルダーを開く』にて、上記フォルダを選択して開きます。
フォルダを開いたら「新しいファイル」アイコンをクリックして、コードを記述するファイルを作成します。ファイル名は『main.tf』とします。
main.tfに以下のコードを記述します。
provider "aws" {
profile = "terraform"
region = "ap-northeast-1"
}
resource "aws_instance" "tftest" {
ami = "ami-08c84d37db8aafe00"
instance_type = "t2.micro"
}
ami = “ami-08c84d37db8aafe00”
ここで指定しているAMIのIDは、『東京リージョン(ap-northeast-1)のAmazon Linux 2023 AMI』のものです。同じAmazon LinuxでもリージョンによってIDが異なるため、コード内のregionで指定しているリージョンで使用可能なAMIのIDを指定する必要があります。
※AMI-IDは、AWSコンソールのEC2起動画面などで確認できます。
コードを記述できたら『ファイル>保存』かキーボードショートカット『Ctrl+S』で保存します。
コードの実行
VSCにてGitBashターミナルを起動します。
VSCのメニュー『表示>ターミナル』を選択するか、キーボードショートカット『Ctrl+@』でターミナルを開きます。
デフォルトだとPowershellのターミナルが起動するので、GitBashに切り替えます。
※GitBashをデフォルトのターミナルに変更する方法もありますが今回は割愛します。
ターミナル右上の『+』ボタン右側にある下向き矢印をクリックし、『Git Bash』を選択します。
ターミナルがGitBashに切り替わりました。
GitBashコンソールで以下のコマンドを実行します。
初期化
terraform init
コードの実行
terraform apply
コンソール上に実行内容の詳細と、実行確認のプロンプトが表示されます。 問題なければ「yes」と入力して実行します。
ここまでの手順に問題がなければターミナルに
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
このようなメッセージが表示され、1分ほどでEC2インスタンスが起動するはずです。
AWSコンソールで確認してみましょう。
EC2インスタンスの削除
最後に、EC2インスタンスを削除します。VSCのGitBashターミナルで以下のコマンドを実行します。
terraform destroy
apply時と同様に確認プロンプトが表示されるので「yes」と入力します。
AWSコンソールにてEC2インスタンスが削除された(インスタンスの状態が「終了済み」になった)ことを確認します。
今回はWindows環境にてTerraformの実行環境を構築し、テストとしてAWS上にEC2インスタンスを起動するまでの手順を解説しました。
次回はTerraformを使用するうえで理解しておくべき基本的な知識について解説します。