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_data
でuserdata.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
と決め打ちにしていますが、大丈夫なはずです。