2017-08-06 83 views
2

我第一次使用Terraform和Packer。我正在尝试为内置Docker的CentOS创建AWS AMI。从以下的打包程序脚本可以看出,我所做的只是运行docker文档中所述的多个yum命令来安装docker。Terraform无法启动码头服务

{ 
    "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置备启动搬运工服务

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,它徘徊它试图启动泊坞窗服务的命令。

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. 

我在做什么错在这里?

回答

3

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