iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0
DevOps

Hashicorp 0 到 0.003系列 第 19

Day 19. Nomad's Variable and Template

  • 分享至 

  • xImage
  •  

為了使job file更富有彈性,所以Nomad支援兩種變數Runtime Environment與Node Attributes,透過這兩種方式將變數帶入job file裡,另外還有template可以用來設定dynamic variable.

Runtime Environment

環境變數表
Runtime environment的變數,只會作用在當job已建立後才會將變數帶入環境中。
範例: 透過CLI啟動一個docker container,指定可以使用的cpu, memory.

task "test-docker" {
    driver = "raw_exec"
      config {
        command = "/usr/bin/docker"
        args = [
          "run -it",
          "tomcat:9.0",
          "--memory=${NOMAD_MEMORY_LIMIT}m","--cpu-shares=${NOMAD_CPU_LIMIT}",
          ...
          ...
          ]
      }

Node Attributes

Node Attributes的變數,會在Nomad讀取job file時生效,所以可以用來指定job要在哪一些種類的node上執行。

官網範例:

task "docs" {
  driver = "docker"
  config {
    image = "my-app"
    args = [
      "--bind", "${NOMAD_ADDR_RPC}",
      "--logs", "${NOMAD_ALLOC_DIR}/logs",
    ]

    port_map {
      RPC = 6379
    }
  }
  constraint {
    attribute = "${attr.kernel.name}"
    value     = "linux"
  }

  env {
    "DC"      = "Running on datacenter ${node.datacenter}"
    "VERSION" = "Version ${NOMAD_META_VERSION}"
  }

    meta {
    VERSION = "v0.3"
  }
}

變數說明:

config: 使用Nomad RPC的IP address來作為該task的bind ip, 使用NOMAD_ALLOC_DIR的路徑來ˊ放置log.
constraint: 用來限制該job要放置在哪些種類的node上,他要選擇kernel是linux的node來部屬task.
env: 設定container內的環境變數,使用${node.datacenter}印出該task跑在哪個DC上,版本資訊是多少。
NOMAD_META_VERSION: 這裡的VERSION是定義在metakey. 如果進到container執行 env 會看到有兩筆變數是DC與VERSION。

Template

上述的兩種變數都沒有提到儲存成file的模式,所以就有了template的出現,另外也可以透過template來整合Consul與Vault,以下是官網範例:

透過template取的Consul K/V,放到config/erp.ini

template {
  data        = "key= {{ key "erp/http/minsession" }}"
  destination = "config/erp.ini"
}

變數存到file.yml

template {
  data = <<EOH
  ---
    bind_port:   {{ env "NOMAD_PORT_db" }}
    scratch_dir: {{ env "NOMAD_TASK_DIR" }}
    node_id:     {{ env "node.unique.id" }}
    service_key: {{ key "service/my-key" }}
  EOH

  destination = "local/file.yml"
}

上一篇
Day 18. Submit Jobs to Nomad
下一篇
Day 20. Nomad Job Update Strategies
系列文
Hashicorp 0 到 0.00330
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言