【问题标题】:Define ansible vars dict, where variable B includes variable A from the same dict定义 ansible vars dict,其中变量 B 包括来自同一个 dict 的变量 A
【发布时间】:2019-03-11 10:02:22
【问题描述】:

是否可以在 YAML vars 文件中定义 var,如下所示:

nodeJs:
  version : "10.x"
  url     : "xxx.com/{{ nodeJS['version'] }}"
  script  : "runme.sh"

我相信这是可能的,因为 Python 本身允许这样的引用:

nodeJS = {"version": "10.x", "url": "xxx.com/"+nodeJS['version'], "script":"runme.sh"}
Output:
nodeJS
Out[34]: {'script': 'runme.sh', 'url': 'xxx.com/10.x', 'version': '10.x'}

我知道我可以简单地定义如下变量:

nodeJSversion = "10.x"
nodeJSurl = "xxx.com/{{ nodeJSversion  }}"

但不适合

【问题讨论】:

  • 我认为没有办法动态解析变量。该剧本假定它是一个字符串,并且只打印字符串而不是解析变量。为什么你没有 vars 的 jinja 模板,解析模板并在 playbook 中加载 vars 文件???
  • 我想在 playbook 的不同任务中引用这些变量,目前是这样的:- name : Download Node.js script get_url : url : "{{ njUrl }}" dest : "{{ ansible_env.HOME}}/{{ njScript }}" register : nodejs_download - name : Add Node.js PPA shell : | bash "{{ ansible_env.HOME}}/{{ njScript }}" register : njresult become : yes when : nodejs_download.changed imo,像 nodeJS['version']、nodeJS['url'] 这样的变量更易于阅读

标签: python ansible yaml


【解决方案1】:

我不认为这样可以直接完成。您可以使用 ansible 的模板模块在 yaml 文件中声明变量。在额外的变量或任何库存文件中定义要替换的变量

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    相关资源
    最近更新 更多