Shinken Commons Install
module.exports = header: 'Shinken Commons Install', handler: (options) ->
Identities
@system.group header: 'Group', options.group
@system.user header: 'User', options.user
Packages
@call header: 'Packages', ->
@service name: 'python'
@service name: 'python-pip'
@service name: 'libcurl-devel'
@service name: 'python-pycurl'
@service name: 'python-devel'
@service name: 'gcc'
@service name: 'libffi-devel'
@service name: 'shinken'
Layout
@call header: 'Layout', ->
@system.mkdir
target: '/etc/shinken/packs'
@system.mkdir
target: "#{options.user.home}/share"
uid: options.user.name
gid: options.group.name
@system.mkdir
target: "#{options.user.home}/doc"
uid: options.user.name
gid: options.group.name
@system.mkdir
target: "#{options.build_dir}"
@system.mkdir
target: options.log_dir
uid: options.user.name
gid: options.group.name
@system.execute
cmd: 'shinken --init'
unless_exists: "/root/.options.ini"
SSL Layout
@call
if: -> options.ssl.enabled
header: 'SSL Layout'
, ->
@file.download
target: options.config['ca_cert']
source: options.ssl.cacert.source
local: options.ssl.cacert.local
@file.download
target: options.config['server_cert']
source: options.ssl.cert.source
local: options.ssl.cert.local
@file.download
target: options.config['server_key']
source: options.ssl.key.source
local: options.ssl.key.local
Python Modules
@call header: 'Python Modules', ->
# We compute the module list only once because pip list can be very slow
@system.execute
cmd: "pip list > #{options.build_dir}/.piplist"
shy: true
@each options.python_modules, (opts, callback) ->
v = opts.value
@call
header: opts.key
unless_exec: "grep #{opts.key} #{options.build_dir}/.piplist"
, ->
@file.download
source: v.url
target: "#{options.build_dir}/#{v.archive}.#{v.format}"
cache_file: "#{v.archive}.#{v.format}"
@tools.extract
source: "#{options.build_dir}/#{v.archive}.#{v.format}"
@system.execute
cmd:"""
cd #{options.build_dir}/#{v.archive}
python setup.py build
python setup.py install
"""
@system.remove target: "#{options.build_dir}/#{v.archive}.#{v.format}"
@system.remove target: "#{options.build_dir}/#{v.archive}"
@next callback
@system.remove
target: "#{options.build_dir}/.piplist"
shy: true