我正在尝试创build一个stream氓框用于开发Puppet作为提供者。 我想为stream浪用户设置一个特定的.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": }
模块/演示/舱单/ 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]]; } } }
模块/演示/舱单/ user.pp:
define demo::user ($ensure=present, $groups=[]) { $user = $name user { $user: ensure => $ensure, groups => $groups, home => "/home/$user", managehome => true, shell => '/bin/bash'; } }
一切似乎工作正常。 我可以执行“vagrant ssh”,并得到VM的命令行提示符。 但.bashrc文件不是这里定义的:
content => template("${module_name}/bashrc.erb"),
如果我手动删除它永远不会从“stream浪汉规定”再次创build。 看来,文件资源定义永远不会被执行。 我是Puppet的新手,但是我认为应该执行在课堂上声明的一切。 而且课程正确的要求,因为一切工作正常。 有没有什么方法可供我debugging,使用“通知”在这里没有帮助。
你想pipe理/home/vagrant/.bashrc但你设置:
$user = "demo"
稍后使用:
file { "/home/${user}/.bashrc": ensure => present, owner => $user,
所以你只需要改变用户variables为无用的。