【问题标题】:Syntax to pass dynamic variables to include_tasks along with with_item in Ansible playbook在 Ansible playbook 中将动态变量与 with_item 一起传递给 include_tasks 的语法
【发布时间】:2019-05-29 11:20:05
【问题描述】:

执行 parent.yml,然后调用 child.yml playbook 以使用动态变量执行。

来自 parent.yml 的变量不会插入到 child.yml 剧本中。如果我使用正确的语法,请纠正我?

父.yml

- name: Main playbook to call MySQL backup
  hosts: localhost
  gather_facts: no

  tasks:
  - include_task: child.yml
    vars:
      var1: "{{ item.name }}"
      var2: "{{ item.db_name }}"
    with_items:
       - { name: '10.10.10.01', db_name: 'prod1' }
       - { name: '10.10.10.02', db_name: 'prod2' }

child.yml(从托管数据库获取 mysqldump)

- name: MySQL dump
  hosts: localhost
  #gather_facts: no
  #vars:
  #      v1: "{{ var1 }}"
  #      v2: "{{ var2 }}"

  tasks:
  - name: Executing the shell script
    shell: 'mysqldump -h "{{ var1 }}" -u"ansi" -p"*****" "{{ var2 }}"| gzip > /tmp/mysql_dump/"{{ var2 }}"_`date +%Y%m%d-%H%M`.gz'

致命:[127.0.0.1]:失败! => {"reason": "在任务中未检测到任何操作。这通常表示模块名称拼写错误,或模块路径不正确。\n\n错误似乎在 '/home/ansible/playbooks/DBpatch/Linux/child. yml':第 1 行,第 3 列,但可能\n位于文件中的其他位置,具体取决于确切的语法问题。\n\n违规行似乎是:\n\n\n- name: MySQL dump\n ^ here\ n"}

【问题讨论】:

    标签: ansible ansible-2.x


    【解决方案1】:

    include_task 需要一个任务列表,但你给它一个完整的剧本。 Child.yml 应该只包含当前位于“tasks:”行下方的内容。 另见https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_includes.html

    【讨论】:

    • 谢谢,我通过使用字典在同一个剧本中进行了一些工作
    猜你喜欢
    • 2016-03-03
    • 2020-06-17
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    相关资源
    最近更新 更多