ansible - 我可以在 tasks/main.yml 中的 include_tasks 中包含多个任务吗?
问题描述
我想从我的主任务文件中包含多个变量和任务,但是当我尝试这样做时收到以下错误:
ERROR! unexpected parameter type in action: <class 'ansible.parsing.yaml.objects.AnsibleSequence'>
...
The offending line appears to be:
- name: install and configure [application]
^ here
这是我在角色中的 tasks/main.yml 文件:
---
- name: install and configure [application]
include_vars:
- dependencies.yml
- directories.yml
- installations.yml
include_tasks:
- pre-setup.yml
- [application-23].yml
- database.yml
- [application-4].yml
- update.yml
- additional-components.yml
- ldap.yml
- test.yml
我怀疑我的格式或语法无效,但我不确定如何修复它。
我现在更愿意让我的变量在全球范围内可用。
解决方案
- 一个 ansible 任务只能做一个动作,即只包含一个模块调用
- 该
include_tasks
模块不接受file
/free-form 参数中的列表,只有一个文件名 - 如果您使用该选项加载完整目录,该
include_vars
模块最终可以读取多个文件。dir
- 在您包含的任务中,有些文件名看起来有点奇怪,可能会导致错误。您的文件名真的包含方括号 (
[]
) 吗?它们是列表的标记,可能会被这样解释。
从我目前掌握的信息来看,这就是我可以建议解决您当前失败的任务的全部内容:
- name: Include variables
include_vars: "{{ item }}"
loop:
- dependencies.yml
- directories.yml
- installations.yml
- name: Play needed tasks in order
include_tasks: "{{ item }}"
loop:
- pre-setup.yml
- application-23.yml
- database.yml
- application-4.yml
- update.yml
- additional-components.yml
- ldap.yml
- test.yml
同时,我建议您花点时间多阅读一下文档,并熟悉角色的概念,因为上面的设计乍一看并不是一个好的设计。
推荐阅读
- android - 如何将纪元时间转换为日期,时区以毫秒为单位的偏移量定义
- powershell - 枚举 SpecialFolders 枚举
- windows - Packer for Windows Server 中的文件配置程序
- php - DomCrawler 过滤器 html 标签
- flutter - 如何以编程方式缩放或收缩颤动?
- xml - 为什么在 XML 中附加重复元素?
- c# - 使用 Linq 任何查询或表达式来构建查询以提高性能
- python - 如何处理异常,让脚本继续工作?
- javascript - 'angular-ui-grid' 扩展行问题
- c++ - 是否有内置方法来检测异常值?