用户数据未被 cloud-init 执行
User data not being execute by cloud-init
我试图在 terraform 启动后将 Ubuntu 云图像(特别是 ami-311a1a5b)获取到 bootstrap docker。为此,我有以下配置:
resource "aws_instance" "app" {
count = 1
ami = "${lookup(var.amis, var.region)}"
instance_type = "t2.micro"
subnet_id = "${aws_subnet.private.id}"
vpc_security_group_ids = ["${aws_security_group.default.id}"]
key_name = "${aws_key_pair.deployer.id}"
source_dest_check = false
# user_data = ${file("cloud-config/app.yml")}
user_data = "${template_file.cloud_config.rendered}"
depends_on = ["aws_instance.nat"]
tags = {
Name = "airpair-example-app-${count.index}"
}
root_block_device {
volume_type = "standard"
volume_size = 20
}
}
实例启动后,docker没有安装,好像还没有应用云配置。云配置如下所示:
# Cloud config for app servers
runcmd:
# Install docker
- curl -sSL https://get.docker.com | sudo sh
# Run nginx
- docker run -d -p 80:80 nginx
如果我查询用户数据,它似乎就在那里:
services/ubuntu@ip-10-128-1-213:~$ curl http://169.254.169.254/latest/user-data
# Cloud config for app servers
runcmd:
# Install docker
- curl -sSL https://get.docker.com | sudo sh
# Run nginx
- docker run -d -p 80:80 nginx
我的理解是应该执行,有什么理由不执行吗?
如果你的云配置文件正好那个,那么你只需要编辑第一行阅读
#cloud-config
否则cloud-init 不会将其解析为云配置文件。看起来 Terraform 确实为您正确设置了用户数据。 cloud-init 的其余文档位于 https://cloudinit.readthedocs.io/en/latest/,请注意您的 AMI 上的版本可能与文档不同,因此某些功能可能不可用。
我试图在 terraform 启动后将 Ubuntu 云图像(特别是 ami-311a1a5b)获取到 bootstrap docker。为此,我有以下配置:
resource "aws_instance" "app" {
count = 1
ami = "${lookup(var.amis, var.region)}"
instance_type = "t2.micro"
subnet_id = "${aws_subnet.private.id}"
vpc_security_group_ids = ["${aws_security_group.default.id}"]
key_name = "${aws_key_pair.deployer.id}"
source_dest_check = false
# user_data = ${file("cloud-config/app.yml")}
user_data = "${template_file.cloud_config.rendered}"
depends_on = ["aws_instance.nat"]
tags = {
Name = "airpair-example-app-${count.index}"
}
root_block_device {
volume_type = "standard"
volume_size = 20
}
}
实例启动后,docker没有安装,好像还没有应用云配置。云配置如下所示:
# Cloud config for app servers
runcmd:
# Install docker
- curl -sSL https://get.docker.com | sudo sh
# Run nginx
- docker run -d -p 80:80 nginx
如果我查询用户数据,它似乎就在那里:
services/ubuntu@ip-10-128-1-213:~$ curl http://169.254.169.254/latest/user-data
# Cloud config for app servers
runcmd:
# Install docker
- curl -sSL https://get.docker.com | sudo sh
# Run nginx
- docker run -d -p 80:80 nginx
我的理解是应该执行,有什么理由不执行吗?
如果你的云配置文件正好那个,那么你只需要编辑第一行阅读
#cloud-config
否则cloud-init 不会将其解析为云配置文件。看起来 Terraform 确实为您正确设置了用户数据。 cloud-init 的其余文档位于 https://cloudinit.readthedocs.io/en/latest/,请注意您的 AMI 上的版本可能与文档不同,因此某些功能可能不可用。