Puppet资源管理与数据分离:从覆盖参数到Hiera应用
1. 覆盖资源参数
在资源管理中,导出和虚拟资源通常只需声明一次,之后可在不同上下文中收集。不过,有时资源的中央定义无法在所有节点上安全实现。例如用户资源,为确保网络中用户账户的一致性,通常需要管理分配给每个账户的用户ID。虽然LDAP或类似目录服务可解决此问题,但并非所有站点都适用。
即便大多数机器上的账户能使用指定ID,仍可能存在例外情况。一些旧机器可能已将某些ID用于其他用途,难以更改,若在这些机器上创建具有相同ID的用户,操作将会失败。允许重复ID虽能创建账户,但并非解决之道,因为重复ID通常不可取。
Puppet提供了一种便捷方式来处理此类例外。若要为用户 felix 分配非标准的UID 2066,可通过属性值规范实现资源:
User<| title == 'felix' |> {
uid => '2066'
}
你可以传递适用于该资源类型的任何属性、参数或元参数。通过这种方式指定的值是最终值,不可再次覆盖。
此语言特性功能强大,覆盖操作不仅适用于虚拟和导出资源,还能在清单的任何位置覆盖任何资源,从而实现一些出色的构造和快捷方式。
以之前创建的Cacti模块为例,该模块声明了一个包资源以确保软件安装,并指定了 ensure => installed 。若模块用户希望Puppet保持包的更新,此设置并不合适。虽然为模块类添加参数可让用户选择包和其他资源的
超级会员免费看
订阅专栏 解锁全文
10

被折叠的 条评论
为什么被折叠?



