文档章节

puppet自动化运维之类

perofu
 perofu
发布于 2014/05/26 11:53
字数 793
阅读 319
收藏 3


类可以把多个相关的资源定义在一起,组成一个类,一起使用,例如,把sshd和他的配置文件做成一个ssh类,其他的地方要用到就直接包含ssh类就可以了,方便写出更简洁的代码,便于维护。类是可以继承。但少用

class是一个资源的集合,它代表节点上一个单独的配置项目,SSH服务或者NFS包等等,class在一个结点上仅仅形成1(即在相同的系统上仅能使用一次),因为已经完成的配置应该仅仅存在一次。

 

1. 定义类(class)

①、定义多个子类:


类定义以class关键字开始,内容放在花括号里面。

格式:

 

class 类名 {                                                                                                                                    

       type { "title   ":

    attribute => "value",

              ...

              attribute   => "value";

         }

 

       ...(各种资源)

 

       type { "title   ":

    attribute => "value",

              ...

              attribute   => "value";

         }

}

 

例:

class   unix {                                                                                                                                   

    file {

        "/etc/passwd":

            owner => "root",

            group => "root",

            mode    => 644;

        "/etc/shadow":

            owner => "root",

            group => "root",

            mode  => 440;

    }

}

 

②、定义子类:

class motd::file2 {                                                             

file{ "/etc/file2":

owner => "puppet",

group => "puppet",

ensure => link,

target => "/etc/passwd",  

}

}

 

class motd {

file{ "/etc/file2":

owner => "puppet",

group => "puppet",

ensure => link,

target =>   "/etc/passwd",

}

}

 

格式:

 

class 类名::子类名{                                                                                                                                   

       type { "title   ":

    attribute => "value",

              ...

              attribute   => "value";

         }

 

       ...(各种资源)

 

       type { "title   ":

    attribute => "value",

              ...

              attribute   => "value";

         }

}

 

 

class motd::file2 {                                                                  

file{ "/etc/file2":

owner => "puppet",

group => "puppet",

ensure => link,

target => "/etc/passwd",

}

}

 

class motd {

file{ "/etc/file2":

owner => "puppet",

group => "puppet",

ensure => link,

target => "/etc/passwd",

}

}

 

 

2. 继承(inherits

类也有用基类(父类)子类来实现简单的继承和覆盖的模型,一个子类可以继承基类的值并且能够实现它一个或者多个值对基类的值进行覆盖

       子类的作用完成某个任务,基本同父类的作用,但只是某些参数的不同。

 

class 类名(新建)inherits 父类名(已存在){                                                                                         

       Type   ["title"]   {attribute   => "value",}

}

 

 

注:Type:表示资源的类型,且第一个字母必须大写且必须存在于父类中

{attribute => "value",}:表示修改父类的某些属性的值

①{attribute => "value",…, attribute => "value",}    表示修改父类的某些属性的值

②{attribute => undef,…,attribute => undef,}        表示取消父类的某个属性的值

③{attribute +> "value"}

{[attribute +> "value",…, attribute +> "value",]} 表示增加父类没有的某些属性的值或者中概括([])中的数组值

 

例:

class freebsd inherits unix {

      File["/etc/passwd"] { group => undef }

}

 

class freebsd inherits unix {

      File["/etc/passwd","/etc/shadow"] { group =>   wheel }

}

 

class apache {

    service { "apache": require =>   Package["httpd"] }

}

 

#可以使用操作符‘+>’(‘再赋值’)来追加资源的参数,当追加多个依赖时,使用中括号和逗号

class apache-ssl inherits apache {

      Service[apache] { require +> [ File["apache.pem"],   File["/etc/httpd/conf/httpd.conf"] ] }

}

 

在上面的例子中,包含类unix的节点的password文件的组名将被设置为“wheel”,而包含类freebsd的节点的password文件的组名则不会被设置(既保持原来的值,不去修改)。

 

 

3. 禁用资源

    为继承和覆盖最常见的用法是禁止服务或者其它资源:



class apache::disabled inherits apache                                                                                                    
               Service["apache2"] {
                               enable => false,
                               ensure => stopped,
               }
}


    至此,puppet的就结束了,接下来的是函数的学习,请听下回分解!!!



© 著作权归作者所有

共有 人打赏支持
perofu
粉丝 127
博文 152
码字总数 131036
作品 0
广州
系统管理员
Puppet,Chef,Ansible的共性

本文试图找到类似Puppet、Chef、Ansible这样自动化配置管理工具的共性,以不至于迷失在杂乱的尘世中。总会有各种人为各种目的造概念,来让世界更复杂。 本文同样适用于没有运维经验的人。因为...

翟志军
2016/01/10
2.8K
1
[运维] 第三篇:漫谈数据中心运维自动化

运维自动化是从2010年以后起来的一个运维需求,10年之前,运维项目主要集中在监控和ITIL流程上,当时也有BMC Control-M等产品在推,但是客户接受程度和影响力不如监控和流程。10年之后,运维...

lawsonduan
2016/08/11
0
0
SaltStack;以及与AnsibleWorks,Chef-solo,puppet等等等的比较!

SaltStack;以及与AnsibleWorks,Chef-solo,puppet等等等的比较! ...       http://www.vpsee.com/2013/08/a-system-configuration-management-and-orchestration-tool-saltstack/ 系统......

carocy
2017/10/31
0
0
“Linux 集群和自动化运维”高手问答精选

这些年来,很多人都在谈自动化运维。但回过头来反思一下,做了几年的自动化运维,是否还是不能确定有哪些工作没做,或是怎样更优雅的实施运维自动化,又或者你只是是刚刚踏入自动化运维这扇大...

局长
2016/09/19
2.1K
3
2016年我的阅读书单

2016年我正在看或者已经看完的书单,基本上都是纸质书,主要是长时间阅读也不伤眼。每天坚持看1-2小时书,没办法,其它时间要写业务代码或处理线上的问题,列表清如下所示: 《操作系统设计与...

抚琴煮酒
2016/10/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
8分钟前
0
0
sourcetree 离线免注册登录安装教程

Sourcetree是一个优秀的git可视化管理工具,深受开发者喜爱Sourcetree官网,但是在安装时需要谷歌账户登录,需要翻qiang才可以,此一点一直被人们所诟病。今天本教程就为大家提供离线免登陆安...

QQZZFT
37分钟前
1
0
使用 PostgreSQL 解决一个实际的统计分析问题

使用 PostgreSQL 解决一个实际的统计分析问题作者:老农民(刘启华)Email: 46715422@qq.com 之前有个朋友扔给我一个奇葩需求,他们公司之前做了一批问卷调查,全部都是统一格式的excel...

新疆老农民
40分钟前
5
0
TypeScript基础入门之高级类型的映射类型

转发 TypeScript基础入门之高级类型的映射类型 高级类型 映射类型 一个常见的任务是将一个已知的类型每个属性都变为可选的: interface PersonPartial {    name?: string;    age?...

durban
55分钟前
1
0
Dubbo源码分析(6):Dubbo内核实现之基于SPI思想Dubbo内核实现

SPI接口定义 定义了@SPI注解 package com.alibaba.dubbo.common.extension; import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.an......

郑加威
55分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部