Terraform无法启动docker服务

我第一次使用Terraform和Packer。 我正在尝试为内置Docker的CentOS创buildAWS AMI。 从以下的打包程序脚本中可以看出,我所做的只是运行一些yum命令,如docker文档中所述,以便安装docker。

 { "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脚本中使用由上述脚本创build的AMI,并添加local-exec置备程序以启动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-execconfiguration器,您应该使用remote-exec