Menu

Ambari NiFi Configure

module.exports = ->
  service = migration.call @, service, 'ryba/ambari/server', ['ryba', 'ambari', 'nifi'], require('nikita/lib/misc').merge require('.').use,
    ssl: key: ['ssl']
    hdf: key: ['ryba', 'hdf']
  options = @config.ryba.ambari.nifi = service.options

Environment

  options.conf_dir ?= '/etc/nifi/conf'
  options.log_dir ?= '/var/log/nifi'
  options.toolkit ?= {}
  options.toolkit.source ?= 'http://www-eu.apache.org/dist/nifi/1.2.0/nifi-toolkit-1.2.0-bin.zip'
  options.toolkit.target ?= '/etc/nifi/conf/nifi-toolkit'

User and Groups

  # Group
  options.group = name: options.group if typeof options.group is 'string'
  options.group ?= {}
  options.group.name ?= 'nifi'
  options.group.system ?= true
  # User
  options.user = name: options.user if typeof options.user is 'string'
  options.user ?= {}
  options.user.name ?= 'nifi'
  options.user.gid = options.group.name
  options.user.system ?= true
  options.user.comment ?= 'NiFi User'
  options.user.home ?= '/var/lib/nifi'
  options.user.limits ?= {}
  options.user.limits.nofile ?= 64000
  options.user.limits.nproc ?= 10000

SSL

https://community.hortonworks.com/articles/81184/understanding-the-initial-admin-identity-access-po.html

  options.ssl = merge {}, service.use.ssl?[0]?.options, options.ssl
  options.ssl.enabled ?= !!service.use.ssl
  options.ssl.certs = {}
  # options.ssl.truststore ?= {}
  # options.ssl.keystore ?= {}
  if options.ssl.enabled
    # options.ssl.cert = @config.ssl.cert
    # options.ssl.key = @config.ssl.key
    # options.ssl.cacert = @config.ssl.cacert
    for srv in service.use.ssl
      options.ssl.certs[srv.node.hostname] ?= {}
      options.ssl.certs[srv.node.hostname] = srv.options.cert
    options.ssl.truststore.target = "#{options.conf_dir}/truststore.jks"
    throw Error 'Required Property: truststore.password' unless options.ssl.truststore.password
    options.ssl.truststore.caname ?= 'hadoop_root_ca'
    options.ssl.truststore.type ?= 'jks'
    throw Error "Invalid Truststore Type: #{truststore.type}" unless options.ssl.truststore.type in ['jks', 'jceks', 'pkcs12']
    options.ssl.keystore.target = "#{options.conf_dir}/keystore.jks"
    throw Error 'Required Property: keystore.password' unless options.ssl.keystore.password
    throw Error 'Required Property: keystore.keypass' unless options.ssl.keystore.keypass

Dependencies

{merge} = require '@nikitajs/core/lib/misc'
migration = require 'masson/lib/migration'