iterate over disk devices

Hi all,

Is there a way how ti easily iterate over facter_blockdevices?

Example:

  • name: checking disks for failure
    command: /usr/sbin/smartctl /dev/{{ item }}
    with_items: facter_blockdevices
    register: smart_out

Facts:
“facter_blockdevices”: “sda,sdb,sdc,sdd,sde,sdf”,

Thanks!

Filip

Ahoj Filip,

I would consider separating facter_blockdevices fact to a list. ( see https://gist.github.com/VerosK/9853931 ).

I don’t now if this is the right Ansible-way, but at least it works.

–Věroš

Hi Filip,

You’ll find that calling the split method on the string works.

See this Gist: https://gist.github.com/angstwad/9893480

Thank you!

I tried jinja filters and they do not work :).
I assume I can use any python function there right?

Hi Filip,

No problem!

No, not every Python function is available in Jinja. In that example, you see we can use any method associated with string in Jinja, because the string is still an object, and it’s methods come with it. Just remember that you always have access to the objects methods.

For future reference, by the way, the list of standard Jinja filters are here: http://jinja.pocoo.org/docs/templates/#builtin-filters
I’m actually not sure if all the Ansible filters are documented in a single place, but IIRC they are all in the following Python file:
https://github.com/ansible/ansible/blob/devel/lib/ansible/runner/filter_plugins/core.py