/data
というマウントが必要なEC2インスタンスを展開しています。これは、AWSでボリュームアタッチを使用して接続している別個のディスクです。Terraform EC2のユーザーデータを使用した問題
私は手動で以下の操作を行ったときに正常に動作するので、私が使用するスクリプトは動作しますが、経由で追加すると問題が発生し、mkfs
コマンドは実行されません。あなたは私のテラフォームの設定が表示される場合
:
resource "aws_instance" "bastion01" {
ami = "${var.aws_ami}"
key_name = "a36-key"
vpc_security_group_ids = ["${aws_security_group.bath_office_sg.id}","${aws_security_group.bastion01_sg.id}","${aws_security_group.outbound_access_sg.id}"]
subnet_id = "${element(module.vpc.public_subnets, 0)}"
instance_type = "t2.micro"
tags {
Name = "x_bastion_01"
Role = "bastion"
}
}
resource "aws_instance" "riak" {
count = 5
ami = "${var.aws_ami}"
vpc_security_group_ids = ["${aws_security_group.bastion01_sg.id}","${aws_security_group.riak_sg.id}","${aws_security_group.outbound_access_sg.id}"]
subnet_id = "${element(module.vpc.database_subnets, 0)}"
instance_type = "m4.xlarge"
tags {
Name = "x_riak_${count.index}"
Role = "riak"
}
root_block_device {
volume_size = 20
}
provisioner "file" {
source = "datapartition.sh"
destination = "/tmp/datapartition.sh"
}
}
resource "aws_volume_attachment" "riak_data" {
count = 5
device_name = "/dev/sdh"
volume_id = "${element(aws_ebs_volume.riak_data.*.id, count.index)}"
instance_id = "${element(aws_instance.riak.*.id, count.index)}"
provisioner "remote-exec" {
inline = [
"chmod +x /tmp/datapartition.sh",
"/tmp/datapartition.sh",
]
connection {
bastion_host = "${aws_instance.bastion01.public_ip}"
bastion_user = "ubuntu"
}
}
}
を、次のように、パーティションのスクリプトは次のとおりです。
#!/bin/bash
if [ ! -d /data ];
then mkdir /data
fi
/sbin/mkfs -t ext4 /dev/xvdh;
while [ -e /dev/xvdh ] ; do sleep 1 ; done
mount /dev/xvdh /data
echo "/dev/xvdh /data ext4 defaults 0 2" >> /etc/fstab
私はterraform
mkfsコマンドを経由して、これを行う際に今起こるとは思われないと私はsyslogに明らかなエラーは見られません。スクリプトを手動でコピーしただけで、bash script.sh
マウントが作成され、期待どおりに動作します。
誰にでも何か提案がありますか?
編集:これはAWS guiでuserdataの下に追加しても問題ありません。
そうな 'は/ dev/xvdh'がまだ付いていません。最初の条件の後に30秒の睡眠を投げて試してみてはどうでしょう。 –
これはありがとうございました。もともと30秒の睡眠がありました。私はこれもそうだと思って、別の方法で示唆されたログ行を追加しました(私はすべてのログ行を見ることができましたが、mkfsとは関係ありません)。応答 –