
# 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}'"
