ansible \包含其他yml与param不起作用

时间:2016-06-23 10:23:37

标签: ansible ansible-playbook ansible-2.x

为什么这不起作用:

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

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

孩子是:

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

echo打印孩子,但我想用父输入参数覆盖它。可行?

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": []}

1 个答案:

答案 0 :(得分:0)

echo {{ version }},但在父级中设置变量输入。

如果你command: echo {{ input }}它应该有效。

如果您想要的是覆盖直接在儿子中定义的var,我认为您可以,由于变量优先。

for ansible 1.x

优先级如下(最后列出的变量赢得优先顺序):

  • “角色默认值”,优先于所有内容并且最容易被覆盖
  • 库存中定义的变量
  • 发现有关系统的事实
  • “其他一切”(命令行开关,游戏中的变种,包括变量,角色变量等)
  • 连接变量(ansible_user等)
  • 额外的变量(命令行中的-e)总是胜利

for ansible 2.x

  • 角色默认
  • 库存变量[2]
  • inventory group_vars
  • inventory host_vars
  • playbook group_vars
  • playbook host_vars
  • 主持人事实
  • 玩变种
  • play vars_prompt
  • play vars_files
  • 已注册的vars
  • set_facts
  • 角色和包含变量
  • 阻止变量(仅适用于块中的任务)
  • 任务变量(仅适用于任务)
  • 额外的变种(总是赢得优先权)

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