Cloudera Manager Server install
module.exports = header: 'Cloudera Manager Server Install', handler: ->
{db} = @config.ryba.cloudera_manager.server
{java} = @config
Packages
Install the packages cloudera-scm-agent and cloudera-scm-daemons
@service
name: 'mysql'
if: db.type is 'mysql'
@service
name: 'cloudera-manager-daemons'
@service
name: 'cloudera-manager-server'
Env
@file
header: 'Environment'
target: '/etc/default/cloudera-scm-server'
write: [
match: RegExp '^export JAVA_HOME=*'
replace: "export JAVA_HOME=#{java.java_home} # Ryba, don't OVERWRITE"
append: true
]
backup:true
Configure
Set the server's hostname in the agent's configuration
@call header: 'Cloudera Manager Server Configuration', ->
mysql_pwd = @config.mysql.server.password
mysql_exec = "mysql -uroot -p#{mysql_pwd} -h#{db.host} -P#{db.port}"
@system.execute (
cmd: """
#{mysql_exec} -e \"
create database IF NOT EXISTS #{params.db_name} DEFAULT CHARACTER SET utf8;
grant all on #{params.db_name}.* TO '#{params.user}'@'localhost' IDENTIFIED BY '#{params.password}';
grant all on #{params.db_name}.* TO '#{params.user}'@'%' IDENTIFIED BY '#{params.password}';
flush privileges;
\"
"""
unless_exec: "#{mysql_exec} -e 'use #{params.user}'"
) for account, params of db.accounts
@system.execute
cmd: """
/usr/share/cmf/schema/scm_prepare_database.sh \
-h #{db.host} \
-P #{db.port} \
--scm-host #{@config.hostname} \
-u root \
-p#{mysql_pwd} \
#{db.type} \
#{db.main_account.db_name} \
#{db.main_account.user} \
#{db.main_account.password}
"""
unless_exec: "#{mysql_exec} -e 'use #{db.main_account.db_name}'"