0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Tarraformを使ってAWSにWebサーバを構築 #7 ~Webサーバが立ち上がる際にWebサーバソフトをインストールするように設定する~

Last updated at Posted at 2023-07-03

目的

EC2にNginxがインストールされた状態を作り出し、ブラウザからデフォルトページが確認できることをゴールとする。
インフラ構築はTerraformでコード化することで再現性、再利用性、速度などが手作業に比べると高い。
GitHubリンク

手順

  1. TerraformからAWSリソースを操作できるように設定する
  2. Terraformをインストールする
  3. TerraformでEC2サーバを立ち上げてみる
  4. ネットワークを整える(VPC, サブネット, ルーティングテーブル,インターネットゲートウェイ)
  5. セキュリティグループ(ファイアウォール)を設定する
  6. Webサーバ用EC2を立ち上げる
  7. Webサーバが立ち上がる際にWebサーバソフトをインストールするように設定する

今回の到達点

Webサーバが立ち上がる際にWebサーバソフトをインストールするように設定する

Webサーバを立てる準備

  • ネットワークを構築する
  • ネットワークに許可する通信を設定する
  • EC2をプライベートネットワークに所属させて外部からアクセスできるようにする
  • EC2にWebサーバソフト(今回はNginx)をインストールする ←今回はここ!
Step1. webserver.tfにインスタンスユーザデータを設定する

EC2インスタンスが初回起動時にroot権限で実行するスクリプト。
今回はシェルスクリプト形式で記述するが、他の形式もあるらしい。
webserver.tfを以下のように変更(末尾にユーザデータを追加)。

webserver.tf
# Key pair
resource "aws_key_pair" "keypair" {
  key_name   = "${var.project}-${var.environment}-keypair"
  public_key = file("./kekkepy-keypair.pub")

  tags = {
    Name    = "${var.project}-${var.environment}-web-sg"
    Project = "${var.project}"
    Env     = "${var.environment}"
  }
}

#Web server
resource "aws_instance" "web_server" {
  ami                         = "ami-0cfc97bf81f2eadc4"
  instance_type               = "t2.micro"
  subnet_id                   = aws_subnet.public-subnet.id
  associate_public_ip_address = true
  vpc_security_group_ids      = [aws_security_group.web_sg.id]
  key_name                    = aws_key_pair.keypair.key_name

  tags = {
    Name    = "${var.project}-${var.environment}-webserver"
    Project = "${var.project}"
    Env     = "${var.environment}"
    Type    = "app"
  }

  user_data = <<EOF
#!/bin/bash
sudo dnf update -y
sudo dnf install nginx -y 
sudo systemctl enable nginx
sudo systemctl start nginx
EOF
}
Step2. 一度環境を破壊する

初回起動時のみ実行されるので、一度EC2インスタンスを含めた今回の環境を破壊しておく。

$ terraform destroy -auto-approve
Step3. 環境を再度構築
$ terraform apply -auto-approve
Step4. Nginxが無事にインストールされているか確認

マネジメントコンソールからEC2インスタンスのパブリックIPアドレスを確認する
image.png

パブリックIPアドレスをアドレスバーに入力して接続すると、無事Nginxの「正しくインストールできています」のページが表示される。
image.png

これにて「Tarraformを使ってAWSにWebサーバを構築」完了!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?