我是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'
}
}
答案 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)
}
会发生什么
$defaults
数组$users
哈希中没有shell
或prompt
的任何资源,使用此默认值答案 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