drd*_*man 3 configuration configuration-management puppet
我是 Puppet 的新手并开始使用它,我想学习如何管理系统用户。
我有几个用户,他们共享共同的属性,所以我想我应该把事情弄清楚。
经过一番挣扎,这就是我带来的:
define staff::ssh_key($user) {
ssh_authorized_key { $name[name]:
ensure => present,
key => $name[key],
type => "ssh-rsa",
user => $user,
require => File["/home/${user}/.ssh"],
}
}
define staff($fullname, $ssh_keys, $shell = "/bin/bash") {
user { $name:
ensure => present,
comment => "${fullname},,,",
home => "/home/${name}",
managehome => true,
groups => ["users", "adm", "sudo"],
shell => $shell,
}
file { "/home/${name}/.ssh":
ensure => directory,
mode => 0700,
owner => $name,
require => User[$name],
}
staff::ssh_key { $ssh_keys:
user => $name,
}
}
Run Code Online (Sandbox Code Playgroud)
然后我声明这样的用户:
staff { "drdaeman":
fullname => "Aleksey Zhukov",
shell => "/bin/zsh",
ssh_keys => [
{
name => "desktop",
key => "AAAA....6s=",
}
{
name => "notebook",
key => "AAAA....Q==",
}
],
}
Run Code Online (Sandbox Code Playgroud)
暂时,我只是将这两个部分保存到一个名为staff.pp. 对于远程配置,我site.pp提供了以下内容:
node "foobar.example.org" {
import "staff.pp"
}
Run Code Online (Sandbox Code Playgroud)
虽然在本地一切似乎都正常,但通过调用puppet apply staff.pp,它在远程使用时会失败。运行puppet agent --test产生了一个错误:
err: Could not retrieve catalog from remote server: Could not intern from pson: Could not convert from pson: Could not find relationship source "Staff::Ssh_key[namenotebookkeyAAAA...Q==]"
err: Could not retrieve catalog; skipping run
Run Code Online (Sandbox Code Playgroud)
(如果这很重要,我在 Ubuntu 上使用 Puppet 2.7.14,来自 apt.puppetlabs.com。)
因此,Puppet 似乎不喜欢将哈希作为资源名称,至少在数据通过网络传递时不喜欢。有什么办法可以解决这个问题,而不是ssh_authorized_key手动复制粘贴所有必需的资源?(这对我的口味来说太冗长了)
请注意,在这种确切的情况下,我可以通过使用 simplefile "/home/${name}/.ssh/authorized_keys": ... }而不是ssh_authorized_key或using 来解决concat::fragment,但是这不适用于其他类似情况,其中某些资源具有多个依赖资源,而这些资源不容易减少到单个文件中。相反,我正在寻找一些相对通用的方法来解决这种情况和类似情况(如果有的话)。
您将需要使用 create_resource 而不是声明:
staff::ssh_key { $ssh_keys:
user => $name,
}
Run Code Online (Sandbox Code Playgroud)
为了保留 user => $name 的便利性:
Staff::Ssh_key {
user => $name,
}
create_resources('staff::ssh_key', $ssh_keys)
Run Code Online (Sandbox Code Playgroud)
还将 ssh_keys 更改为散列而不是人员中的数组 { ... ssh_keys => { } }
| 归档时间: |
|
| 查看次数: |
5110 次 |
| 最近记录: |