官术网_书友最值得收藏!

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
主站蜘蛛池模板: 富源县| 理塘县| 礼泉县| 若尔盖县| 工布江达县| 玛曲县| 通化市| 沛县| 锦州市| 顺昌县| 邵阳县| 资源县| 桑植县| 崇仁县| 三门县| 新民市| 明溪县| 齐齐哈尔市| 新竹市| 平遥县| 仁布县| 新兴县| 马公市| 咸阳市| 大连市| 延川县| 罗源县| 玉树县| 长泰县| 平安县| 漳浦县| 四川省| 罗城| 赣榆县| 万全县| 菏泽市| 隆德县| 绥中县| 汨罗市| 博白县| 仁寿县|