如何按字母顺序 运行 Ansible with_fileglob?
How to run Ansible with_fileglob in alpabetical order?
我正在尝试构建一个系统,该系统将按字母顺序包含目录中的任务。假设我在一个目录中有以下文件:
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/*"
并以 运行dom 顺序获取输出:
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 }}"
参考文献:
我正在尝试构建一个系统,该系统将按字母顺序包含目录中的任务。假设我在一个目录中有以下文件:
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/*"
并以 运行dom 顺序获取输出:
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 }}"
参考文献: