我正在尝试使用puppet来引导新的VPS。我将运行多个站点,目前我计划在不同的用户帐户中运行它们。我想为所有这些用户提供一个共同的授权密钥。我正在使用木偶4.10。
我遇到的问题是我想将ssh key
添加到所有这些用户的authorized_keys中,但我似乎无法弄清楚如何拥有公共资源。我已经尝试在课堂上添加它然后包含它,但它是重复的。我尝试将一个变量传递给类,但是再次重复。
基本上我有一个像这样的模块
class wibble_somesite {
user { 'someuser':
ensure => 'present',
managehome => true,
purge_ssh_keys => true,
home => '/home/someuser',
shell => '/bin/bash'
}
ssh_authorized_key { 'patrickmacbookair':
ensure => present,
user => 'someuser',
type => 'ssh-rsa',
key => 'some_shared_key'
}
}
然后我将其包含在我的manifests/site.pp
中。但是,我希望拥有这些class wibble_someothersite
的倍数,并希望集中管理some_shared_key
节中的ssh_authorized_key
。
任何帮助将不胜感激。我已经尝试过关注文档,但我没有到达任何地方。
我可以复制所有ssh_authorized_key
次来电,但这显然很糟糕。
答案 0 :(得分:3)
您不能拥有多个类的实例。但是,您可以使用已定义的类型。
你的例子可以是:
define wibble_somesite () {
user { $title:
ensure => 'present',
managehome => true,
purge_ssh_keys => true,
home => "/home/${title}",
shell => '/bin/bash'
}
ssh_authorized_key { "${title}_patrickmacbookair":
ensure => present,
user => $title,
type => 'ssh-rsa',
key => 'some_shared_key'
}
}
你可以像这样使用它:
wibble_somesite{'patrick':}
wibble_somesite{'bob':}
它将创建用户'patrick'和'bob',并允许共享密钥连接。
这是你在找什么?