TerraformでEC2インスタンスを作成する方法について記載します。
動画で勉強したい方はこちらをどうぞ。
AWS と Terraformで実現するInfrastructure as Code
前提として以下条件を満たしているものとします。
■端末はMacを使用
■AWS CLIをインストール済み :手順
■AWS IAMでユーザー作成済み(権限: AdministratorAccess)
AWS CLIでconfigureを設定
CLIがインストール済みのMacでawsのユーザープロファイルを設定します。
ユーザー名はなんでも良いですが、AdministratorAccess権限を付与しておきます。
今回ユーザー名はTF_USER
とします。
ここで設定したユーザー名はTerraform設定時に利用します。
$ aws configure --profile TF_USER
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ap-northeast-1
Default output format [None]: json
コマンドを実行すると、上記の項目を確認されます。
Default region name
はap-northeast-1
efault output format
はjson
を設定しておきます。
aws_access_key_id
とaws_secret_access_key
が分からない場合は次の手順で生成します。
設定がうまくいくとcredentialsファイルに情報が記載されます。
$ cd ~/.aws
$ cat credentials
[TF_USER]
aws_access_key_id = AAAAAAAAAAAAAAAAAAAAAAA
aws_secret_access_key = BBBBBBBBBBBBBBBBBBBBBBBBB
tfenvのインストール
tfenvのインストールします。
tfenvとはTerraformのバージョン管理ツールです。
$ cd ~
$ git clone https://github.com/tfutils/tfenv.git .tfenv
インストールできらたPATHにtfenvの場所を設定します。
$ echo 'export PATH=$PATH:~/.tfenv/bin' >> ~/.bash_profile
$ export PATH=$PATH:~/.tfenv/bin
パスが上手く通ればtfenvコマンドでtfenvのバージョン確認が行えます。
$ tfenv
tfenv 2.2.3
Terraformのインストール
Terraformのインストールを行います。
まず、現在利用できるバージョンを確認します。
$ tfenv list-remote
1.1.6
1.1.5
1.1.4
### 以下略 ###
上記コマンドで出力された最新版のTerraformをインストールします。
$ tfenv install 1.1.6
インストールできたら以下のコマンドでTerraformの利用バージョンを指定します。
$ tfenv use 1.1.6
terraformコマンドが利用できるか確認します。
$ terraform version
Terraform v1.1.6
terraformコードの作成
任意の場所にディレクトリを作成し、main.tfファイルを作成します。
[任意のフォルダ]
└── main.tf
次にmain.tfを設定します。
provider "aws" {
profile = "TF_USER"
region = "ap-northeast-1"
}
resource "aws_instance" "test" {
ami = "ami-xxxxxxxxxxxxxxx"
instance_type = "t2.micro"
}
profile
とregion
にはそれぞれaws configure list --profile <ユーザー名>
コマンドで設定したユーザー名とDefault region nameを設定してくさださい。
ami
はAWSの画面でEC2→インスタンス→インスタンスの起動 の順にクリックすると、次の赤枠部分で確認できます。
instance_type
は無料枠のt2.microを設定します。
terraformを始めて実行する場合は次の初期化コマンドを実行します。
$ terraform init
初期化コマンドが上手くいったら次のコマンドでmain.tfを実行します。
実行すると最後にEnter a value:
が表示されるので、yesを入力してEnterを押すとEC2の作成が始まります。
$ terraform apply
### メッセージ中略 ###
Enter a value: yes
AWSの画面でEC2→インスタンスを確認すると、terraformで定義したEC2が作成されていることを確認できます。
参考