docker - Terraform 无法启动 docker 服务

标签 docker terraform packer

我是第一次使用 Terraform 和 Packer。我正在尝试为内置 Docker 的 CentOS 创建 AWS AMI。从下面的打包脚本可以看出,我所做的就是按照 docker 文档中的描述运行一些 yum 命令来安装 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.

我在这里做错了什么?

最佳答案

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

关于docker - Terraform 无法启动 docker 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45533958/

相关文章:

docker - Jenkins Docker Pipeline 覆盖工作目录

docker - 由于 “Couldn' t卸载前运行auplink而无法进行docker构建”错误

docker - 将自定义设置添加到boot2docker配置文件中

amazon-web-services - 使用 terraform 模块将额外路由添加到路由表

azure-devops - 通过 Terraform Helm 提供程序和 Azure DevOps 部署 Helm chart ,同时从 ACR 获取 Helm chart

bash - 如何自动将加壳器输出的 ami id 链接到 terraform 变量?

node.js - NODE : npm ERR! 无法获取 npm 安装上的缓存统计信息

ssh-keys - terraform 是否支持 ssh 密码保护 key ?

amazon-web-services - 在构建期间将 ebs 卷与打包程序连接

linux - 远程 ESXi 构建器检索 VM ip 失败。 ESXi 6.0,封隔器