小编Joh*_*ell的帖子

如何以字母顺序运行 Ansible with_fileglob?

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

01-task.yml
02-task.yml
..
10-task.yml
Run Code Online (Sandbox Code Playgroud)

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

- hosts: localhost
  tasks:
  - debug:
      msg: "File {{ item }}"
    with_fileglob: "<ansible directory>/testing/files/*"
Run Code Online (Sandbox Code Playgroud)

并以随机顺序获取输出:

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
Run Code Online (Sandbox Code Playgroud)

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

编辑:感谢 Zeitounator 我有一个最终的工作代码:

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

yaml jinja2 file-globs ansible

4
推荐指数
1
解决办法
839
查看次数

标签 统计

ansible ×1

file-globs ×1

jinja2 ×1

yaml ×1