Skip to content

Instantly share code, notes, and snippets.

@winks
Created November 14, 2013 11:27
Show Gist options
  • Save winks/7465267 to your computer and use it in GitHub Desktop.
Save winks/7465267 to your computer and use it in GitHub Desktop.
class components::openresty::build (
$version = '1.4.3.4',
$minor = 1
) {
$tmpdir = "/root"
$targetdir = "/opt"
$outputdir = "/vagrant"
$ident = "ngx_openresty-${version}"
$filename = "${ident}.tar.gz"
$service = 'openresty'
$xdir = "${targetdir}/${ident}/nginx"
exec { 'download-openresty':
command => "wget http://openresty.org/download/${filename} -q -O ${tmpdir}/${filename}",
unless => "ls ${tmpdir}/${filename}",
}
exec { 'unpack-openresty':
command => "tar xzf ${tmpdir}/${filename}",
cwd => $tmpdir,
unless => "ls ${tmpdir}/${ident}",
}
package { ["libreadline-dev", "libncurses5-dev", "libpcre3-dev", "libssl-dev", "perl", "make", "nginx", "curl"]:
ensure => installed,
} ->
service { 'nginx':
ensure => stopped,
} ->
exec { 'build-openresty':
command => "/usr/bin/perl ./configure --with-luajit --prefix=${targetdir}/${ident} && make && make install",
cwd => "${tmpdir}/${ident}",
unless => "ls ${targetdir}/${ident}",
} ->
file { "${xdir}/etc":
ensure => directory,
owner => www-data,
group => www-data,
} ->
file { "${xdir}/etc/default":
ensure => directory,
owner => www-data,
group => www-data,
} ->
file { "${xdir}/etc/openresty.init":
content => template('components/openresty/openresty.init.erb'),
owner => www-data,
group => www-data,
mode => '0775',
} ->
file { "${tmpdir}/${service}-postinstall.sh":
content => template('components/openresty/postinstall.sh.erb'),
mode => '0755',
} ->
file { "${tmpdir}/${service}-postremove.sh":
content => template('components/openresty/postremove.sh.erb'),
mode => '0755',
} ->
package { 'fpm':
ensure => installed,
provider => gem,
} ->
exec { 'package-openresty':
command => "/usr/local/bin/fpm -s dir -t deb -n openresty -v ${version}-custom${minor} -m user@example.org \
--after-install ${tmpdir}/${service}-postinstall.sh \
--after-remove ${tmpdir}/${service}-postremove.sh \
${targetdir}/${ident}",
cwd => "${outputdir}",
creates => "${outputdir}/openresty_${version}-custom${minor}_amd64.deb",
}
}
#!/bin/sh
### BEGIN INIT INFO
# Provides: <%= @service %>
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the <%= @service -%> web server
# Description: starts <%= @service -%> using start-stop-daemon
### END INIT INFO
PATH=<%= @xdir -%>/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=<%= @xdir -%>/sbin/nginx
NAME=nginx
DESC=<%= @service %>
# Include nginx defaults if available
if [ -f <%= @xdir -%>/etc/default/<%= @service -%> ]; then
. <%= @xdir -%>/etc/default/<%= @service %>
fi
test -x $DAEMON || exit 0
set -e
. /lib/lsb/init-functions
test_nginx_config() {
if $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1; then
return 0
else
$DAEMON -t $DAEMON_OPTS
return $?
fi
}
case "$1" in
start)
echo -n "Starting $DESC: "
test_nginx_config
# Check if the ULIMIT is set in /etc/default/nginx
if [ -n "$ULIMIT" ]; then
# Set the ulimits
ulimit $ULIMIT
fi
start-stop-daemon --start --quiet --pidfile <%= @xdir -%>/logs/$NAME.pid \
--exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile <%= @xdir -%>/logs/$NAME.pid \
--exec $DAEMON || true
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
<%= @xdir -%>/logs/$NAME.pid --exec $DAEMON || true
sleep 1
test_nginx_config
start-stop-daemon --start --quiet --pidfile \
<%= @xdir -%>/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
test_nginx_config
start-stop-daemon --stop --signal HUP --quiet --pidfile <%= @xdir -%>/logs/$NAME.pid \
--exec $DAEMON || true
echo "$NAME."
;;
configtest|testconfig)
echo -n "Testing $DESC configuration: "
if test_nginx_config; then
echo "$NAME."
else
exit $?
fi
;;
status)
status_of_proc -p <%= @xdir -%>/logs/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
;;
*)
echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2
exit 1
;;
esac
exit 0
#!/bin/sh
/bin/ln -s <%= @xdir -%>/etc/openresty.init /etc/init.d/<%= @service %>
/bin/ln -s <%= @targetdir -%>/<%= @ident -%> /opt/<%= @service %>
#!/bin/sh
if [ -h "/etc/init.d/<%= @service %>" ];then
/bin/rm /etc/init.d/<%= @service %>
fi
if [ -h "/opt/<%= @service %>" ];then
/bin/rm /opt/<%= @service %>
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment