Я пытаюсь создать бродячее поле для использования для разработки с Марионеткой как поставщик. Я хочу установить определенный .bashrc для бродячего пользователя.
Вот мои соответствующие файлы.
dev.pp:
class dev {
$target = "dev"
$root_dir = "/home/vagrant/demo"
$user = "demo"
$group = "demo"
class { "demo":
target => $target,
root_dir => $root_dir,
user => $user,
group => $group;
}
class { "demo::app::site": }
}
class { "dev": }
modules/demo/manifests/init.pp:
class demo ($target, $root_dir, $user, $group) {
group { $group:
ensure => present;
}
user { $user:
ensure => present,
managehome => true,
shell => '/bin/bash',
gid => $user,
require => Group[$group];
}
file {
$root_dir:
owner => $user,
group => $group,
ensure => directory,
require => User[$user];
}
file { "/home/${user}/.bashrc":
ensure => present,
owner => $user,
group => $group,
mode => '755',
content => template("${module_name}/bashrc.erb"),
require => User[$user];
}
if $target == 'dev' {
file { $source_dir:
owner => $user,
group => $group,
ensure => directory,
require => [File[$root_dir], User[$user]];
}
}
}
modules/demo/manifests/user.pp:
define demo::user ($ensure=present, $groups=[]) {
$user = $name
user { $user:
ensure => $ensure,
groups => $groups,
home => "/home/$user",
managehome => true,
shell => '/bin/bash';
}
}
Все, кажется, хорошо работает. Я могу выполнить "бродячий ssh", и я получаю приглашение командной строки VM. Но .bashrc файл не является тем, определенным здесь:
content => template("${module_name}/bashrc.erb"),
И если я удаляю его вручную, это никогда не создается снова из "бродячего условия". Кажется, что определение ресурса файла никогда не выполняется. Я плохо знаком с Марионеткой, но я думал, что все, что объявляется в классе, должно быть выполнено. И класс правильно требуется, потому что все остальное хорошо работает. Есть ли любые способы для меня отладить, использование 'уведомляют', не полезно здесь.
Вы хотели управлять /home/vagrant/.bashrc
, но вы установили:
$user = "demo"
, который будет использоваться позже:
file { "/home/${user}/.bashrc":
ensure => present,
owner => $user,
, поэтому вам просто нужно изменить пользовательская переменная - vagrant.