Terraformとはーインフラストラクチャを安全に管理できるTerraformの使い方について理解する

Terraformについての記事です。

  • Terraformとは?という方
  • Terraformを触ったみたいという方

上記のような方向けの記事です。

要するにTerraform入門編です!

具体的には以下のような内容を記載していきます。

この記事で記載すること

Terraformとは?について
Terraformのインストール
AWSのリソースをTerraformで管理してみる
→S3バケットを作成してみます!

    Terraformの実践的な使い方については以下の記事をご参照ください。

    [入門編]Terraformを実践で使う際のポイント
    Terraformを実践で使う際のポイントについて記載します。 チームで安全にTerraformを扱うには、tfstateの管理やリソース保護も必要になってきますので、この点にも触れています。 具体的には「ファイル構成」「実行手順」の順に、記載していきます。

    まず「Terraformとは?」についてです。

    スポンサーリンク

    Terraformとは

    Terraformとは、インフラのコード化とインフラ構築を自動化を行うためのオープンソースのツールです。自動化することで、安全かつ効率的にインフラ構築ができるようになります。クラウドプロバイダー(AWS、Google Cloud、Microsoft Azureなど)など、さまざまなインフラプロバイダーに対して、構成を管理できます。

    対応しているクラウドプロバイダーは以下サイトから確認できます。

    Terraform Registry

    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 CLI の最新バージョンをインストールまたは更新します。 - AWS Command Line Interface
    AWS CLI をシステムにインストールします。

    インストール後は以下のコマンドで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が実行計画を出してくれ、実行するときは再確認してくれるので、安心して作業できるのはないかと思います。