Я ищу здесь разъяснения. Кажется управлять домом атрибут пользователь определенный тип работает только тогда, когда пользователь не существует. Взгляните на этот DSL
user { 'artifactory':
ensure => 'present',
home => '/home/artifactory',
managehome => true,
}
file { '/home/artifactory/data':
ensure => link,
target => '/var/lib',
require => User['artifactory'],
}
При первом запуске он работает нормально, однако, если я удалю искусство домашний каталог пользователя, затем запустите его снова, puppet barfs.
Ошибка: не удалось установить ссылку при гарантии: нет такого файла или каталога
Моя первая мысль действительно? Взгляните на документация
Следует ли управлять домашним каталогом при управлении пользователем. Это создаст домашний каталог при условии, что => присутствует
Если я удалю пользователя и попробую снова, он заработает. Так это задумано или это ошибка? Мне это кажется деликатным.
С точки зрения времени выполнения марионетка проверяет статус пользователя в системе и сравнивает его с манифестом. Если пользователь не существует в системе, марионетка запускает соответствующий useradd
команда для его создания. Если пользователь не должен существовать, а существует, то он запускает соответствующий userdel
команда. Если какой-либо атрибут пользователя, такой как членство в группе, uid, имя и т. Д., Изменился, он выдает соответствующий gpasswd
или usermod
команда.
К сожалению, документация по типу пользователя не самая ясная. В managehome
параметр не столько делает заявление об этом каталоге, сколько является опцией для useradd
, usermod
, или userdel
команда. Итак, если вы установите managehome => true
и измените расположение домашнего каталога, тогда он будет создан, если вы удалите пользователя, он будет удален, а если вы добавите пользователя, он будет создан. Однако это не гарантирует, что каталог существует постоянно.
Если это необходимо, я бы порекомендовал вам создать тип файла и установить соответствующий файл require. Что-то вроде этого:
user { 'artifactory':
ensure => 'present',
home => '/home/artifactory',
managehome => true,
}
file {
'/home/artifactory/data':
ensure => link,
target => '/var/lib',
require => [ User['artifactory'], File['artifactoryhomedir'] ];
'/home/artifactory':
ensure => directory,
alias => 'artifactoryhomedir',
require => User['artifactory'];
}
Это известная проблема. Планируемое решение - сохранить текущее поведение, но переименовать управлять домом к создать дом чтобы было понятнее.