Terraform无法启动泊坞窗服务

时间:2017-08-06 16:06:58

标签: docker terraform packer

我第一次使用Terraform和Packer。我正在尝试使用内置的Docker为CentOS创建和AWS 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脚本中使用上述脚本创建的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.

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

您使用的是错误的配置程序,您应该使用remote-exec