在Ansible剧本中将动态变量与with_item一起传递给include_tasks的语法

时间:2019-05-29 11:20:05

标签: ansible ansible-2.x

执行parent.yml,后者依次调用child.yml剧本以执行动态变量。

parent.yml中的变量不会插在child.yml剧本中。如果我使用正确的语法,可以纠正我吗?

Parent.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]:失败! => {“原因”:“任务中未检测到任何操作。这通常表示模块名称拼写错误或模块路径不正确。\ n \ n错误似乎在'/ home / ansible / playbooks / DBpatch / Linux / child中。 yml':第1行,第3列,但是\ n根据具体的语法问题,可能\ n在文件的其他位置。\ n \ n出现问题的行似乎是:\ n \ n \ n-名称:MySQL dump \ n ^ here \ n“}

1 个答案:

答案 0 :(得分:0)

include_task需要一个任务列表,但是您要给它一个完整的手册。 Child.yml仅应包含“任务:”行下方的内容。 另请参见https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_includes.html