Мне нужно создать пользователя с именем user1 и group user1. Я определил виртуальный ресурс для его создания. Внутри class1 я создаю пользователя:
include '::class1::virtual_accounts'
realize(class::User['user1'])
Внутри class2 создайте группу:
include '::class1::virtual_accounts'
realize(class::Group['user1'])
Внутри virtual_accounts:
class class1::virtual_accounts {
@class::group { 'user1': }
@class::user { 'user1': }
При выполнении появляется ошибка:
Error: Duplicate declaration: Group[user1] is already declared in file /root/puppet/class/manifests/group.pp:23; cannot redeclare at /root/puppet/class/manifests/user.pp:95 on node arqopasr21.lacaixa.es
Внутри user.pp и group.pp у меня есть определение для создания пользователей и групп. Возможно, ошибка возникла из-за того, что виртуальный ресурс имеет то же имя (user1), спасибо
Да, объявления ресурсов должны быть уникальными. Если вы используете виртуальные ресурсы, объявите их только один раз:
@user { 'name': ... }
Не должно быть другого виртуального или не виртуального объявления User['name']
ресурс. Ты можешь понимать или собирать ресурс так часто, как вы хотите.
User<| |>
User<| title == 'name' |>
realize(User['name'])
Как общее замечание, не называйте модуль класс поскольку class
зарезервированное слово.