如何实现多次虚拟资源?

如何实现多次虚拟资源?

我两年前就遇到了这里描述的问题,但我找不到有关此问题的任何文档。 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, }

相关内容