如何通过Terraform设置Nomad

时间:2017-09-25 09:46:37

标签: docker debian terraform orchestration nomad

我是初学者,我有问题找到Terraform和Nomad的解决方案。我需要运行Nomad和hashi-ui来管理Nomad。我尝试通过terrafom设置和运行Nomad服务器。 Hashi-ui我喜欢游牧工作。 Nomad服务器和Hashi-ui运行良好。 Hashi-ui我在码头工作。现在我需要创建用于自动化初始设置和编排游牧的terraform文件。我的服务器在Debian 8上运行。

我的terraform文件nomad.tf:

# Configure the Nomad provider
provider "nomad" {
  address = "http://localhost:4646"
  region = "global"
# group = "server"
}

variable "version" {
  default = "latest"
}

data "template_file" "job" {
  template = "${file("./hashi-ui.nomad")}"

  vars {
    version = "${var.version}"
  }
}

# Register a job
resource "nomad_job" "hashi-ui" {
  jobspec = "${data.template_file.job.rendered}"
}

和游牧工作hashi-ui.nomad:

job "hashi-ui" {
  region      = "global"
  datacenters = ["dc1"]
  type        = "service"

  group "server" {
    count = 1

    task "hashi-ui" {
      driver = "docker"

      config {
        image        = "jippi/hashi-ui"
        network_mode = "host"
      }

      service {
        port = "http"

        check {
          type     = "http"
          path     = "/"
          interval = "10s"
          timeout  = "2s"
        }
      }

      env {
        NOMAD_ENABLE = 1
        NOMAD_ADDR   = "http://0.0.0.0:4646"
      }

      resources {
        cpu    = 500
        memory = 512

        network {
          mbits = 5

          port "http" {
            static = 3000
          }
        }
      }
    }
  }
}

Terraform计划会显示更改,但是terraform apply会抛出此错误:

应用计划时出错:

发生1个错误:

Terraform在面对错误时不会自动回滚。 相反,您的Terraform状态文件已部分更新 任何成功完成的资源。请解决错误 以上并再次申请逐步改变您的基础设施。

如果我在旁边运行nomad服务器而不是错误

发生1个错误:

  • nomad_job.hashi-ui:发生1个错误:

  • nomad_job.hashi-ui:应用jobspec时出错:意外的响应代码:500(发生1个错误:

  • 任务组服务器验证失败:发生1个错误:

  • 发生了2个错误:

  • Max parallel不能小于1:0< 1

  • Stagger必须大于零:0s)

你能帮我吗?

1 个答案:

答案 0 :(得分:1)

您在游牧工作规范中错过了最大并行和错开:

job "hashi-ui" {
  region      = "global"
  datacenters = ["dc1"]
  type        = "service"

  update {
    stagger      = "30s"
    max_parallel = 2
  }

  count = 1

  task "hashi-ui" {
    driver = "docker"

    config {
      image        = "jippi/hashi-ui"
      network_mode = "host"
    }
...