Terraform 无法启动 docker 服务

Terraform unable to start docker service

我是第一次使用 Terraform 和 Packer。我正在尝试为内置 Docker 的 CentOS 创建 AWS AMI。从下面的加壳脚本中可以看出,我所做的只是 运行 执行 docker 文档中描述的一些 yum 命令,以便安装 docker。 =17=]

{
    "builders": [
    {
        "type": "amazon-ebs",
        "profile": "digital",
        "source_ami": "ami-061b1560",
        "instance_type": "t2.micro",
        "ssh_username": "centos",
        "ami_name": "centos-docker {{timestamp}}"
    }
],

"provisioners": [{
    "type": "shell",
    "inline": [
        "sleep 30",
        "sudo yum install -y yum-utils device-mapper-persistent-data lvm2",
        "sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo",
        "sudo yum makecache fast",
        "sudo yum install docker-ce"
    ]
}]

}

然后我在我的 terraform 脚本中使用上述脚本创建的 AMI,并添加 local-exec provisioner 以启动 docker 服务

provider "aws" {
   profile = "digital"
   region = "eu-west-1" 
}

resource "aws_instance" "chat-server" {
    ami = "ami-XXXXXX" 
    instance_type = "t2.micro"

    provisioner "local-exec" {
        command = "sudo systemctl start docker"
    }
}

当我 运行 terraform apply 时,它会在试图启动 docker 服务的命令附近徘徊。

aws_instance.chat-server: Creating...
  ami:                          "" => "ami-609f6919"
  associate_public_ip_address:  "" => "<computed>"
  availability_zone:            "" => "<computed>"
  ebs_block_device.#:           "" => "<computed>"
  ephemeral_block_device.#:     "" => "<computed>"
  instance_state:               "" => "<computed>"
  instance_type:                "" => "t2.micro"
  ipv6_address_count:           "" => "<computed>"
  ipv6_addresses.#:             "" => "<computed>"
  key_name:                     "" => "<computed>"
  network_interface.#:          "" => "<computed>"
  network_interface_id:         "" => "<computed>"
  placement_group:              "" => "<computed>"
  primary_network_interface_id: "" => "<computed>"
  private_dns:                  "" => "<computed>"
  private_ip:                   "" => "<computed>"
  public_dns:                   "" => "<computed>"
  public_ip:                    "" => "<computed>"
  root_block_device.#:          "" => "<computed>"
  security_groups.#:            "" => "<computed>"
  source_dest_check:            "" => "true"
  subnet_id:                    "" => "<computed>"
  tenancy:                      "" => "<computed>"
  volume_tags.%:                "" => "<computed>"
  vpc_security_group_ids.#:     "" => "<computed>"
aws_instance.chat-server: Still creating... (10s elapsed)
aws_instance.chat-server: Still creating... (20s elapsed)
aws_instance.chat-server: Still creating... (30s elapsed)
aws_instance.chat-server: Provisioning with 'local-exec'...
aws_instance.chat-server (local-exec): Executing: /bin/sh -c "sudo 
systemctl start docker"
Password:aws_instance.chat-server: Still creating... (40s elapsed)
aws_instance.chat-server: Still creating... (50s elapsed)
aws_instance.chat-server: Still creating... (1m0s elapsed)
.
.
.
aws_instance.chat-server: Still creating... (9m0s elapsed)
aws_instance.chat-server: Still creating... (9m10s elapsed)

Interrupt received.
Please wait for Terraform to exit or data loss may occur.
Gracefully shutting down...
stopping apply operation...

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

我在这里做错了什么?

您使用了错误的配置器,您应该使用 remote-exec