В последнее время активно работаю с системой управления конфигурациями Ansible, поэтому есть что записать.
Одна из последних задач: получить список хостов, удовлетворяющий заданному условию. В моем случае нужно было отобрать серверы, у которых в перечне используемых файловых систем есть устаревшая ext2. Информация о смонтированных файловых системах есть в автоматически собираемых фактах (gather_facts: yes в ansible.cfg или описании плейбука), поэтому каких-то дополнительных действий на хосте собирать не нужно.
Чуть усложнило ситуацию то, что элемент ansible_mounts представляет собой не словарь, как большинство элементов, возвращаемых модулем setup, а массив. Таким образом, для получения, к примеру, точки монтирования, требуется использовать не ansible_mounts.fstype, а ansible_mounts[0].fstype, причем количество элементов этого массива будет уникальным для каждого хоста.
Решением такой задачи будет плейбук следующего вида:
- name: Check hosts for ext2fs availableЕсли исключить атрибут when: , в файл будут записаны все найденные точки монтирования.
hosts: all
gather_facts: yes
tasks:
- name: create list of files with ext2fs partitions
shell: "echo {{ansible_fqdn|quote}},{{item.mount|quote}},{{item.fstype|quote}}, >> ./ext2fs_list_`date +%s`.csv"
args:
chdir: /tmp/
delegate_to: localhost
with_items: "{{ ansible_mounts }}"
when: item.fstype == "ext2"
Комментариев нет:
Отправить комментарий