2017-08-06 6 views
2

J'utilise Terraform et Packer pour la première fois. J'essaie de créer et AWS AMI pour CentOS avec Docker intégré. Comme le montre mon script packer ci-dessous, tout ce que je fais est d'exécuter un certain nombre de commandes yum comme décrit dans la documentation docker afin d'installer docker.Terraform ne peut pas démarrer le service 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" 
    ] 
}] 

}

J'utilise ensuite l'AMI créé par le script ci-dessus dans mon script terraform et ajouter local-exec approvisionneurs pour démarrer le service 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" 
    } 
} 

Quand je lance terraform apply, il rôde autour la commande où il essaie de démarrer le service 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. 

Qu'est-ce que je fais mal ici?

Répondre

3

Vous utilisez le mauvais fournisseur, vous devez utiliser remote-exec.