【发布时间】:2017-04-07 14:54:56
【问题描述】:
在 Ansible 2.2 中,我想遍历从 S3 读取的大量文件。
这是我的role/tasks/main.yml
这里是role/tasks/submodule.yml
因为文件太多而崩溃。
我发现我可以对数组进行切片并一次发送部分:
- 名称:处理来自 S3 的每个文件 包括:子模块.yml with_items: "{{ list_of_files_to_import[0:5] }}" - 名称:处理来自 S3 的每个文件 包括:子模块.yml with_items: "{{ list_of_files_to_import[5:10] }}" - 名称:处理来自 S3 的每个文件 包括:子模块.yml with_items:“{{ list_of_files_to_import[10:15] }}” - 名称:处理来自 S3 的每个文件 包括:子模块.yml with_items:“{{ list_of_files_to_import[15:20] }}”我不想对所有这些小块进行硬编码,而是想尝试类似的东西
- 名称:处理来自 S3 的每个文件 包括:子模块.yml with_items: "{{ list_of_files_to_import[{{start}}:{{end}}] }}"但是我们cannot get variable-defined variable names
如何在 Ansible 2.2 中处理大量项目?
【问题讨论】:
-
列表有多大?崩溃的原因是什么?包含太多?
-
大约 300 个文件。我看到的唯一原因是“内存不足”。但是,是的,它似乎无法处理这么多的包含。
-
我不确定您的详细信息,但看起来有点像问题#16391。如果是这种情况,该问题应该在下一个 Ansible 版本中得到解决。
-
@Doomy 你可能是对的。我最终用 Bash 解决了它。我会发布我的解决方案。