充分利用语言的完整工具集
在配置管理中,我们常常需要高效地管理和分配资源。Puppet 提供了一系列强大的功能,让我们可以更灵活地处理各种资源。下面将详细介绍 Puppet 中的资源标签、资源导出与导入、资源参数覆盖以及资源默认值等重要特性。
资源标签的使用
Puppet 会隐式地为所有资源添加声明类的名称、包含模块的名称以及一系列其他有用的元信息标签。我们可以利用这些标签来选择特定的资源。例如,如果用户模块将用户资源分为管理员、开发人员、QA 等不同角色的类,我们可以通过基于类名标签的集合来选择特定角色的所有用户:
User<| tag == 'developers' |>需要注意的是,标签实际上是一个数组,==比较会在标签数组中查找指定元素是否存在。再看一个例子:
@user { 'felix': ensure => present, groups => [ 'power', 'sys' ], } User<| groups == 'sys' |>这样就可以收集所有属于sys组的用户。
如果不喜欢比较隐晦的收集器语法,也可以结合realize函数一起使用,每个资源可以多次被实现,甚至可以同时通过两种方式实现。不过要注意,给定代理的清单只能实现该代理清单中声明的虚拟资源,虚拟资源不会泄露到