- Puppet 4 Essentials(Second Edition)
- Felix Frank Martin Alfke
- 539字
- 2021-07-30 09:58:42
Introducing resources and properties
Each of the manifests you wrote in the previous section declared one respective resource. Resources are the elementary building blocks of manifests. Each has a type (in this case, notify
and service
, respectively) and a name or title (Hello, world!
and puppet
). Each resource is unique to a manifest, and can be referenced by the combination of its type and name, such as Service["puppet"]
. Finally, a resource also comprises a list of zero or more attributes. An attribute is a key-value pair, such as "enable => false"
.
Attribute names cannot be chosen arbitrarily. Each resource type supports a specific set of attributes. Certain parameters are available for all resource types (metaparameters), and some names are just very common, such as ensure
. The service
type supports the ensure
property, which represents the status of the managed process. Its enabled
property, on the other hand, relates to the system boot configuration (with respect to the service in question).
Note that we have used the terms attribute, property, and parameter in a seemingly interchangeable fashion. Don't be deceived—there are important distinctions. Property and parameter are the two different kinds of attributes that Puppet uses. You have already seen two properties in action. Let's look at a parameter:
service { 'puppet':
ensure => 'stopped',
enable => false,
provider => 'upstart',
}
The provider
parameter tells Puppet that it needs to interact with the upstart
subsystem to control its background service, as opposed to systemd
or init
. If you don't specify this parameter, Puppet makes a well-educated guess. There is quite a multitude of supported facilities to manage services on a system. You will learn more about providers and their automatic choosing later on.
The difference between parameters and properties is that the parameter merely indicates how Puppet should manage the resource, not what a desired state is. Puppet will only take action on property values. In this example, these are ensure => 'stopped'
and enable => false
. For each such property, Puppet will perform the following tasks:
- Test whether the resource is already in sync with the target state
- If the resource is not in sync, it will trigger a sync action
A property is considered to be in sync when the system entity that is managed by the given resource (in this case, the upstart
service configuration for Puppet) is in the state that is described by the property value in the manifest. In this example, the ensure
property will be in sync only if the puppet
service is not running. The enable
property is in sync if upstart
is not configured to launch Puppet at system start.
As a mnemonic concerning parameters versus properties, just remember that properties can be out of sync, whereas parameters cannot.
Puppet also allows you to read your existing system state by using the puppet resource command:
root@puppetmaster:~# puppet resource user root user { 'root': ensure => 'present', comment => 'root', gid => '0', home => '/root', password => '$6$17/7FtU/$TvYEDtFgGr0SaS7xOVloWXVTqQxxDUgH.eBKJ7bgHJ.hdoc03Xrvm2ru0HFKpu1QSpVW/7o.rLdk/9MZANEGt/', password_max_age => '99999', password_min_age => '0', shell => '/bin/bash', uid => '0', }
Please note that some resource types will return read-only attributes (for example, the file resource type will return mtime
and ctime
). Refer to the appropriate type documentation.
- Android Wearable Programming
- LabVIEW 2018 虛擬儀器程序設計
- NLTK基礎教程:用NLTK和Python庫構建機器學習應用
- 青少年軟件編程基礎與實戰(圖形化編程三級)
- jQuery EasyUI網站開發實戰
- BeagleBone Media Center
- Python金融數據分析
- CKA/CKAD應試教程:從Docker到Kubernetes完全攻略
- Learning ELK Stack
- C程序設計案例教程
- Web Development with MongoDB and Node(Third Edition)
- Learning Concurrency in Kotlin
- 零基礎Java學習筆記
- Unity 2018 Shaders and Effects Cookbook
- R用戶Python學習指南:數據科學方法