Возможность проверить наличие неиспользуемых дисков определенного размера и создать группу томов. - PullRequest
0 голосов
/ 23 октября 2018

Я довольно новичок в ansible и совершенно новый участник stackoverflow. Я пытаюсь создать playbook, который будет искать неиспользуемые диски (может быть SAN, Solidfire или localdisk).отфильтруйте их в соответствии с переменной размера и создайте группу томов из тех дисков, которые попадают под критерии.Например, сервер имеет 2 диска 50 ГБ и 2 диска 100 ГБ.Я хочу, чтобы, даже если пользователь вводит размер 51 ГБ или 49 ГБ, в программе воспроизведения должна учитываться допустимая погрешность + -5 ГБ.Я застрял в том, как фильтровать неиспользуемые диски по размеру с ошибкой + - 5 Гб.Я могу искать неиспользуемые диски по

установленному факту: Диски: "{{ansible_local.unused_disks}}"

это дает список неиспользуемых дисков.Но как я могу отфильтровать этот список по конкретному размеру с полем ошибки, описанным выше?

EDIT ::: Да, вы правы.ansible_local.unused_disks не существует.На сервере я проверил, прежде чем он был размещен с использованием пользовательских фактов.Что не будет иметь место на каждом сервере.Поэтому мне нужно будет найти другой способ поиска дисков.Я проверил с другим SA и получил этот код.

 - name: Discover Disks
   set_fact:
     disks: "['/dev/{{item.key}}']"
   when:
     - not item.value.partitions
     - not item.value.holder
     - not item.value.links.ids
     - item.key | search ("sd")
   with_dict: "{{ ansible_devices }}"

Но он дает мне вывод, который показывает только первое найденное неиспользуемое устройство вместо всех неиспользуемых устройств в списке.Поэтому мне тоже понадобится помощь.

1 Ответ

0 голосов
/ 23 октября 2018

ansible_local не является обычной функцией ansible.Я гуглил это.Это бродячий материал?

В любом случае, то, что вы хотите сделать, это обработать список, пропуская некоторые его элементы.Это легко сделать.

- name: do something with a disks of a proper size
  command: echo do somewhing with {{ item }}
  with_items:' {{ ansible_local.unused_disks }}'
  when: min_value <= ansible_devices[item].sectors * ansible_devices[item].sectorsize <= max_value 
  vars:
    min_value: '{{ user_input * 1024 * 1024 * 1024 * 1.05 }}'
    max_value: '{{ user_input * 1024 * 1024 * 1024 * 1.05 }}'
...