ansible - 在 Ansible playbook 中将动态变量与 with_item 一起传递给 include_tasks 的语法
问题描述
执行 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"}
解决方案
include_task 需要一个任务列表,但你给它一个完整的剧本。Child.yml 应该只包含当前位于“tasks:”行下方的内容。另请参阅https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_includes.html
推荐阅读
- html - 在经典 ASP 中向 AJAX 添加参数
- spring - Spring Cloud Consul 配置版本控制
- c++ - 具有 emplace-mechanisms 的 stdlib 类应该是友好的吗?
- arrays - 如何识别 Swift 数组中特定值的连续出现?
- uno-platform - 如何将类库项目添加到 Uno-Platform?
- asp.net-mvc - 为 ASP.NET MVC 5 项目设计更复杂的数据库
- java - 是否可以强制转换方法?
- swift - 插入的模型看起来比预期的大并且在相机的背面
- python - 使用 Keras 的慢 DQN
- python - 如何将具有每日收益的数据框转换为从 100 开始的数据框索引