- Puppet:Mastering Infrastructure Automation
- Felix Frank Martin Alfke Alessandro Franceschi Jaime Soriano Pastor Thomas Uphillis
- 312字
- 2021-07-09 18:59:04
Chapter 4. Modularizing Manifests with Classes and Defined Types
At this point, you have already performed some production-grade tasks with Puppet. You learned how to write standalone manifests and then invoke puppet apply
to put them to use. While setting up your first Puppet master and agent, you created a simple example for a node manifest on the master. In a node '<hostname>'
block, you created the equivalent of a manifest file. This way, the Puppet master used just this manifest for the specified agent node.
While this is all useful, and of essential importance, it will obviously not suffice for daily business. By working with node
blocks that contain sets of resources, you will end up performing lots of copy and paste operations for similar nodes, and the whole construct will become unwieldy very quickly.
This is an unnatural approach to developing Puppet manifests. Despite the great differences to many other languages that you might be familiar with, the Puppet DSL is a programming language. Building manifests merely from node
blocks and resources would be like writing C with no functions except main
, or Ruby without any classes of your own.
The manifests that you can write with the means that are already at your disposal are not flat—you learned about common control structures such as if
and case
. Your manifests can use these to adapt to various circumstances on the agent, by querying the values of Facter facts and branching in accordance with the results.
However, these constructs should be complemented by the language tools to create reusable units of manifest code, similar to functions or methods in procedural languages. This chapter introduces these concepts through the following topics:
- Introducing classes and defined types
- Structured design patterns
- Including classes from defined types
- Nesting definitions in classes
- Establishing relationships among containers
- Making classes more flexible through parameters
- 程序員面試白皮書
- Delphi程序設計基礎:教程、實驗、習題
- SEO智慧
- JavaScript前端開發與實例教程(微課視頻版)
- Python神經網絡項目實戰
- Hands-On C++ Game Animation Programming
- Visual Basic學習手冊
- 軟件測試技術指南
- Microsoft Azure Storage Essentials
- Visual Basic程序設計上機實驗教程
- OpenResty完全開發指南:構建百萬級別并發的Web應用
- Buildbox 2.x Game Development
- Clojure for Java Developers
- 寫給大家看的Midjourney設計書
- Docker:容器與容器云(第2版)