2017-02-22 100 views
0

我想使用Puppet facter獲得根分區(mount => "/")的名稱。 當我運行「facter partitions」時,它顯示三個分區。 我想從結果中獲得變量「sda3」。Puppet使用facter獲取根分區名稱

{ 
    /dev/sda1 => { 
    size => "1.00 MiB", 
    size_bytes => 1048576 
    }, 
    /dev/sda2 => { 
    filesystem => "ext2", 
    mount => "/boot", 
    size => "477.00 MiB", 
    size_bytes => 500170752, 
    uuid => "8345d60e-e09a-4723-b5a6-149f4002706d" 
    }, 
    /dev/sda3 => { 
    filesystem => "ext4", 
    mount => "/", 
    size => "49.71 GiB", 
    size_bytes => 53376712704, 
    uuid => "a1330fb2-7f13-417e-8908-813b1fdae911" 
    }, 

我試過$hddname = $facts['partitions']['mount'] == "/",但出現錯誤。 你們有什麼想法嗎?

回答

0

在處理散列和數組時,您可能需要Puppet Iteration and loops功能。該頁面鏈接到一些有用的功能,並將幫助您找到您需要的。

首先,你需要過濾輸入:相當於

$root_partition = $facts['partitions'].filter |$device, $partition| { $partition['mount'] == '/' } 

這整個的/ dev/sda3的哈希值分配給$root_partition,到{"/dev/sda3" => {"filesystem" .... }}

然後從左邊的單一哈希鍵使用keys功能從stdlib提取設備名稱:

$hddname = keys($root_partition)[0] 
+0

謝謝!它工作完美。 – Mike