将hiera中的变量指定为puppet类中的用户名(带有uid和gid)
社区成员你好 我们有一个puppet文件,其主要类如下:将hiera中的变量指定为puppet类中的用户名(带有uid和gid),puppet,Puppet,社区成员你好 我们有一个puppet文件,其主要类如下: class profile::Profname::application::classname { $appname_homedir = hiera('appname::appname_homedir') $appname_installdir = hiera('appname::appname_installdir') $java_optional_args = "${java_ke
class profile::Profname::application::classname {
$appname_homedir = hiera('appname::appname_homedir')
$appname_installdir = hiera('appname::appname_installdir')
$java_optional_args = "${java_keystore_args} ${java_proxy_args} ${java_timezone_args}"
..
..
$user = hiera('appname::appname_user')
$gid = hiera('appname::appname_user_gid')
$uid = hiera('appname::appname_user_uid')
exec { "Many blocks":
command => "commands",
..
}
exec { "Many blocks":
command => "commands",
..
}
# Install and configure app
class { 'app':
user => hiera('classname::appname_user'),
jvm_opts => $java_optional_args,
download_url => "s3://${s3_bucket}/${APPDIR}/appname",
dbserver => hiera('appname::db-endpoint'),
notify => Exec["Change appname gid and uid"],
require => [ Class['java'], Exec['Create Homedir'], Exec['Create Appdir']],
}
#other exec blocks
exec { "blocks"
..
..
}
}
现在我在hiera中还有两个变量,它们是:appname_用户的uid和gid
如何在内部类“app”中创建用户“appname\u user”
我试图引用,但不确定如何在内部类中执行此操作。任何帮助都将不胜感激
稍后创建用户时,我执行了另一个exec块来更改用户的uid和gid,但这种方式似乎不适用于某些已经存在的文件。虽然木偶处决是成功的。因此,我希望在创建时使用uid和gid创建用户
感谢和问候,
萨哈
如何在内部类“app”中创建用户“appname\u user”
我最好的猜测是,你的意思是在这个结构中:
答案很简单:你不能。但是你可以做很多相关的事情
首先,“内部阶级”不是木偶中使用的术语。可以有嵌套类,但是
app
的声明,它位于classprofile::Profname::application::classname
的定义中。在计算类声明时,它告诉Puppet将指定的类包含在目录中,然后在构造中,它可以选择将值绑定到该类的一些参数。其他地方必须有一个类的定义来告诉Puppet这意味着什么。如果希望它声明一个尚未声明的资源,则必须修改该定义
您通常会通过声明user
资源(在一个或另一个类定义中)来管理用户。在您的例子中,您可以找到classapp
的定义并将其放在那里,但也可以将其放在profile类中,与classapp
的现有声明一起。哪一个最适合你取决于你想要完成什么
class { 'app':
user => hiera('classname::appname_user'),
jvm_opts => $java_optional_args,
download_url => "s3://${s3_bucket}/${APPDIR}/appname",
dbserver => hiera('appname::db-endpoint'),
notify => Exec["Change appname gid and uid"],
require => [ Class['java'], Exec['Create Homedir'], Exec['Create Appdir']],
}