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]