Ranger Usersync Process
module.exports = header: 'Ranger UserSync Install', handler: ({options}) ->
Registry
@registry.register 'hdp_select', 'ryba/lib/hdp_select'
@registry.register 'hconfigure', 'ryba/lib/hconfigure'
Identities
@system.group header: 'Group', options.group
@system.user header: 'User', options.user
Package
Install the Ranger user Sync package and set it to the latest version. Note, we select the "kafka-broker" hdp directory. There is no "kafka-consumer" directories.
@call header: 'Packages', ->
hdp_current_version = null
@call (_, callback) =>
@system.execute
cmd: "hdp-select versions | tail -1 | tr '.' '_' | tr '-' '_'"
, (err, data) =>
return callback err if err
hdp_current_version = data.stdout.trim()
return callback null, data.status
@call ->
@service
name: "ranger_#{hdp_current_version}-usersync"
@hdp_select
name: 'ranger-usersync'
@call header: 'Layout', ->
@system.mkdir
target: options.conf_dir
@system.mkdir
target: options.log_dir
@system.tmpfs
if_os: name: ['redhat','centos'], version: '7'
mount: options.pid_dir
uid: options.user.name
gid: options.group.name
perm: '0750'
@system.mkdir
target: options.pid_dir
## IPTables
| Service | Port | Proto | Parameter |
|----------------------|-------|-------------|--------------------|
| Ranger policymanager | 6080 | http | port |
| Ranger policymanager | 6082 | https | port |
IPTables rules are only inserted if the parameter "iptables.action" is set to
"start" (default value).
module.exports.push
header: 'Ranger Admin IPTables',
, ->
{ranger} = @config.ryba
return unless @config.iptables.action is 'start'
@tools.iptables
rules: [
{ chain: 'INPUT', jump: 'ACCEPT', dport: ranger.admin.site['ranger.service.http.port'], protocol: 'tcp', state: 'NEW', comment: "Ranger Admin HTTP WEBUI" }
{ chain: 'INPUT', jump: 'ACCEPT', dport: ranger.admin.site['ranger.service.https.port'], protocol: 'tcp', state: 'NEW', comment: "Ranger Admin HTTPS WEBUI" }
]
## Ranger ranger-usersync Driver
module.exports.push header: 'Ranger Admin Driver', ->
{ranger} = @config.ryba
@system.link
source: '/usr/share/java/mysql-connector-java.jar'
target: ranger.admin.install['SQL_CONNECTOR_JAR']
Setup Scripts
Update the file "install.properties" with the properties defined by the "ryba.options.install" configuration.
@file.render
header: 'Configure Install Scripts'
target: "/usr/hdp/current/ranger-usersync/install.properties"
source: "#{__dirname}/../resources/usersync-install-properties.j2"
local: true
context: options
write: for k, v of options.install
match: RegExp "^#{quote k}=.*$", 'mg'
replace: "#{k}=#{v}"
append: true
eof: true
backup: true
@file
header: 'Configure Setup Scripts'
target: '/usr/hdp/current/ranger-usersync/setup.py'
write : for k, v of options.setup
match: RegExp "^#{quote k} =.*$", 'mg'
replace: "#{k} = '#{v}'"
append: true
mode: 0o750
eof: true
backup: true
@system.execute
header: 'Execute Setup Scripts'
cmd: """
cd /usr/hdp/current/ranger-usersync/
./setup.sh
"""
# the setup scripts already render an init.d script but it does not respect
# the convention exit code 3 when service is stopped on the status code
@service.init
target: '/etc/init.d/ranger-usersync'
source: "#{__dirname}/../resources/ranger-usersync.j2"
local: true
mode: 0o0755
context: options
writes = [
match: RegExp "JAVA_OPTS=.*", 'm'
replace: "JAVA_OPTS=\"${JAVA_OPTS} -Xmx#{options.heap_size} -Xms#{options.heap_size} \""
append: true
]
for k,v of options.opts
writes.push
match: RegExp "^JAVA_OPTS=.*#{k}", 'm'
replace: "JAVA_OPTS=\"${JAVA_OPTS} -D#{k}=#{v}\" # RYBA, DONT OVERWRITE 'ryba/ranger/usersync'"
append: true
@file
header: 'Usersync Env'
target: '/etc/ranger/usersync/conf/ranger-usersync-env-1.sh'
write: writes
@hconfigure
header: 'Usersync site'
target: "/etc/ranger/usersync/conf/ranger-ugsync-site.xml"
properties: options.site
merge: true
backup: true
#
# @java.keystore_add
# keystore: options.site['options.truststore.file']
# storepass: 'ryba123'
# caname: "hadoop_root_ca"
# cacert: "#{ssl.cacert}"
# local: true
# @java.keystore_add
# keystore: ranger.admin.site['ranger.https.attrib.keystore.file']
# storepass: ranger.admin.site['ranger.service.https.attrib.keystore.pass']
# caname: "hadoop_root_ca"
# cacert: "#{ssl.cacert}"
# key: "#{ssl.key}"
# cert: "#{ssl.cert}"
# keypass: 'ryba123'
# name: ranger.admin.site['ranger.service.https.attrib.keystore.keyalias']
# local: true
# @java.keystore_add
# keystore: ranger.admin.site['ranger.https.attrib.keystore.file']
# storepass: ranger.admin.site['ranger.service.https.attrib.keystore.pass']
# caname: "hadoop_root_ca"
# cacert: "#{ssl.cacert}"
# local: true
Dependencies
glob = require 'glob'
path = require 'path'
quote = require 'regexp-quote'