Я пытаюсь использовать марионетку, чтобы добавить всех моих пользователей в систему и добавить их всех в одну группу. Однако я продолжаю получать
Error 400 on SERVER: Duplicate declaration: Group[users] is already declared
in file *filename*:17 cannot redeclare at *filename* on node *server*
Если я сменил пользователя на имя переменной, например $ title, он будет работать нормально. Как я могу сделать это со статическим именем группы, например «пользователь»? Я использую следующую конфигурацию:
НОТА: У меня могут быть опечатки ниже. Мне пришлось все это перепечатать, так как в моей системе нет доступа в Интернет.
define users::virtual ($uid, $realname, $password) {
user { $title:
ensure => 'present',
uid => $uid,
gid => $'users',
shell => '/bin/bash',
home => "/home/${title}",
comment => $realname,
password => $password,
managehome => true,
require => Group ['users'],
}
group { 'users':
ensure => 'present',
gid => 100,
}
file { "/home/${title}":
ensure => directory,
owner => $title,
group => 'users',
mode => 0700,
require => [ User[$title], Group['users'] ],
}
}
class users {
@users::virtual { 'user1':
uid => 510,
realname = 'John Doe',
password = cyphertext
}
@users::virtual { 'user2':
uid => 511,
realname = 'Jane Doe',
password = cyphertext
}
}
node 'server' {
realize (Users::Virtual['user1']
realize (Users::Virtual['user2']
}
Ресурс Group ['users'] не должен находиться в пределах определенного ресурса. users::virtual
. Группу можно создать только один раз, переместив ее в отдельный класс.
group { 'users':
ensure => 'present',
gid => 100,
}