ansible \包含其他带有参数的yml不起作用

ansible \ include other yml with param doesn't work

为什么这不起作用:

---
  - hosts: all
    vars:
      input_version: 99

  - include: ./tagger_1.yml input="{{ input_version }}"

child 是:

    ---
  - name: build tagger docker
    hosts: all  
    vars:       
        version: "11.0"
    tasks:
    - name: some step !!!!!!
      command: echo {{ version }}

echo 打印 child 但我想用来自 parent 的输入参数覆盖它。可行吗?

changed: [localhost] => {"changed": true, "cmd": ["echo", "11.0"], "delta": "0:00:00.010476", "end": "2016-06-23 13:21:44.091857", "invocation": {"module_args": {"_raw_params": "echo 11.0", "_uses_shell": false, "chdir": null, "creates": null, "executable": null, "removes": null, "warn": true}, "module_name": "command"}, "rc": 0, "start": "2016-06-23 13:21:44.081381", "stderr": "", "stdout": "11.0", "stdout_lines": ["11.0"], "warnings": []}

echo {{ version }}但是你在parent中设置了变量input。

如果你 command: echo {{ input }} 它应该工作。

如果你想要覆盖直接在子中定义的 var,我认为你不能,因为变量优先级。

对于 ansible 1.x

优先级如下(最后列出的变量优先):

  • “角色默认值”,其优先级高于一切并且最容易被覆盖
  • 清单中定义的变量
  • 关于系统的发现事实
  • “大多数其他”(命令行开关、游戏中的变量、包含的变量、角色变量等)
  • 连接变量(ansible_user,等等)
  • 额外的变量(命令行中的-e)总是赢

对于 ansible 2.x

  • 角色默认值
  • 库存变量 [2]
  • 库存group_vars
  • 库存host_vars
  • 剧本group_vars
  • 剧本host_vars
  • 主机事实
  • 播放变量
  • 播放vars_prompt
  • 播放vars_files
  • 注册变量
  • set_facts
  • 角色并包含变量
  • 块变量(仅适用于块中的任务)
  • 任务变量(仅针对任务)
  • 额外变量(总是优先)

有关详细信息,请参阅:http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable