模块清单与定义类型的模块化
1. 从定义类型中包含类
在某些场景下,之前定义的 example_app_config 类型有特定用途,它假定 /etc/example_app 及其子目录是在定义类型之外独立管理的。不过,很多定义类型需要在多个独立类或其他定义类型中使用,这就要求它们具备自包含性。
例如,要确保以下资源成为清单的一部分:
file {
[ '/etc/example_app',
'/etc/example_app/config.d.enabled' ]:
ensure => 'directory';
}
若直接将此声明放入定义体中,会导致重复资源错误。每个 example_app_config 实例都会尝试自行声明这些目录。为避免此问题,可使用组件类模式。将上述声明封装在一个类中(如 example_app_config_directories ),并在定义体中包含该类:
define example_app_config($regions = []) {
include example_app_config_directories
…
}
2. 类中嵌套定义
语言中有一个不太常见的特性,即类体中可以嵌套容器,类和定义类型都能成为类体的一部分。
超级会员免费看
订阅专栏 解锁全文
4918

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



