2017-02-22 15 views
0

Я пытаюсь получить корневой раздел (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

 Смежные вопросы

  • Нет связанных вопросов^_^