AlmaLinux9.4にTerraformを入れる

概要

AWSで様々なサービスを利用するときにすべてGUI上で管理するのは大変です。

なので、今回はAWS等のインフラ部分を管理することができるツールであるTerraformを前回の記事で作成したAWSのEC2のt2.microのAlmaLinux9.4に入れてみようと思います。

AlmaLinux9.3→AlmaLinux9.4にする方法はリンクを参考にしてください。

Terraformのインストール方法

Terraformをリンクの「Linux」の項目からAlmaLinux9.4にダウンロードしようと思います。

今回はリンク先の「yum」コマンドではなく、後継の「dnf」コマンドを使用していきたいと思います。

最初は、dnf用の「config-manager」をインストールするためのコマンドを実行します。

sudo dnf install -y dnf-plugins-core

実行すると下図のようになります。

コンフィグマネジャーを使ってTerraformのリポジトリをダウンロードしますが、先のリンクに記載してあるURLだと動かないのでここの2行目にあるURLを使用します。

sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

すると下図のようにリポジトリを追加できます。

その後Terraformをインストールするコマンドを実行したら完了です。

sudo dnf install terraform -y

下図のように「Complete!」となればOKです。

Terraformでインスタンスを立ててみる

Terraformが実際に使えるようになったのかを調べるために、Terraformを使ってAWS上に実際にEC2インスタンスを立ててみようと思います。

今回は、公式のチュートリアルを参考にやってみようと思います。

実際にTerraformを使う前にAWSのCLIのインストールとAWSのクレデンシャルファイルを作成する必要があります。

下図のようにAWSのCLIが入っていないため今回はここから始めます。

事前準備

AWS CLIのインストールとEC2用のIAMユーザーを作成します。

AWS CLIのインストール

AWSCLIのインストールはこちらにあります。

まず最初にEC2のCPUがx86_64かARMのどちらを使われているかを下記のコマンドで調べてみます。

lscpu

すると下図のようにx86_64と記載があるのでx86_64のコマンドを使用します。

unzipを使用するので、もしunzipを入れてない場合は、下記のコマンドでunzipコマンドをインストールしてください。

sudo dnf install unzip -y

下記のコマンドでTerraformをインストールします。

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

下記が出ればOKなので、記載されているコマンドを実行してみましょう。

/usr/local/bin/aws --version

すると下記のように記載されます。

これでAWSCLIのインストールは完了です。

credentialsの作成

EC2で使用するcredentialsの作成を行います。

credentialsは、IAMで作成するのでまず最初にIAMのページを開きます。

画面に従いユーザーの作成を行い、その後そのユーザーのアクセスキーを作成します。

するとアクセスキーとシークレットアクセスキーが出てくるので.csvをダウンロードするかメモしておきます。

これでcredentialsの作成は完了です。

Terraformで実際にAWSのリソースを作成する

下記のコマンドを使ってAWSのクレデンシャルを環境変数に入れます。

export AWS_ACCESS_KEY_ID=「アクセスキー」
export AWS_SECRET_ACCESS_KEY=「シークレットアクセスキー」

作業用のフォルダを作成し、そのフォルダ内でTerraformのファイルを作成します。

mkdir learn-terraform-aws-instance
cd learn-terraform-aws-instance
touch main.tf

その後Main.tfに下記のコードを記載します。もとのコードではオレゴンにEC2インスタンスができるようになってましたが、動かなかったので下記のコードでは東京リージョンでUbuntu Serverを作成するように変更しています。

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.16"
    }
  }

  required_version = ">= 1.2.0"
}

provider "aws" {
  region  = "ap-northeast-1"
}

resource "aws_instance" "app_server" {
  ami           = "ami-0a0b7b240264a48d7"
  instance_type = "t2.micro"

  tags = {
    Name = "ExampleAppServerInstance"
  }
}

下記のコードで初期化します。

terraform init

その後下記のコマンドを実行し、「Enter a value:」のときに「yes」と入力するとEC2インスタンスが作成されます。

terraform apply

下記のように出たら完成です。

実際にコンソール画面を確認すると下記のように今回指定した名前のインスタンスが作成されていることを確認できました。

Terraformで立てたインスタンスの削除

実際にTerraformを使ってインスタンスを立ち上げることができたので今度はインスタンスを削除しようと思います。

下記のコマンドを実行し、「Enter a value:」のときに「yes」と入力するとEC2インスタンスが削除されます。

terraform destroy

実際に削除されると下記のようにでればOKです。

実際に確認すると終了済みになっていました。

まとめ

今回はTerraformを使って実際にEC2インスタンスを立ててみました。

そろそろGCPとかも使ってみようかなと思うので、Terraformを使ってGCPの環境を作ってみようかなと思います。

この記事が誰かの役に立てば幸いです。

下記リンクから買い物していただけると白々のお小遣いが増えて色々な有料サービスを使ったブログ記事を書きやすくなるので、ご協力よろしくお願いします!!!

<a href="https://rpx.a8.net/svt/ejp?a8mat=3TNHN9+2VLG1E+2HOM+61Z81&rakuten=y&a8ejpredirect=http%3A%2F%2Fhb.afl.rakuten.co.jp%2Fhgc%2F0ea62065.34400275.0ea62066.204f04c0%2Fa23120371292_3TNHN9_2VLG1E_2HOM_61Z81%3Fpc%3Dhttp%253A%252F%252Fwww.rakuten.co.jp%252F%26m%3Dhttp%253A%252F%252Fm.rakuten.co.jp%252F" rel="nofollow">
<img src="http://hbb.afl.rakuten.co.jp/hsb/0eb4bbdb.d3e5aa19.0eb4bbaa.95151395/" border="0"></a>
<img border="0" width="1" height="1" src="https://www16.a8.net/0.gif?a8mat=3TNHN9+2VLG1E+2HOM+61Z81" alt="">

コメント

タイトルとURLをコピーしました