在外部文件中插入游牧局部变量

Posted

技术标签:

【中文标题】在外部文件中插入游牧局部变量【英文标题】:Interpolate nomad local variables in external file 【发布时间】:2021-12-31 13:51:13 【问题描述】:

在我的工作定义中,我有以下模板:

variables 
  environment = "staging"


...
    task "server" 
      template 
        data        = file("vars.env")
        destination = "secrets/file.env"
        env         = true
      
...

我的vars.env 有类似的东西

ENVIRONMENT=$var.environment

但是模板没有得到内插字符串,只有文件中的原始文本。 有没有办法告诉 nomad 在解析vars.env 文件时使用局部变量?

【问题讨论】:

【参考方案1】:

解决此问题的另一种方法是使用 artifact 节下载 vars.env 文件,然后从您的模板节中引用下载的 artifact。在做的时候,使用“source”属性而不是“data”,文件的内容被传递给模板引擎进行处理。

https://www.nomadproject.io/docs/job-specification/template#remote-template

【讨论】:

好点。将文件部署在某处而不是处理本地文件似乎工作量太大:( 这也是我自己还没有这样做的一个原因。 :) 到目前为止,我一直在我的模板中使用 HEREDOC(而不是像您在示例中所做的那样使用文件功能)和 data 属性,这确实会导致很长的 jobspec 文件。我正在考虑使用这种方法,方法是将我的配置文件存储在 Git 中,并使用工件节的能力从那里提取并正确模板化我的值。

以上是关于在外部文件中插入游牧局部变量的主要内容,如果未能解决你的问题,请参考以下文章

python-局部变量和全局变量

局部内部类访问它所在方法的局部变量时,要求该局部变量必须声明为final的原因

11函数进阶---闭包

java中成员变量和局部变量的区别

函数,作用域,树,简介

javascript痛点之一变量作用域