Terraformについての記事です。
- Terraformとは?という方
- Terraformを触ったみたいという方
上記のような方向けの記事です。
要するにTerraform入門編です!
具体的には以下のような内容を記載していきます。
Terraformとは?について
Terraformのインストール
AWSのリソースをTerraformで管理してみる
→S3バケットを作成してみます!
Terraformの実践的な使い方については以下の記事をご参照ください。
まず「Terraformとは?」についてです。
Terraformとは
Terraformとは、インフラのコード化とインフラ構築を自動化を行うためのオープンソースのツールです。自動化することで、安全かつ効率的にインフラ構築ができるようになります。クラウドプロバイダー(AWS、Google Cloud、Microsoft Azureなど)など、さまざまなインフラプロバイダーに対して、構成を管理できます。
対応しているクラウドプロバイダーは以下サイトから確認できます。
Terraformは、HCL(HashiCorp Configuration Language)と呼ばれる独自の言語を使用して、インフラ構成を定義します。HCLは人間が読み書きしやすくようになっています。
要するに、Terraformはインフラス構成を管理するツールで、
- 安全
- 効率的
にインフラ構成を管理できるツールです。
Terraformを使うと、
- インフラ構成をコード化できます
- コード化することによりバージョン管理することが可能になります
- バージョン管理することにより変更履歴が追跡可能になります
- コード化することによりバージョン管理することが可能になります
- インフラ構築の自動化ができます
- 人間が画面操作でインフラ構築をすると作業ミスが発生する可能性がありますが、Terraformでこれを排除
上記のようなことが可能となります。
また、Terraformは
- 実行前に実行計画を見ることができます
- ドライランができるということです
- 実行計画を見ることができるため、誤りがあれば実行前に気付くことができる
- ヒューマンエラーを回避できる
という使う上でのメリットがあります。
次にTerraformのインストール方法を書いていきます。
Terraformのインストール
Macでは、以下のコマンドでインストールできます。
brew install terraform
インストール完了後は、以下のコマンドを実行し、バージョンが表示されれば問題なくインストールされたこととなります。
terraform --version
次にTerraformでAWS上にS3バケットを作成と削除をしていきます!
TerraformでS3バケットを作成して、削除してみます。
まずはAWSリソースを扱うためにAWS CLIをインストールしていきます。
AWS CLIのインストール
以下のコマンドでインストールできます。
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
インストール完了後は、以下のコマンドを実行し、バージョンが表示されれば問題なくインストールされたこととなります。
aws --version
インストールがうまくいかない場合は公式の情報をご参照ください
インストール後は以下のコマンドでAWSのアクセスキーとシークレットアクセスキーを設定します。
aws configure
ソースの作成
S3バケットを作成する簡単なTerraformソースコードを作っていきます。
以下のコマンドで作業用ディレクトリを作成し、作成したディレクトリの中にTerraformソースを作成します。
mkdir terraform_test
cd terraform_test
vi main.tf
main.tfの中身は以下のようにして保存します
resource "aws_s3_bucket" "{S3バケット名}" {
bucket = "{S3バケット名}"
}
{S3バケット名}の部分は作成するバケット名に変更します。
Terraformの実行
Terraformを実行してS3バケットを作成していきます。
S3バケットの作成
まずは以下のコマンドで実行準備をします
terraform init
次に以下のコマンドで実行計画を確認します(ドライランします)
terraform plan
実行計画からS3バケットが作られそうなことがなんとなくわかると思います。
実行計画の確認ができたら、以下のコマンドで実際に実行します(S3バケット作成します)。
terraform apply
実行すると以下のメッセージが出てきます。
Do you want to perform these actions?
実行していいのか聞かれていますので、
yes
と入力して回答します。
以下のようなメッセージが出てくれば成功です。
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
AWSマネージメントコンソール画面からS3バケットが作成されていることが確認できると思います。
次にS3バケットにタグをつけてみます。
S3バケットの更新(タグ付けする)
main.tfの中身にタグ情報を追記して保存します
resource "aws_s3_bucket" "{S3バケット名}" {
bucket = "{S3バケット名}"
tags = {
Name = "terraform_test"
}
}
次に以下のコマンドで実行計画を確認します(ドライランします)
terraform plan
以下のコマンドで実際に実行します(S3にタグ名をつけます)。
terraform apply
実行すると再び以下のメッセージが出てきます。
Do you want to perform these actions?
yes
と入力して回答します。
以下のようなメッセージが出てくれば成功です。
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
AWSマネージメントコンソール画面で、作成したS3バケットにタグ名がついていることを確認できると思います。
次はS3バケットの削除をします。
S3バケットの削除
あと片付けとしてS3バケットを削除します。以下のコマンドを実行します。
terraform destroy
以下のメッセージが表示されます。
Do you really want to destroy all resources?
yes
と入力してS3バケットを削除します。
Destroy complete! Resources: 1 destroyed.
上記メッセージが表示されればOKです。
AWSマネージメントコンソール画面で、作成したS3バケットが削除されていることを確認できると思います。
まとめ
TerraformでS3の作成・変更・削除を実施しました。
Terraformが実行計画を出してくれ、実行するときは再確認してくれるので、安心して作業できるのはないかと思います。