文档章节

puppet自动化运维之类

perofu
 perofu
发布于 2014/05/26 11:53
字数 793
阅读 317
收藏 3
点赞 0
评论 0


类可以把多个相关的资源定义在一起,组成一个类,一起使用,例如,把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
博文 151
码字总数 130481
作品 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
开源的自动化部署工具探索

1 前言 即使是在传统的企业当中,日常的备份、服务器状态监控和日志,通过手动的方式来进行的效率也很低,是一种人力的浪费。因此,自动化早已是每个运维都必须掌握的看家本领。 在不同的企业...

双月通天
2016/03/18
2.2K
0
2016年我的阅读书单

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

抚琴煮酒
2016/10/21
0
0
新书《Linux集群和自动化运维》目录

推荐序一 在全球“互联网+”的大背景下,互联网创业企业的数量如雨后春笋般大量产生并得到了快速发展!对“互联网+”最有力的支撑就是Linux运维架构师、云计算和大数据工程师,以及自动化开...

抚琴煮酒
2016/08/17
0
0
6月9日上海 华东运维技术大会:演讲主题、演讲嘉宾等信息

会议名称:华东运维技术大会 参会形式:免费报名制(注释:须事先报名,场地有限) 会议定位:企业运维技术的最佳实践 会议主题:运维自动化、Web服务器的优化与架构、云计算、虚拟化技术 会...

金官丁
2012/05/19
2.4K
11
puppet 基础应用详解

运维自动化 运维自动化是指将IT运维中日常的、大量的重复性工作自动化,把过去的手工执行转换为自动化操作,自动化是运维工作的生化,运维自动化不单纯是一个维护过程,更是一个管理的提升过...

jungege1216
2014/05/17
0
0
PHP 7.0.0 一键安装脚本

OSCM (Operation System Configure Management) 是我创建的一个自动化运维脚本的项目,旨在提供敏捷运维。传统自动化运维工具例如 ansible, saltstack,puppet 不够灵活,配置繁琐,很多限...

neo-chen
2015/12/03
515
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

1.14 救援模式

确保开机启动时连接镜像文件,如果是真机服务器,就需要:U盘或光盘镜像启动进入BIOS 不同主板进入bios按键不同,一般是F12或Esc 光标:移动到Boot(开机启动项) 减号移动:光标选中行,按-...

小丑鱼00
8分钟前
0
0
ES11-全文检索

高级别全文检索通常用于在全文本字段(如电子邮件正文)上运行全文检索。 他们了解如何分析被查询的字段,并在执行之前将每个字段的分析器(或search_analyzer)应用于查询字符串。 1.term查...

贾峰uk
11分钟前
0
0
java 复制对象有哪些方式

java 复制对象有哪些方式 Apache的 Common beanutils库 org.apache.commons.beanutils.BeanUtils.copyProperties(dest,origin); Springframework 的BeanUtil 依赖: <dependency> ......

黄威
27分钟前
1
0
jstack的简单使用

公司测试反应, 一个java应用的机器, 即使不做交易, cpu始终是30%多, 于是想到了jstack, 实践步骤记录一下: 1, 找出java应用的进程号 ps -ef|grep 应用名|grep -v grep 2, 找出pid下的cpu占用...

零二一七
34分钟前
1
0
崛起于Springboot2.X之项目war打包部署(18)

将springboot项目打包步骤: 1、启动类 extends SpringBootServletInitializer 2、启动类添加覆盖方法 @Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder......

木九天
42分钟前
2
0
导入CSV文件就行数据整理分析

#-*-coding:utf-8-*-import csv,os,re,mathlocalPath=input("请输入所有群文件的根目录:") #所有QQ群文件的物理根目录路径def info(): info_dic=[] dirList=os.listdi...

Kefy
48分钟前
3
0
CoreText进阶(六)-内容大小计算和自动布局

CoreText进阶(六)-内容大小计算和自动布局 其它文章: CoreText 入门(一)-文本绘制 CoreText入门(二)-绘制图片 CoreText进阶(三)-事件处理 CoreText进阶(四)-文字行数限制和显示更...

aron1992
50分钟前
1
0
一个Unity高人的博客,涉猎范围很广,深度也很深。

https://blog.csdn.net/ecidevilin/article/list/

爽歪歪ES
52分钟前
0
0
Spring Cloud Config-Git后端

EnvironmentRepository的默认实现使用Git后端,这对于管理升级和物理环境以及审核更改非常方便。要更改存储库的位置,可以在Config Server中设置“spring.cloud.config.server.git.uri”配置...

itcloud
54分钟前
1
0
centos7 卸载mysql

[root@zyf ~]# rpm -qa|grep -i mysqlmysql-community-libs-5.6.34-2.el7.x86_64mysql-community-server-5.6.34-2.el7.x86_64mysql-community-release-el7-5.noarchmysql-community-......

Yao--靠自己
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部