puppet自动化运维之类

本文介绍了Puppet配置管理工具中类的定义与使用方法,包括如何定义多个子类及子类,以及如何通过继承机制简化配置并实现值的覆盖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


类可以把多个相关的资源定义在一起,组成一个类,一起使用,例如,把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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值