當前位置:成語大全網 - 新華字典 - ansible獲取集群上的未分區的磁盤

ansible獲取集群上的未分區的磁盤

背景:

當壹個服務有多塊磁盤的時候,我們需要對系統上磁盤進行分區,可是格式化。如果磁盤多,服務器多操作起來非常麻煩 。

下面這個列子就是獲取機器上所有sd*的磁盤並進行分區。

(註意:這裏有壹個bug是,如果機器上有沒有分區,直接格式化磁盤壹定不要用了。解釋下:“正常的壹塊磁盤比如/dev/sdd。要先分區,刪除壹個額外的塊設備/de/sdd1。然後對這個sdd1進行mkfs。有的人偷懶。直接對/dev/sdd進行mkfs。然後掛載就會變成/dev/sdd 沒有分區編號” 再執行這個task就會對這個磁盤重新進行分區。後果就是原來的磁盤的數據都丟了 )

逐步分析:

with_dict: "{{ ansible_device_links.ids }}"

這步就是通過fact獲取機器上的磁盤信息。

元數據大概是這樣的

通過ansible_device_links.ids 這個變量能直接獲取到磁盤相關的字典表。然後實用with_dict 直接循環ansible_device_links.ids 字典變量。得到類似這樣的數據格式

我們只要獲取key即可得到想要的磁盤編號信息。

但是key會有已經分區過的磁盤編號,比如第二條sdx3 類似這種。

對item.key 進行過濾。後面的表達式為真的繼續執行。

表達式的意思sd兩個字母後面是b到w結尾。

因為我已經已知sda 和sdx 不是我想要的磁盤。