puppet自动化运维之类
博客专区 > perofu 的博客 > 博客详情
puppet自动化运维之类
perofu 发表于4年前
puppet自动化运维之类
  • 发表于 4年前
  • 阅读 313
  • 收藏 3
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: 个人近期将发布puppet自动化运维的亲身实战,有很多来之网上的文档,特别是http://kisspuppet.com和《Puppet实战》的。此次推出puppet的类,欢迎网友指正。


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



  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 126
博文 148
码字总数 129890
×
perofu
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: