gpt4 book ai didi

ansible - 如何按字母顺序运行 Ansible with_fileglob?

转载 作者:行者123 更新时间:2023-12-02 14:31:04 26 4
gpt4 key购买 nike

我正在尝试构建一个系统,其中包含按字母顺序排列的目录中的任务。假设我的目录中有以下文件:

01-task.yml
02-task.yml
..
10-task.yml

我希望 ansible 按顺序包含这些任务(01、02、03 等)。在测试 fileglob 是否有序时,我运行了以下命令:

- hosts: localhost
tasks:
- debug:
msg: "File {{ item }}"
with_fileglob: "<ansible directory>/testing/files/*"

并以随机顺序获取输出:

File <ansible directory>/testing/files/03-task.yml
File <ansible directory>/testing/files/05-task.yml
File <ansible directory>/testing/files/08-task.yml
File <ansible directory>/testing/files/09-task.yml
File <ansible directory>/testing/files/02-task.yml
File <ansible directory>/testing/files/10-task.yml
File <ansible directory>/testing/files/07-task.yml
File <ansible directory>/testing/files/01-task.yml
File <ansible directory>/testing/files/06-task.yml
File <ansible directory>/testing/files/04-task.yml

我正在努力想出如何对文件通配进行排序。我希望避免循环中的 set_fact 任务来创建数组、另一个要排序的任务以及另一个包含文件的任务。我缺少更有效的方法吗?

编辑:感谢 Zeitounator,我得到了最终的工作代码:

- hosts: localhost
tasks:
- name: Test Import
include_tasks: "{{ item }}"
loop: "{{ query('fileglob', \"<ansible directory>/testing/files/*\")|sort }}"

每个任务文件都很简单:

- debug: msg="This Is File [1-10]"

完美地以正确的顺序输出!

最佳答案

您可以使用新的loop语法并直接调用查找插件,然后对结果进行排序来实现您的要求:

- hosts: localhost
tasks:
- debug:
msg: "File {{ item }}"
loop: "{{ query('fileglob', '<ansible directory>/testing/files/*') | sort }}"

引用文献:

关于ansible - 如何按字母顺序运行 Ansible with_fileglob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59162054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com