2017-02-24 62 views
1

我想使用木偶因素获得根分区(mountpoint => "/")名称。当我运行"facter mountpoints"时,它显示多个分区。我想从结果中获得变量"/dev/md3"木偶:使用因素过滤器获取安装点

{ 
/=> { 
    available => "893.71 GiB", 
    available_bytes => 959608590336, 
    capacity => "1.86%", 
    device => "/dev/md3", 
    filesystem => "ext4", 
    options => [ 
     "rw", 
     "errors=remount-ro" 
    ], 
    size => "910.69 GiB", 
    size_bytes => 977843884032, 
    used => "16.98 GiB", 
    used_bytes => 18235293696 
    }, 
    /run => { 
    available => "794.91 MiB", 
    available_bytes => 833527808, 
    capacity => "0.07%", 
    device => "tmpfs", 
    filesystem => "tmpfs", 
    options => [ 
     "rw", 
     "noexec", 
     "nosuid", 
     "size=10%", 
     "mode=0755" 
    ], 
    size => "795.48 MiB", 
    size_bytes => 834125824, 
    used => "584.00 KiB", 
    used_bytes => 598016 
    }, 
    /tmp => { 
    available => "1.78 GiB", 
    available_bytes => 1909157888, 
    capacity => "1.21%", 
    device => "/dev/md1", 
    filesystem => "ext4", 
    options => [ 
     "rw" 
    ], 
    size => "1.80 GiB", 
    size_bytes => 1932533760, 
    used => "22.29 MiB", 
    used_bytes => 23375872 
    } 
} 

我试图使用过滤器,但我无法过滤"/"设备。 $root_mount = $facts['mountpoints'].filter |$mountpoint| { $mountpoint == '/' }你们有什么想法吗?

回答

2

你可以直接通过散列符号来访问这个事实。由于您的问题严重意味着您正在使用Facter 3/Puppet 4,因此我将使用该语法。

您只需直接遍历Facter散列中的键即可获得/dev/md3的值。如果我们尽量减少facter mountpoints散到相关的部分:

{ 
/=> { 
    device => "/dev/md3" 
    } 
} 

那么我们可以看到,关键是mountpoints(你直接访问该密钥当您从CLI做facter mountpoints),/device。这里

$facts['mountpoints']['/']['device'] # /dev/md3 

检查的详细信息:因此,利用木偶标准哈希符号与$facts哈希,我们可以访问该值https://docs.puppet.com/puppet/4.9/lang_facts_and_builtin_vars.html#the-factsfactname-hash

+0

太好了!非常感谢 – Mike