Including classes from defined types
The example_app_config
type that was defined in the previous example is supposed to serve a very specific purpose. Therefore, it assumes that the base directory, /etc/example_app
, and its subdirectories were managed independently, outside the defined type. This was a sound design, but many defined types are meant to be used from lots of independent classes or other defined types. Such defines need to be self-contained.
In our example, the defined type needs to make sure that the following resources are part of the manifest:
file { [ '/etc/example_app', '/etc/example_app/config.d.enabled' ]: ensure => 'directory', }
Just putting this declaration into the body of the define will lead to duplicate resource errors. Each instance of example_app_config
will try to declare the directories by itself. However, we already discussed a pattern to avoid just that issue—we called it the component class.
To make sure that any instance of the example_app_config
type is self-contained and works on its own, wrap the preceding declaration in a class (for example, class example_app_config_directories
) and make sure to include this class right in the body of the define:
define example_app_config(Array $regions = []) { include example_app_config_directories ... }
- Bootstrap Site Blueprints Volume II
- Kibana Essentials
- Vue.js 3.0源碼解析(微課視頻版)
- 基于差分進化的優化方法及應用
- Visual C++串口通信技術詳解(第2版)
- Java設計模式及實踐
- Python數據分析從0到1
- 名師講壇:Spring實戰開發(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- Mastering JavaScript Design Patterns(Second Edition)
- Flutter跨平臺開發入門與實戰
- 從Excel到Python數據分析:Pandas、xlwings、openpyxl、Matplotlib的交互與應用
- Magento 2 Beginners Guide
- JBoss AS 7 Development
- Natural Language Processing with Python Cookbook
- HTML5+CSS+JavaScript深入學習實錄