yxixi 发表于 2018-8-2 10:24:15

puppet资源exec详细介绍(附案例)

2.2 配置说明  
class source {
  
include source::file1,source::exec1,source::exec2,source::exec3,source::user
  
    notify { "nstallation nginx package through the source code nginx-0.8.42.tar.gz":
  
      withpath => true,
  
    }
  
}
  
class source::user{
  
group { "nginx":   #建立组nginx
  
    ensure => present,
  
    gid    => 1000
  
}
  
user { "nginx":   #建立用户nginx
  
    ensure   => present,
  
    uid      => 1000,
  
    gid      => 1000,
  
    groups   => ["nginx"],
  
#   membership => minimum,
  
    shell      => "/sbin/nologin",
  
    require    => Group["nginx"]
  
}
  

  
}
  
class source::file1{#远程下载nginx源码包
  
file{ "nginx":
  
    name    => "/tmp/rhel5/nginx/nginx-0.8.42.tar.gz",
  
    owner   => "root",
  
    group   => "root",
  
    mode    => 0700,
  
    source=> "puppet://$puppetserver/modules/source/nginx-0.8.42.tar.gz",
  
    backup=> 'main',
  
    require => Class["source::exec1"],
  
   }
  
}
  
class source::exec1{
  
exec {"create nginx_pag":
  
    command => "mkdir /tmp/rhel5/nginx ",
  
    path    => ["/usr/bin","/usr/sbin","/bin","/sbin"],
  
    creates => "/tmp/rhel5/nginx", #目录或文件不存在的情况下执行command
  
}
  
}
  
class source::exec2{
  
exec { "install nginx":
  
    cwd       =>"/tmp/rhel5/nginx",#目录存在的情况下执行command
  
    command   =>"tar -zxvf nginx-0.8.42.tar.gz && cd nginx-0.8.42 &&./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --without-http-cache && make&&make install",
  
    path      => ["/usr/bin","/usr/sbin","/bin","/sbin"],
  
    logoutput => on_failure,
  
    unless    => "/bin/ls /usr/local/nginx/conf",#命令返回值不为0的情况下执行commond
  
    require   => Class
  
    notify    => Class["source::exec3"],
  
}
  
}
  
class source::exec3{
  
exec { "updatedb":
  
    command   => "updatedb",
  
    path      => ["/usr/bin","/usr/sbin","/bin","/sbin"],
  
    refreshonly => true,#触发更新的时候执行command
  
    subscribe   => Class["source::exec2"],
  
}
  
}
  
#
页: [1]
查看完整版本: puppet资源exec详细介绍(附案例)