LoginSignup
12

More than 5 years have passed since last update.

TerraformでEC2インスタンスにアタッチしたEBSボリュームをuser_dataでフォーマットしてマウントする

Last updated at Posted at 2016-01-07

TerraformでEC2インスタンスにアタッチしたEBSボリューム(ebs_block_device)。
やっぱりアタッチタイミングでフォーマットしてマウントしておきたいですよね。

そういうときはuser_dataが利用できます。

resource "aws_instance" "my-instance" {
  ami = "ami-123456"
  instance_type = "t2.large"
  vpc_security_group_ids = [
    "${aws_security_group.my-sg.id}"
  ]
  subnet_id = "${aws_subnet.my-subnet.id}"
  associate_public_ip_address = false
  root_block_device = {
    volume_type = "gp2"
    volume_size = "20"
  }
  ebs_block_device = {
    device_name = "/dev/sdf"
    volume_type = "gp2"
    volume_size = "100"
  }
  tags {
    Name = "my-instance"
  }
  user_data = "${file("userdata.sh")}"
  key_name = "${aws_key_pair.my-key.key_name}"
}

みたいに、user_datauserdata.shを参照するような設定をして /var/www にマウントするなら、例えば、

#!/bin/bash
/sbin/mkfs.ext4 /dev/xvdf
/bin/mkdir -p /var/www
/bin/cp /etc/fstab /etc/fstab.orig
echo '/dev/xvdf  /var/www  ext4  defaults,nofail 0 0' >> /etc/fstab
/bin/mount -t ext4 /dev/xvdf /var/www

というようなuserdata.shを設置すればいけます。

ebs_block_device.device_name/dev/sdf だから/dev/xvdf と決め打ちにしていますが、大丈夫なはずです。

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
12