puppet之java批量安装案例

利用puppet对若干台linux服务器安装java,设置java环境变量,本文以一台agent为例安装java
一 服务端模块
新建目录
mkdir -p /etc/puppet/modules/java/manifests
在该目录下有关于安装java的若干个文件
tree /etc/puppet/modules/java/manifests/
/etc/puppet/modules/java/manifests/
|-- init.pp
|-- install_java.pp
`-- set_profile.pp
init.pp是每个模块的必需初始化文件,puppet会根据init.pp寻找其他文件中定义的类
[root@master puppet]# cat /etc/puppet/modules/java/manifests/init.pp
class java {
    include java::install_java
    include java::set_profile
}
install_java.pp中定义了一个install_java类,包含有file,exec资源。file资源是定义从puppet服务端取文件的,本文是从puppet的/etc/puppet/files取文件jdk-6u24-linux-i586.bin,放到agent的/usr/local/src文件名不变。文件属性是:属主root,属组root,权限是755.exec资源定义了执行jdk-6u24-linux-i586.bin这个动作。cwd说明进入某个目录,creates定义如果该文件存在则不执行该资源,command定义执行的命令。require定义了exec资源依赖于file:/usr/local/src/jdk-6u24-linux-i586.bin,必须有/usr/local/src/jdk-6u24-linux-i586.bin文件存在才执行该资源。
[root@master puppet]# cat /etc/puppet/modules/java/manifests/install_java.pp
class java::install_java {
    file {
       "/usr/local/src/jdk-6u24-linux-i586.bin": #copy file to remote machine,File paths must be fully qualified
       owner => "root",
       group => "root",
       mode => 755,
       source => "puppet://$puppetserver/files/jdk-6u24-linux-i586.bin",
    }

    exec {
          "sh /usr/local/src/jdk-6u24-linux-i586.bin":
           cwd => "/usr/local/src/", # end with "/"
           creates => "/usr/local/java", #if the file "/usr/local/java" is not found,do below command.
           command => "sh /usr/local/src/jdk-6u24-linux-i586.bin && mv /usr/local/src/jdk1.6.0_24 /usr/local/java",
           user => "root",
           path => ["/usr/local/sbin","/usr/local/bin","/sbin","/bin","/usr/sbin","/usr/bin"],
           require => File["/usr/local/src/jdk-6u24-linux-i586.bin"],
    }
}
设置java环境变量
unless定义了如果grep -i java_home /etc/profile返回的值为1,即结果为false才执行该资源。
[root@master puppet]# cat /etc/puppet/modules/java/manifests/set_profile.pp
class java::set_profile {
    file {
           "/usr/local/src/java_profile": #copy file to remote machine,File paths must be fully qualified
           owner => "root",
           group => "root",
           source => "puppet://$puppetserver/files/java_profile",
        }
        exec {
           "set profile":
           command => "cat /usr/local/src/java_profile >>/etc/profile && source /etc/profile",
           user => "root",
           path => ["/usr/local/sbin","/usr/local/bin","/sbin","/bin","/usr/sbin","/usr/bin"],
          unless => "grep -i java_home /etc/profile", #if the return value is 1,do this command.
          require => File["/usr/local/src/java_profile"],
        }
}
在/etc/puppet/manifests/定义了一些模块和节点的信息
[root@master manifests]# tree /etc/puppet/manifests/
/etc/puppet/manifests/
|-- modules.pp
|-- nodes.pp
`-- site.pp

0 directories, 3 files
site.pp是puppet主要入口,告诉puppet从哪里寻找载入指定的客户端配置
[root@master manifests]# cat site.pp
import "modules.pp"
import "nodes.pp"
模块导入借口
[root@master manifests]# cat modules.pp
import "cron"
import "java"
import "mysql"
节点文件,在节点文件里include模块
[root@master manifests]# cat nodes.pp
node 'agent1.andy.com' {
include cron
include java
#include mysql
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27181165/viewspace-776321/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27181165/viewspace-776321/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值