Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300103
  • 博文数量: 47
  • 博客积分: 1667
  • 博客等级: 上尉
  • 技术积分: 686
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 16:20
文章分类

全部博文(47)

文章存档

2013年(20)

2012年(20)

2011年(7)

分类: LINUX

2013-04-11 22:33:24

puppet define 定义


对于重复执行的代码,puppet支持用define来定义函数,然后利用变量来实现。


class user::login  {
     define  admin($uname,$uid,$gid) {
        user { "$uname" :
              ensure => "present",
              managehome => 'true',
              name => "$uname",
              uid => "$uid",
              gid => "$gid",
              shell => "/bin/bash",
              home => "/home/$uname",
              require => Group["$uname"],
}
              group { "$uname" :
                          ensure => "present",
                          gid => $gid,   
                      
}

}
}


define 定义admin的函数,并且定义了几个变量,然后在define中定义所使用的资源,
调用时,先用include包含这个类,然后就可以直接调用这个函数。

class user::user {
     include user::login  #如果init.pp 包含user::login 这个pp,这里可以不用输入
      user::login::admin {'wang':
                   uname => "wang",
                   uid => '1000',
                   gid => '1000',
 
}
}


事例直接生成gid和uid为1000的为wang的用户名。




puppet 支持使用模版


编写一个模版,需要变量对方使用(%= %) 格式
cat /etc/puppet/modules/apache/templates/vhosts.conf.erb   
>
ServerName <%= domain %>
ServerAdmin admin@<%= domain %>
DocumentRoot <%= docroot %>
ErrorLog logs/<%= error_log %>
CustomLog logs/<%= access_log %> common




调用模版时,在属性上加上template表明使用模版,后面的路径使用相对路径,
                  apache/vhosts.conf.erb 相当于 /etc/puppet/modules/apache/templates/vhosts.conf.erb     
cat vhosts.pp
class apache::vhosts {
       define vhost ($domain,$access_log,$error_log,$port,$docroot) {
              file { "vhosts.conf":
                  name => "/etc/httpd/conf.d/vhosts.conf",
                  mode => "0744",
                  owner => "apache",
                  group => "apache",
                  require => Class["apache::install"],
                  notify => Class["apache::service"],
                  content => template("apache/vhosts.conf.erb"),     
}
}
}

cat wang.pp
class apache::wang {
    include apache::vhosts #这里可以不用输入,因为init.pp包含进apache::vhosts
    apache::vhosts::vhost { "wang":
          domain => "wang",
          access_log => "logs/wang_access_log",
          error_log  => "logs/wang_error_log",
          port => "80",
          docroot => "/var/www/wang",
}
}
阅读(5885) | 评论(0) | 转发(0) |
0

上一篇:git版本控制puppet

下一篇:puppet 依赖关系

给主人留下些什么吧!~~