Learning Puppet — Resources and the RAL
Learning Puppet — Resources and the RAL
Welcome to Learning Puppet! This series covers the basics of writing Puppet code
Begin
Log into the Learning Puppet VM as root, and run puppet resource service. This command will return something like the following:
[root@centos ~]# puppet resource service | more
service { 'abrtd':
ensure => 'running',
enable => 'true',
}
service { 'acpid':
ensure => 'running',
enable => 'true',
}
service { 'atd':
ensure => 'running',
enable => 'true',
}
service { 'auditd':
ensure => 'running',
enable => 'true',
}
service { 'cgconfig':
ensure => 'stopped',
enable => 'false',
}
service { 'cgred':
ensure => 'stopped',
enable => 'false',
Okay! You’ve just met your first Puppet resources.
What Just Happened?
puppet: Most of Puppet’s functionality comes from a singlepuppetcommand, which has many subcommands.resource: Theresourcesubcommand can inspect and modify resources interactively.service: The first argument to thepuppet resourcecommand must be a resource type, which you’ll learn more about below. A full list of types can be found at the Puppet type reference.
Taken together, this command inspected every service on the system, whether running or stopped.
Resources
Imagine a system’s configuration as a collection of many independent atomic units; call them “resources.”
These pieces vary in size, complexity, and lifespan. Any of the following (and more) can be modeled as a single resource:
- A user account
- A specific file
- A directory of files
- A software package
- A running service
- A scheduled cron job
- An invocation of a shell command, when certain conditions are met
Any single resource is very similar to a group of related resources:
- Every file has a path and an owner
- Every user has a name, a UID, and a group
The implementation might differ — for example, you’d need a different command to start or stop a service on Windows than you would on Linux, and even across Linux distributions there’s some variety. But conceptually, you’re still starting or stopping a service, regardless of what you type into the console.
Abstraction
If you think about resources in this way, there are two notable insights you can derive:
- Similar resources can be grouped into types. Services will tend to look like services, and users will tend to look like users.
- The description of a resource type can be separated from its implementation.You can talk about whether a service is started without needing to know how to start it.
To these, Puppet adds a third insight:
- With a good enough description of a resource type, it’s possible to declare a desired state for a resource — instead of saying “run this command that starts a service,” say “ensure this service is running.”
These three insights form Puppet’s resource abstraction layer (RAL). The RAL consists of types (high-level models) and providers (platform-specific implementations) — by splitting the two, it lets you describe desired resource states in a way that isn’t tied to a specific OS.
Anatomy of a Resource
In Puppet, every resource is an instance of a resource type and is identified by atitle; it has a number of attributes (which are defined by the type), and each attribute has a value.
Puppet uses its own language to describe and manage resources:
[root@centos ~]# puppet resource user
user { 'HELLO':
ensure => 'present',
gid => '503',
home => '/home/HELLO',
password => '!!',
password_max_age => '99999',
password_min_age => '0',
shell => '/bin/bash',
uid => '502',
}
This syntax is called a resource declaration. You saw it earlier when you ran puppet resource service, and it’s the heart of the Puppet language. It describes a desired state for a resource, without mentioning any steps that must be taken to reach that state.
Puppet Describe
The puppet describe subcommand can list info about the currently installed resource types on a given machine. This is different from the type reference because it also catches plugins installed by a user, in addition to the built-in types.
puppet describe -l— List all of the resource types available on the system.puppet describe -s <TYPE>— Print short information about a type, without describing every attributepuppet describe <TYPE>— Print long information, similar to what appears in thetype reference.
[root@centos ~]# puppet describe -l
These are the types known to puppet:
augeas - Apply a change or an array of changes to the ...
computer - Computer object management using DirectorySer ...
cron - Installs and manages cron jobs
exec - Executes external commands
file - Manages files, including their content, owner ...
filebucket - A repository for storing and retrieving file ...
group - Manage groups
host - Installs and manages host entries
interface - This represents a router or switch interface
k5login - Manage the `.k5login` file for a user
[root@centos ~]# puppet describe -s user
user
====
Manage users. This type is mostly built to manage system
users, so it is lacking some features useful for managing normal
users.
This resource type uses the prescribed native tools for creating
groups and generally uses POSIX APIs for retrieving information
about them. It does not directly modify `/etc/passwd` or anything.
**Autorequires:** If Puppet is managing the user's primary group (as
provided in the `gid` attribute), the user resource will autorequire
that group. If Puppet is managing any role accounts corresponding to the
user's roles, the user resource will autorequire those role accounts.
Parameters
----------
allowdupe, attribute_membership, attributes, auth_membership, auths,
comment, ensure, expiry, forcelocal, gid, groups, home, ia_load_module,
iterations, key_membership, keys, managehome, membership, name,
password, password_max_age, password_min_age, profile_membership,
profiles, project, purge_ssh_keys, role_membership, roles, salt, shell,
system, uid
Providers
---------
aix, directoryservice, hpuxuseradd, ldap, pw, user_role_add, useradd,
windows_adsi
The Puppet Resource Command
Puppet includes a command called puppet resource, which can interactively inspect and modify resources on a single system.
Usage of puppet resource is as follows:
[root@centos ~]# puppet resource user HELLO
user { 'HELLO':
ensure => 'present',
gid => '503',
home => '/home/HELLO',
password => '!!',
password_max_age => '99999',
password_min_age => '0',
shell => '/bin/bash',
uid => '502',
}
refer: https://docs.puppetlabs.com/learning/ral.html
Learning Puppet — Resources and the RAL的更多相关文章
- Learning Puppet — Resource Ordering
Learning Puppet — Resource Ordering Learn about dependencies and refresh events, manage the relation ...
- Learning Puppet — Manifests
Begin In a text editor — vim, emacs, or nano — create a file with the following contents and filenam ...
- Learning Puppet — Variables, Conditionals, and Facts
Begin $my_variable = "A bunch of text" notify {$my_variable:} Yup, that’s a variable, all ...
- Learning Django Resources
Learning Django Django makes it easier to build better Web apps more quickly and with less code. Web ...
- [ Learning ] Spring Resources
1. Spring MVC Spring MVC原理及配置详解 springMVC系列之(三) spring+springMVC集成(annotation方式) Mybatis3+Spring4+Sp ...
- 【机器学习Machine Learning】资料大全
昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料
<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...
- 机器学习(Machine Learning)&深入学习(Deep Learning)资料
<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost 到随机森林. ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】
转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...
随机推荐
- spring学习笔记---第三方SDK(Rest API)和Jaskson的巧用
前言: 其实我以前一直不懂电商, 以及电商中所涉及的业务概念. 对于SKU等名词, 觉得有些玄乎. 对其背后的数据模型, 也有莫名的未知恐惧感: 庞大而理不清头绪. 不过最近有机会接触了微商(有赞), ...
- 使用Hibernate命名查询
HQL查询支持将查询所用的HQL语句放入配置文件中,而不是代码中,在Hibernate映射文件的<hibernate-mapping>元素中使用<query>子元素来定义命名查 ...
- C陷阱与缺陷 2
1,数组 对数组只能进行两种操作,1确定数组的大小,2获得数组第一个元素的指针,其他的操作均是通过指针来实现的. 1 2 3 4 5 6 7 8 9 #include <stdio.h> ...
- ubuntu 以root 运行程序
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- Get access to Servlet
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class LoginServlet extend ...
- 状态压缩dp 入门
1.有一张n*m (n<=m)的棋盘,在上面放n个中国象棋里的车,使得任意两个车不能相互攻击,总共有多少种不同的方案. 2.有一张n*m (n<=m)的棋盘,其中有些格子里面不能放,在上面 ...
- Linux系统编程@文件操作(一)
只总结了部分常用的内容,详细内容参考<UNIX环境高级编程>及相关书籍. Linux中文件编程可以使用两种方法 Linux系统调用(依赖于系统) C语言库函数(不依赖于系统) Linux系 ...
- combobox select .change onSelect事件触发
我现在要完成的功能是:有两个下拉框,当地一个下拉框选择了第一个选项时,第二个下拉框不可用,否则就可用. 用了jQuery easyUI提供的onSelect方法.如下:js文件:$('#select1 ...
- unity, Graphics.Blit (null, null, mat,0);
我使用 Graphics.Blit (null, finalRT, mat); 合成出一张finalRT,然后将finalRT用在editor脚本的OnInspector中使用 Graphics.Dr ...
- javascript模块化编程(AMD规范的加载器)
关于AMD规范可以参考阮一峰的这篇文章Javascript模块化编程(二):AMD规范 简单来说,AMD规范就是异步方式加载模块的一种方式,避免因为模块加载过慢而导致浏览器“假死”. 先贴一个学习地址 ...