Как Вы настраиваете марионетку, чтобы добавить пользователя к sudoers группе, когда она варьируется в различных системах (или, как переменные работают?)

Сторонние утилиты:

PartedMagic*
GParted

*Любое подобие коммерчески именованному программному обеспечению является чисто случайным.. НЕТ!

3
задан 28 July 2010 в 17:25
2 ответа

Переменные должны быть ограничены по объему и заключены в кавычки. Правильный синтаксис для virt_groups.pp:

class virt_groups {
  include os_vars
  notice("in virt_groups, admin group is: ${os_vars::os_admin_group}, ${os_vars::os_admin_group_gid}")
  @group { "${os_vars::os_admin_group}:
    gid => "${os_vars::os_admin_group_gid}",
    ensure => present,
  }
}

Это решает мою непосредственную проблему, но все еще походит на неуклюжий способ обработать то, что является, вероятно, общей марионеточной проблемой.

1
ответ дан 3 December 2019 в 07:16

Как и в предыдущем ответе, переменные должны иметь область видимости. Не беспокойтесь об идентификаторе группы: s или виртуальных группах sudo / wheel . Если группа администраторов уже присутствует в системе, вам не нужно ее определять.

Использование? selector вместо case делает код менее подробным:

class os_vars {
  $admin_group = $::operatingsystem ? {
     'centos' => 'wheel',
     default  => 'sudo',
  }
  notice("in os_vars, admin group is: ${admin_group}")
}

class virt_users {
  include os_vars
  notice("in virt_groups, admin group is: ${os_vars::admin_group}")
  @user { 'my_user':
    ....
    groups => [$os_vars::admin_group],
  }
}

Если группа не существует, и вам нужно создать ее с помощью Puppet, лучше не использовать GID, чтобы избежать коллизий. системный параметр дает группе идентификатор из системной области:

include os_vars
group {$os_vars::admin_group:
  ensure => present,
  system => true,
}
1
ответ дан 3 December 2019 в 07:16

Теги

Похожие вопросы