在嵌套循环中添加动态主机时 Ansible include_tasks 出错

Error with Ansible include_tasks while adding dynamic hosts in nested loop

下面是带有 import_tasks get_hosts.yml 的剧本,用于在嵌套循环中构建动态主机。但是,我的剧本出现语法错误 运行。

{{ item.split('\t')[0] }} 将使用逗号 , 分隔的 IP 地址,然后使用 /t

分隔的字符串
---

- name: "Play 1"
  hosts: localhost
  tasks:
   - name: "Search database"
     command: >       mysql --user=root --password=p@ssword deployment
       --host=localhost  -Ns -e "SELECT dest_ip,file_dets FROM deploy_dets"
     register: command_result

   - name: Add hosts
     include_tasks: "{{ playbook_dir }}/gethosts.yml"
       dest_ip: "{{ item.split('\t')[0] }}"
       groups: dest_nodes
       file_dets: "{{ item.split('\t')[1] }}"
       ansible_host: localhost
       ansible_connection: local
     with_items: "{{ command_result.stdout_lines }}"

下面是我的 get_hosts.yml 文件

 add_host:
   name: "{{ item }}" 
 with_items: "{{ dest_ip.split(',') }}"

输出:

$ ansible-playbook testinclude.yml

ERROR! Syntax Error while loading YAML.   did not find expected key

The error appears to be in '/app/deployment/testinclude.yml': line 23, column 8, but may be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

     include_tasks: "{{ playbook_dir }}/gethosts.yml"
       dest_ip: "{{ item.split('\t')[0] }}"
       ^ here We could be wrong, but this one looks like it might be an issue with missing quotes. Always quote template expression brackets when they start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

能不能给个建议

也许您忘记了 vars 参数,所以:

include_tasks: "{{ playbook_dir }}/gethosts.yml"
vars:  #  <------------------------------------------- HERE
    dest_ip: "{{ item.split('\t')[0] }}"
    groups: dest_nodes