puppet定义了类型和变量

时间:2015-12-29 06:26:01

标签: puppet

我是puppet的新手,我正在尝试编写一个模块来管理10个用户的.bashrc文件。以下代码可以管理1个用户的文件。但是,我无法更改代码来管理10个用户的文件。我尝试使用已定义的类型和变量而没有运气。可以sombody请建议我正确的方法来做到这一点。

        init.pp:
        class profile (
        $bashrc      = $profile::params::bashrc,
        $bashrc_host = $profile::params::bashrc_host,

        ) inherits profile::params {

      anchor { 'profile::begin': } ->
      class { '::profile::config': } ->
      anchor { 'profile::end': }
      }

     config.pp:

     class profile::config inherits profile {

     file { $bashrc:
     ensure => file,
     source  => "puppet:///$bashrc_host",
     }
     params.pp:

    class profile::params {

    $bashrc_host        = "modules/profile/$fqdn_user1_bashrc"

    }
    case $::osfamily {

    'RedHat': {
     $bashrc = '/home/user1/.bashrc'
    }

    }

2 个答案:

答案 0 :(得分:2)

这对一个班来说根本不是一份工作。正如您在most recent comment中注意到的那样,实际上需要define

请不要在定义的名称中使用动词。而不是defineuser,只需做

define profile::user($host_name) {
}

在我的帽子顶部,我不知道在你的定义中使用模块参数的好模式。但可以使用以下模式:

class profile(
  $default_shell = $profile::params::default_shell,
  $default_prompt = $profile::params::default_prompt,
  $users = {}
) inherits profile::params {

  $defaults = { shell => $default_shell, prompt => $default_prompt }

  create_resources('profile::user', $users, $defaults)
}

会发生什么

  1. 值取自params,hiera或调用清单
  2. 这些值收集在$defaults数组
  3. 对于$users哈希中没有shellprompt的任何资源,使用此默认值

答案 1 :(得分:0)

如果你的目标是学习木偶,那么:

将param用户添加到您的类profile :: params

class profile::params {

$bashrc_host        = "modules/profile/$fqdn_user1_bashrc"
$user               = 'user1',

}
case $::osfamily {

'RedHat': {
 $bashrc = "/home/$user/.bashrc"
}

}

在此之后,你可以使用数组或hiera和ensure_resource的组合。这仍然不是最优雅的解决方案,但宝贝步骤。

如果您打算为各种用户实际管理bashrc,我建议您使用预先存在的模块,例如account