初心者のためのTerraformの使い方: APサーバ作成編

スポンサーリンク

Terrraformを使ってAWSにAPサーバ(RDSに接続するためのサーバ)を作成する方法を解説していきます。

キーペアの作成

  • ssh-keygen -t rsa -b 2048
    Webサーバとは違う名前で作成(ここでは~/.ssh/id_rsa_terraform_apとする)
  • chmod 600 ~/.ssh/id_rsa_terraform_ap

WEBサーバにAPサーバの秘密鍵をアップ

  • cd ~/.ssh
  • sftp -i id_rsa ec2-user@WEBサーバのグローバルIP
  • sftp > put id_rsa_terraform_ap
  • sftp > rename id_rsa .ssh/id_rsa
  • sftp > quit

keypair.tfに追記(APサーバの公開鍵をEC2キーペアに登録)

data "template_file" "ssh_key_ap_pub" {
  template = file("~/.ssh/id_rsa_terraform_ap.pub")
}

resource "aws_key_pair" "auth_ap" {
  key_name = "terraform_test_ap"
  public_key = data.template_file.ssh_key_ap_pub.rendered
}

EC2インスタンスの作成

mysqlクライアントをインストールするためのシェルを用意

yum installでMySQLのリポジトリを追加する。
(昔は.repoファイルにリポジトリを追加していたが、今はリポジトリ自体もyumでインストールできる)
※リポジトリのURLはhttps://dev.mysql.com/downloads/repo/yum/で調べる。(AL2023はRHEL9ベース)

  • touch ap.sh.tplして以下を入力
#!/bin/bash
yum install -y https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
yum install -y mysql-community-client

ec2.tfに追記(APサーバを追加)

data "template_file" "ap_shell" {
  template = file("${path.module}/ap.sh.tpl")
}

resource "aws_instance" "ap" {
  ami = data.aws_ami.al2023.id
  instance_type = "t2.micro"
  key_name = aws_key_pair.auth_ap.id
  iam_instance_profile = aws_iam_instance_profile.ec2_profile.name
  subnet_id = aws_subnet.private_a.id
  vpc_security_group_ids = [aws_security_group.priv_a.id]
  root_block_device {
    volume_type = "gp2"
    volume_size = 30
    delete_on_termination = true
  }
  tags = {
    Name = "ap-instance"
  }
  user_data = base64encode(data.template_file.ap_shell.rendered)
}

SSH接続テスト

  • ssh -i ~/.ssh/id_rsa ec2-user@WEBサーバのグローバルIP
  • ssh -i ~/.ssh/id_rsa_terraform_ap ec2-user@APサーバのプライベートIP

Terraformの実行

terraform applyで実行する。

次回はTerraformを使ってRDSを作成する方法を解説していきます。

おすすめ書籍

コメント