【AWS】Terraformを始める前の準備をする。


経験浅いながら、Terraformを実際に動かしてみたので参考になればと思いTerraformを使う環境構築から書いてみることとします。

# 自己紹介
・年齢は25歳、エンジニア歴3年です。
・都内のSier企業でエンジニアをやっています。
・主にSASE基盤、Azureを触っております。
・パブリッククラウドとセキュリティに興味あり。

# 目次
1.概要
2.IAMユーザーのアクセスキー作成
3.AWS CLIのインストール
4.AWS CLI認証情報の設定
5.Terraformのインストール

# 1.概要
Terraformを利用して、設定ファイルからインフラ構築、変更、管理を行う為、まずはTerraformを実行できる環境を作ります。

環境
・AWS
・EC2インスタンス(Linux):Amazon Linux2
・インスタンスサイズ:t2.micr

前提
・IAMユーザーは作成済みで、「AdministratorAccess」ポリシーが適応されています。

準備の流れ
①IAMユーザーのアクセスキー作成
②AWS CLIのインストール
③AWS CLI認証情報の設定
④Terraformのインストール

# 2.IAMユーザーのアクセスキー作成
### 【概要】
・AWSのアクセスキーとは認証情報のことで、IAMユーザーの長期的認証を指す
　AWSのアクセスキー認証によって、外部からのAWSのサービスへのアクセスが可能となる
・Teraformを使用するには、IAMユーザーとアクセスキーが必要となる

### 【注意点】
・ユーザー名、パスワードが不要でプログラムにアクセスできるようになる為、アクセスキー管理の徹底が必要となる。

### 【手順】
・まずは、AWSコンソールにIAMユーザーでログインします。
・ログイン後、コンソール画面右上の「IAMユーザー名@AWSアカウント名」▼を押して「セキュリティ認証情報」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763418/369c2a51-0109-b2b2-5335-ce2b9ca32347.png)

・「自分の認証情報」の画面に遷移される為、下にスクロールし、「アクセスキーを作成」をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763418/1a6d06c0-9944-7237-8fcf-498d1f9a8fb7.png)

・コマンドラインインターフェイス(CLI)を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763418/e73cefc6-dd48-d9c9-783a-2fdf01e40882.png)

・「アクセスキーを取得」の画面が表示される為、情報を保存しておく。
　※CSVで資格情報がダウンロードできるので、しておきます。
 
## 3.AWS CLIのインストール
### 【概要】
・AWS CLIとは、AWSのサービスをコマンドラインから制御・管理するツールです。
・Terraformは実行されると、AWS CLIを使用してAWSの現行リソース状態と設定ファイルに定義する状態を比較する為、AWS CLIがAWSの情報取得する用途で利用されます。

### 【手順】
・Terraformを動かす、EC2インスタンスにSSHでログインします。
　※デフォルトのユーザーIDは「ec2-user」で秘密鍵で認証
 
・対象のインスタンスにログイン後、インスタンスにAWS CLIをインストールします。
```ruby
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```

・インストールが正常にされたか確認します。
```ruby
aws --version
```
出力結果にて、[aws-cli/]の後に2.~となっていればAWS CLIバージョン2がインストールできていることになります。

## 4.AWS CLIの認証情報の設定
### 【概要】
インストールしたAWS CLIを利用するAWSアカウントに紐づける（認証）する必要がある為、設定をします。

### 【手順】
・AWS CLIの初期の接続情報を確認
```ruby
aws configure list
```
※初期状態ではほぼセットされていないかと思います。


・アクセスキーを aws cli の認証情報と紐付ける
```ruby
aws configure
```
対話型で[2.IAMユーザーのアクセスキー作成]にて作成したアクセスキーの情報（csvで出力した）を入力します。

・登録した情報は`~/.aws/credentials`に記載されている為、念の為`cat`コマンドで確認します。
```ruby
cat credentials
```

・AWS CLI認証情報が正しく設定されているか確認します。
```ruby
aws iam get-user 
```
自分のIAMユーザーの情報が確認できれば、認証成功です。

## 5.Terraformインストール
### 【概要】
・TerraformをEC2インスタンスにインストールします。
・インストール方法は2つあります。
　①Terraformをコマンドで直接インストールする。(公式：https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
　②tfenvツールを利用してインストールする。(https://zenn.dev/takesaya/articles/terraform_install)
・TfenvはTerraformのバージョンの切り替えを容易に行えるツールで、チーム単位で開発する際はバージョン管理が重要な為、こちらの方法がよさそうですが、今回は個人で利用する為、①の方法を採用します。

### 【手順】
・公式ドキュメントから、Amazon LinuxディストリビューションでTerraformをインストールする手順を確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3763418/98f4badc-2ea9-392c-84ae-acc60847b05b.png)

・Terraformをインストールします。
```ruby
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
sudo yum -y install terraform 
```

・Terraformコマンドを入力し、Terraformが正常にインストールされていることを確認します。
```ruby
terraform –help
terraform -v
```
※出力結果でエラーがなければ、Terraformコマンドが利用できるようになってるので、インストール成功です。


# まとめ
Terraformが利用できる事前準備はこれにて完了です。
ここから、設定ファイルを実際に作成し、AWSリソースを作っていきたいと思います。