我两年前就遇到了这里描述的问题,但我找不到有关此问题的任何文档。 http://projects.puppetlabs.com/issues/3809
我必须在同一台主机上实现两次虚拟资源,但这似乎是不可能的。有解决方法吗?还是我遇到了设计问题?
目标是为不同的账户部署相同的 ssh 公钥。我将公钥声明为虚拟资源
@ssh_authoized_key{'blah': ....}
为了让用户和根帐户实现这一点,我执行以下操作:
Ssh_athorized_key<|tag==admin|>
Ssh_athorized_key<|tag==admin|>{ user => 'root' }
2 个语句中只有第二个语句会实现。我尝试将它们隔离在不同的类中,但问题仍然相同。
有人能帮我摆脱这种困境吗?
谢谢
答案1
请使用定义来代替。
define create_virtual_ssh_authorized_key($user, $tag) {
@ssh_authorized_key { "$name":
user => $user,
tag => $tag,
...
}
}
define realize_ssh_authorized_key($tag, $user = undef) {
if ! defined($user) {
Ssh_authorized_key <| tag == $tag |>
} else {
Ssh_authorized_key <| tag == $tag |> { user => $user }
}
}
然后你可以这样做:
create_virtual_ssh_authorized_key { adminonly: user => blah, tag => admin, }
create_virtual_ssh_authorized_key { rootadmin: user => root, tag => admin, }
realize_ssh_authorized_key { adminonly: tag => admin, }
realize_ssh_authorized_key { rootadmin: tag => admin, user => root, }