博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
puppet自动化运维之类
阅读量:7013 次
发布时间:2019-06-28

本文共 2444 字,大约阅读时间需要 8 分钟。

hot3.png

类可以把多个相关的资源定义在一起,组成一个类,一起使用,例如,把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的就结束了,接下来的是函数的学习,请听下回分解!!!

转载于:https://my.oschina.net/fufangchun/blog/268966

你可能感兴趣的文章
js的模块封装(二)
查看>>
常用linux命令
查看>>
停驻脚步回头看,原来我会的都是浮云系列一-------java之jdbc操作mysql
查看>>
Web启动EXE程序
查看>>
svn强制要求提交注释
查看>>
JDBC编程步骤
查看>>
微服务系统架构图
查看>>
Spring的AOP前置,后置,运行,异常
查看>>
在团800运维工作总结之jumpserver分析代码,新加功能
查看>>
有那么一首歌
查看>>
Linux系统时间查看及设定
查看>>
北软教育TPI教学方法及过程说明
查看>>
X3850 X5安装ESXI6.0U3需要手动加载LPe11000驱动
查看>>
Kafka学习笔记——使用Kafka记录APP的操作日志
查看>>
abstract关键字
查看>>
Linux下的PHP mb_substr莫名错误
查看>>
【CentOS】Centos 6.4 python 2.6 升级到 2.7
查看>>
Cocos2d-x加Box2D制作弹弓类游戏
查看>>
HTML字符实体(Character Entities),转义字符串(Escape Sequence)
查看>>
2015长春网络赛总结
查看>>