这是本文档旧的修订版!
Puppet
facter
Learning Puppet 笔记
Resources and the RAL
- Resources: Imagine a system’s configuration as a collection of many independent atomic units; call them “resources.”
- 资源可分类
- 资源类型描述抽离于它的具体操作步骤
- Puppet 指定资源的期望状态,而不是直接指定具体操作
- 以上三点组成 Puppet 的资源抽象层 (RAL), RAL 包括 types(高级别抽象模型) 和 providers(平台相关实现),这样可以使用平台无关的方式来描述资源得期望状态。
- 每个资源(Resource )的描述包括: resource type, one title, a number of attributes, each attribute has a value
user { 'dave': ensure => present, uid => '507', gid => 'admin', shell => '/bin/ksh', home => '/home/dave', managehome => true, }
This syntax is called a resource declaration
- Resource Types : puppet_core_types_cheatsheet.pdf, the type references
puppet describe
: Thepuppet describe
subcommand can list info about the currently installed resource types on a given machine.puppet resource
: Puppet includes a command calledpuppet resource
, which can interactively inspect and modify resources on a single system. Usage:# puppet resource <TYPE> [<NAME>] [ATTRIBUTE=VALUE ...]
Manifests
.pp
: Puppet programs are called “manifests,” and they use the.pp
file extension.- 完整语法链接: lang resources
- 大括号,冒号,逗号要正确
- 大小写敏感。 类型(type)和属性(attributes)名必须小写
- 字符串值的书写: datatypes
- All types have a special attribute called the namevar, 该属性缺失就默认以 title 替代
- Before being applied, manifests get compiled into a document called a catalog
puppet apply <.pp file >
- Puppet agent/master
Resource Ordering
- You can embed relationship information in a resource with the
before
,require
,notify
, andsubscribe
metaparameters. - You can also declare relationships outside a resource with the
→
and~>
chaining arrows. - Relationships can be either ordering (this before that) or ordering-with-notification (this before that, and tell that whether this was changed).
- Puppet’s relationship behaviors and syntaxes are documented in the Puppet reference manual page on relationships.
- The
ordering
setting inpuppet.conf
determines the order in which unrelated resources are applied.
Variables, Conditionals, and Facts
- Variables: 语法类似 php, 但实际是常量,只能被赋值一次, 不能修改。
- Conditionals:
if
,elseif
,else
,case
,default
- Puppet has a bunch of built-in, pre-assigned variables that you can use.
- Facts: facts ,Puppet uses a tool called Facter, which discovers some system information, normalizes it into a set of variables, and passes them off to Puppet. Puppet’s compiler then has access to those facts when it’s reading a manifest.