Prior to Ansible 2.5, the syntax for loops used to be with_x
. Starting at 2.5, loop
is favored and with_x
basically disappeared from the docs.
Still, the docs mention exemples of how to replace with_x
with loop
. But I'm clueless as to how we're now supposed to loop through a directory of files.
Let's say I need to upload all the files within a given dir, I used to use with_fileglob
.
- name: Install local checks
copy:
src: "{{ item }}"
dest: /etc/sensu/plugins/
owner: sensu
group: sensu
mode: 0744
with_fileglob:
- plugins/*
So what's the modern equivalent? Is it even possible? I know I still can use with_fileglob
but as I'm writing new roles, I'd better have them future-proof.
loop: "{{ lookup('fileglob', 'plugins/*', wantlist=True) }}"
The difference between lookup and query is largely that query will always return a list. The default behavior of lookup is to return a string of comma-separated values. lookup can be explicitly configured to return a list using wantlist=True.
loop: "{{ query('fileglob', 'plugins/*') }}"
loop: "{{ q('fileglob', 'plugins/*') }}"
All three options give the same result. See Lookup plugins.