可以检查特定大小的未使用磁盘并创建卷组

时间:2018-10-23 16:48:55

标签: ansible yaml

我对ansible还是个新手,并且是stackoverflow的一个新成员。我正在尝试创建一个剧本,以查找未使用的磁盘(可以是SAN,Solidfire或localdisk)。根据大小变量对其进行过滤,并从属于标准的那些磁盘中创建一个卷组。例如,服务器具有2个50GB的磁盘和2个100GB的磁盘。我希望这样做,即使用户输入51Gb大小或49 GB大小,剧本也应该能够考虑到+ -5gb的错误余量。我遇到的问题是如何按大小过滤具有+ 5gb的错误余量的未使用磁盘。 我可以通过

查找未使用的磁盘

设置事实:   磁盘:“ {{ansible_local.unused_disks}}”

这给出了未使用磁盘的列表。但是如何过滤上面列出的具有特定误差范围的特定尺寸的列表呢?

编辑::: 是的,你是对的。 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 :(得分:0)

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 }}'