3

在由 terraform 启动后,我正在尝试获取一个 Ubuntu 云映像(特别是 ami-311a1a5b)来引导 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

我的理解是它应该被执行,有没有理由不执行?

4

1 回答 1

4

如果您的云配置文件正是这样,那么您只需要编辑第一行即可阅读

#cloud-config

否则 cloud-init 不会将其解析为云配置文件。看起来 terraform 正在为您正确设置用户数据。cloud-init 的其余文档位于https://cloudinit.readthedocs.io/en/latest/,请注意,您的 AMI 上的版本可能与文档不同,因此某些功能可能不可用。

于 2016-04-29T01:10:42.280 回答