Hortonworks Smartsense Server Install
module.exports = header:'HST Server Install', handler: (options) ->
Identities
@system.group header: 'Group', options.group
@system.user header: 'User', options.user
Packages
Note rmp can only be download from the Hortonworks Support Web UI.
@file.download
if: -> options.source?
header: 'Download HST Package'
source: options.source
target: "#{options.tmp_dir}/smartsense.rpm"
binary: true
@system.execute
header: 'Install HST Package'
cmd: "rpm -Uvh #{options.tmp_dir}/smartsense.rpm"
if: -> @status -1
@service.init
header: 'Init Script'
target: '/etc/init.d/hst-server'
source: "#{__dirname}/../resources/hst-server.j2"
local: true
mode: 0o0755
context:
'pid_dir': options.pid_dir
'user': options.user.name
@system.tmpfs
if: -> (options.store['nikita:system:type'] in ['redhat','centos']) and (options.store['nikita:system:release'][0] is '7')
mount: options.pid_dir
perm: '0750'
uid: options.user.name
gid: options.group.name
IPTables
Service | Port | Proto | Parameter |
---|---|---|---|
Smartsense Server | 9000 | http | port |
IPTables rules are only inserted if the parameter "iptables.action" is set to "start" (default value).
@tools.iptables
header: 'Smartsense server'
if: options.iptables
rules: [
{ chain: 'INPUT', jump: 'ACCEPT', dport: options.ini['server']['port'], protocol: 'tcp', state: 'NEW', comment: "Smartsense server" }
]
Layout
@call header: 'Layout Directories', ->
@system.mkdir
target: options.log_dir
uid: options.user.name
gid: options.group.name
mode: 0o0755
@system.mkdir
target: options.pid_dir
uid: options.user.name
gid: options.group.name
mode: 0o0755
@system.mkdir
target: options.conf_dir
uid: options.user.name
gid: options.group.name
mode: 0o0755
SSL Download
@call
header: 'SSL Server'
if: options.ini['server']['ssl_enabled']
, ->
@file.download
source: options.ssl.cert.source
local: options.ssl.cert.local
target: "#{options.conf_dir}/cert.pem"
uid: options.user.name
gid: options.group.name
@file.download
source: options.ssl.key.source
local: options.ssl.key.local
target: "#{options.conf_dir}/key.pem"
uid: options.user.name
gid: options.group.name
Setup
@call header: 'Setup Execution', ->
cmd = """
hst setup -q \
--accountname=#{options.ini['customer']['account.name']} \
--smartsenseid=#{options.ini['customer']['options.id']} \
--email=#{options.ini['customer']['notification.email']} \
--storage=#{options.ini['server']['storage.dir']} \
--port=#{options.ini['server']['port']} \
"""
cmd += """
--sslCert=#{options.conf_dir}/cert.pem \
--sslKey=#{options.conf_dir}/key.pem \
--sslPass=#{options.ssl_pass} \
""" if options.ini['server']['ssl_enabled']
cmd += """
--cluster=#{options.ini['cluster']['name']} \
#{if options.ini['cluster']['secured'] then '--secured --nostart' else '--nostart'}
"""
@system.execute
cmd: cmd
@file.ini
header: 'HST Server ini file'
target: "#{options.conf_dir}/hst-options.ini"
content: options.ini
parse: misc.ini.parse_multi_brackets
stringify: misc.ini.stringify_multi_brackets
indent: ''
separator: '='
comment: ';'
uid: options.user.name
gid: options.group.name
mode: 0o0750
merge: true
backup: true
@system.execute
cmd: """
if [ $(stat -c "%U" #{options.conf_dir}/hst-options.ini.bak) == '#{options.user.name}' ]; then exit 3; fi
chown -R #{options.user.name}:#{options.group.name} #{options.conf_dir}/hst-options.ini.bak
"""
code_skipped: [3,1]
@system.execute
cmd: """
if [ $(stat -c "%U" #{options.user.home}) == '#{options.user.name}' ]; then exit 3; fi
chown -R #{options.user.name}:#{options.group.name} #{options.user.home}
"""
code_skipped: [3,1]
@call
if: -> @status -3
, ->
@service.stop
name: 'hst-server'
@system.execute
shy: true
cmd: "rm -f #{options.log_dir}/hst-options.log"
@service.start
name: 'hst-server'
Dependencies
misc = require '@nikitajs/core/lib/misc'