def run(): """ setup LDAP security """ dbcfgs = json.loads(dbcfgs_json) DB_ROOT_USER = dbcfgs['db_root_user'] TRAF_HOME = os.environ['TRAF_HOME'] SQENV_FILE = TRAF_HOME + '/sqenvcom.sh' TRAF_AUTH_CONFIG = '%s/sql/scripts/.traf_authentication_config' % TRAF_HOME TRAF_AUTH_TEMPLATE = '%s/sql/scripts/traf_authentication_config' % TRAF_HOME # set traf_authentication_config file change_items = { 'LDAPHostName:.*': 'LDAPHostName:%s' % dbcfgs['ldap_hosts'], 'LDAPPort:.*': 'LDAPPort:%s' % dbcfgs['ldap_port'], 'UniqueIdentifier:.*': 'UniqueIdentifier:%s' % dbcfgs['ldap_identifiers'], 'LDAPSSL:.*': 'LDAPSSL:%s' % dbcfgs['ldap_encrypt'], 'TLS_CACERTFilename:.*': 'TLS_CACERTFilename:%s' % dbcfgs['ldap_certpath'], 'LDAPSearchDN:.*': 'LDAPSearchDN:%s' % dbcfgs['ldap_user'], 'LDAPSearchPwd:.*': 'LDAPSearchPwd:%s' % dbcfgs['ldap_pwd'] } print 'Modify authentication config file' run_cmd('cp %s %s' % (TRAF_AUTH_TEMPLATE, TRAF_AUTH_CONFIG)) mod_file(TRAF_AUTH_CONFIG, change_items) print 'Check LDAP Configuration file for errors' run_cmd('ldapconfigcheck -file %s' % TRAF_AUTH_CONFIG) print 'Verify that LDAP user %s exists' % DB_ROOT_USER run_cmd('ldapcheck --verbose --username=%s' % DB_ROOT_USER) #if not 'Authentication successful' in ldapcheck_result: # err('Failed to access LDAP server with user %s' % DB_ROOT_USER) print 'Modfiy sqenvcom.sh to turn on authentication' mod_file(SQENV_FILE, {'TRAFODION_ENABLE_AUTHENTICATION=.*\n':'TRAFODION_ENABLE_AUTHENTICATION=YES\n'})
def run(): """ setup LDAP security """ dbcfgs = json.loads(dbcfgs_json) db_root_user = dbcfgs['db_root_user'] traf_home = os.environ['TRAF_HOME'] traf_conf = os.environ['TRAF_CONF'] sqenv_file = traf_home + '/sqenvcom.sh' traf_auth_config = '%s/.traf_authentication_config' % traf_conf traf_auth_template = '%s/sql/scripts/traf_authentication_config' % traf_home ldap_hostname = '' for host in dbcfgs['ldap_hosts'].split(','): ldap_hostname += 'LDAPHostName:%s\n' % host unique_identifier = '' for identifier in dbcfgs['ldap_identifiers'].split(';'): unique_identifier += 'UniqueIdentifier:%s\n' % identifier # set traf_authentication_config file change_items = { 'LDAPHostName:.*': ldap_hostname.strip(), 'LDAPPort:.*': 'LDAPPort:%s' % dbcfgs['ldap_port'], 'UniqueIdentifier:.*': unique_identifier.strip(), 'LDAPSSL:.*': 'LDAPSSL:%s' % dbcfgs['ldap_encrypt'], 'TLS_CACERTFilename:.*': 'TLS_CACERTFilename:%s' % dbcfgs['ldap_certpath'], 'LDAPSearchDN:.*': 'LDAPSearchDN:%s' % dbcfgs['ldap_user'], 'LDAPSearchPwd:.*': 'LDAPSearchPwd:%s' % dbcfgs['ldap_pwd'] } print 'Modify authentication config file' run_cmd('cp %s %s' % (traf_auth_template, traf_auth_config)) mod_file(traf_auth_config, change_items) print 'Check LDAP Configuration file for errors' run_cmd('ldapconfigcheck -file %s' % traf_auth_config) print 'Verify that LDAP user %s exists' % db_root_user run_cmd('ldapcheck --verbose --username=%s' % db_root_user) #if not 'Authentication successful' in ldapcheck_result: # err('Failed to access LDAP server with user %s' % db_root_user) print 'Modfiy sqenvcom.sh to turn on authentication' mod_file( sqenv_file, { 'TRAFODION_ENABLE_AUTHENTICATION=.*$': 'TRAFODION_ENABLE_AUTHENTICATION=YES' })
def run(): """ setup LDAP security """ dbcfgs = json.loads(dbcfgs_json) db_root_user = dbcfgs['db_root_user'] traf_home = os.environ['TRAF_HOME'] sqenv_file = traf_home + '/sqenvcom.sh' traf_auth_config = '%s/sql/scripts/.traf_authentication_config' % traf_home traf_auth_template = '%s/sql/scripts/traf_authentication_config' % traf_home ldap_hostname = '' for host in dbcfgs['ldap_hosts'].split(','): ldap_hostname += 'LDAPHostName:%s\n' % host unique_identifier = '' for identifier in dbcfgs['ldap_identifiers'].split(';'): unique_identifier += 'UniqueIdentifier:%s\n' % identifier # set traf_authentication_config file change_items = { 'LDAPHostName:.*': ldap_hostname.strip(), 'LDAPPort:.*': 'LDAPPort:%s' % dbcfgs['ldap_port'], 'UniqueIdentifier:.*': unique_identifier.strip(), 'LDAPSSL:.*': 'LDAPSSL:%s' % dbcfgs['ldap_encrypt'], 'TLS_CACERTFilename:.*': 'TLS_CACERTFilename:%s' % dbcfgs['ldap_certpath'], 'LDAPSearchDN:.*': 'LDAPSearchDN:%s' % dbcfgs['ldap_user'], 'LDAPSearchPwd:.*': 'LDAPSearchPwd:%s' % dbcfgs['ldap_pwd'] } print 'Modify authentication config file' run_cmd('cp %s %s' % (traf_auth_template, traf_auth_config)) mod_file(traf_auth_config, change_items) print 'Check LDAP Configuration file for errors' run_cmd('ldapconfigcheck -file %s' % traf_auth_config) print 'Verify that LDAP user %s exists' % db_root_user run_cmd('ldapcheck --verbose --username=%s' % db_root_user) #if not 'Authentication successful' in ldapcheck_result: # err('Failed to access LDAP server with user %s' % db_root_user) print 'Modfiy sqenvcom.sh to turn on authentication' mod_file(sqenv_file, {'TRAFODION_ENABLE_AUTHENTICATION=NO':'TRAFODION_ENABLE_AUTHENTICATION=YES'})
def run(): """ setup LDAP security """ dbcfgs = json.loads(dbcfgs_json) DB_ROOT_USER = dbcfgs['db_root_user'] SQ_ROOT = os.environ['MY_SQROOT'] SQENV_FILE = SQ_ROOT + '/sqenvcom.sh' TRAF_AUTH_CONFIG = '%s/sql/scripts/.traf_authentication_config' % SQ_ROOT TRAF_AUTH_TEMPLATE = '%s/traf_authentication_conf.template' % TMP_DIR # set traf_authentication_config file change_items = { '{{ ldap_hosts }}': dbcfgs['ldap_hosts'], '{{ ldap_port }}': dbcfgs['ldap_port'], '{{ ldap_identifiers }}': dbcfgs['ldap_identifiers'], '{{ ldap_encrypt }}': dbcfgs['ldap_encrypt'], '{{ ldap_certpath }}': dbcfgs['ldap_certpath'], '{{ ldap_user }}': dbcfgs['ldap_user'], '{{ ldap_pwd }}': dbcfgs['ldap_pwd'] } print 'Modify authentication config file' run_cmd('cp %s %s' % (TRAF_AUTH_TEMPLATE, TRAF_AUTH_CONFIG)) mod_file(TRAF_AUTH_CONFIG, change_items) print 'Check LDAP Configuration file for errors' run_cmd('ldapconfigcheck -file %s' % TRAF_AUTH_CONFIG) print 'Verify that LDAP user %s exists' % DB_ROOT_USER run_cmd('ldapcheck --verbose --username=%s' % DB_ROOT_USER) #if not 'Authentication successful' in ldapcheck_result: # err('Failed to access LDAP server with user %s' % DB_ROOT_USER) print 'Modfiy sqenvcom.sh to turn on authentication' mod_file(SQENV_FILE, {'TRAFODION_ENABLE_AUTHENTICATION=NO':'TRAFODION_ENABLE_AUTHENTICATION=YES'})
def run(): dbcfgs = json.loads(dbcfgs_json) if not os.path.exists(dbcfgs['hbase_lib_path']): err('Cannot find HBase lib folder') if not os.path.exists(dbcfgs['java_home']): err('Cannot find Java, please set the JAVA_HOME on the new nodes to: %s' % dbcfgs['java_home']) home_dir = get_default_home() if dbcfgs.has_key('home_dir'): home_dir = dbcfgs['home_dir'] traf_user = dbcfgs['traf_user'] traf_home = dbcfgs['traf_home'] traf_user_dir = '%s/%s' % (home_dir, traf_user) traf_ver = dbcfgs['traf_version'] # scratch_locs = dbcfgs['scratch_locs'].split(',') SUDOER_CFG = """ ## Allow trafodion id to run commands needed for backup and restore %%%s ALL =(hbase) NOPASSWD: %s/bin/hbase" """ % (traf_user, DEF_HBASE_HOME) ### add trafodion user ### # create trafodion user and group if cmd_output('getent passwd %s' % traf_user): print 'user [%s] exists' % traf_user # trafodion user exists, set actual trafodion group traf_group = cmd_output('id -ng %s' % traf_user) else: # default trafodion group traf_group = traf_user if not cmd_output('getent group %s' % traf_group): run_cmd('groupadd %s' % traf_group) traf_shadow = dbcfgs['traf_shadow'] print 'Adding user [%s]' % traf_user run_cmd( 'useradd --shell /bin/bash -m %s -g %s --home %s --password "%s"' % (traf_user, traf_group, traf_user_dir, traf_shadow)) print 'Added user [%s]' % traf_user if not os.path.exists(traf_user_dir): run_cmd('mkdir -p %s' % traf_user_dir) run_cmd('chmod 700 %s' % traf_user_dir) ### untar the copied trafoion binaries ### TRAF_PKG_FILE = '/tmp/traf_bin.tar.gz' run_cmd('mkdir -p %s' % traf_home) run_cmd('mkdir -p /etc/trafodion') run_cmd('tar xf %s -C %s' % (TRAF_PKG_FILE, traf_home)) run_cmd('mv -f /tmp/trafodion_config %s' % TRAF_CFG_FILE) run_cmd('cp -rf /tmp/.ssh %s/..' % traf_home) run_cmd('mv -f /tmp/hbase-trx-* %s' % dbcfgs['hbase_lib_path']) run_cmd('mv -f /tmp/trafodion-utility-* %s' % dbcfgs['hbase_lib_path']) ### copy trafodion bashrc ### bashrc_template = '%s/sysinstall/home/trafodion/.bashrc' % traf_home bashrc_file = '%s/%s/.bashrc' % (home_dir, traf_user) # backup orig bashrc if os.path.exists(bashrc_file): run_cmd('cp -f %s %s.bak' % (bashrc_file, bashrc_file)) run_cmd('cp -f %s %s' % (bashrc_template, bashrc_file)) # set permission run_cmd('chmod 700 %s/../.ssh' % traf_home) cmd_output('chmod 600 %s/../.ssh/{id_rsa,config,authorized_keys}' % traf_home) run_cmd('chmod 777 %s' % TRAF_CFG_FILE) run_cmd('chown -R %s:%s /etc/trafodion' % (traf_user, traf_group)) run_cmd('chmod +r %s/{hbase-trx-*,trafodion-utility-*}' % dbcfgs['hbase_lib_path']) run_cmd('chown -R %s:%s %s' % (traf_user, traf_group, traf_user_dir)) ### modify CLUSTERNAME ### mod_file(TRAF_CFG_FILE, {'CLUSTERNAME=.*': 'CLUSTERNAME=%s' % socket.gethostname()}) ### kernel settings ### run_cmd('echo "kernel.pid_max=65535" >> /etc/sysctl.conf') run_cmd('echo "kernel.msgmnb=65536" >> /etc/sysctl.conf') run_cmd('echo "kernel.msgmax=65536" >> /etc/sysctl.conf') run_cmd('/sbin/sysctl -p /etc/sysctl.conf 2>&1 > /dev/null') ### copy init script ### init_script = '%s/sysinstall/etc/init.d/trafodion' % traf_home if os.path.exists(init_script): run_cmd('cp -rf %s /etc/init.d/' % init_script) run_cmd('chkconfig --add trafodion') run_cmd('chkconfig --level 06 trafodion on') ### create and set permission for scratch file dir ### # for loc in scratch_locs: # # don't set permission for HOME folder # if not os.path.exists(loc): # run_cmd('mkdir -p %s' % loc) # if home_dir not in loc: # run_cmd('chmod 777 %s' % loc) if dbcfgs['enable_ha'] == 'true': # set trafodion sudoer file for specific cmds SUDOER_CFG += """ ## Trafodion Floating IP commands Cmnd_Alias IP = /sbin/ip Cmnd_Alias ARP = /sbin/arping ## Allow Trafodion id to run commands needed to configure floating IP %%%s ALL = NOPASSWD: IP, ARP """ % traf_user ### write trafodion sudoer file ### with open(TRAF_SUDOER_FILE, 'w') as f: f.write(SUDOER_CFG) # set ulimits for trafodion user ulimits_file = '/etc/security/limits.d/%s.conf' % traf_user ulimits_config = ''' # Trafodion settings %s soft core unlimited %s hard core unlimited %s soft memlock unlimited %s hard memlock unlimited %s soft nofile 32768 %s hard nofile 65536 %s soft nproc 100000 %s hard nproc 100000 ''' % ((traf_user, ) * 8) write_file(ulimits_file, ulimits_config)
def run(): """ create trafodion user, bashrc, setup passwordless SSH """ dbcfgs = json.loads(dbcfgs_json) DISTRO = dbcfgs['distro'] if 'CDH' in DISTRO: hadoop_type = 'cloudera' elif 'HDP' in DISTRO: hadoop_type = 'hortonworks' elif 'APACHE' in DISTRO: hadoop_type = 'apache' TRAF_USER = dbcfgs['traf_user'] TRAF_PWD = dbcfgs['traf_pwd'] TRAF_GROUP = TRAF_USER TRAF_HOME = cmd_output( 'cat /etc/default/useradd |grep HOME |cut -d "=" -f 2').strip() TRAF_USER_DIR = '%s/%s' % (TRAF_HOME, TRAF_USER) SQ_ROOT = '%s/%s-%s' % (TRAF_USER_DIR, dbcfgs['traf_basename'], dbcfgs['traf_version']) KEY_FILE = '/tmp/id_rsa' AUTH_KEY_FILE = '%s/.ssh/authorized_keys' % TRAF_USER_DIR SSH_CFG_FILE = '%s/.ssh/config' % TRAF_USER_DIR BASHRC_TEMPLATE = '%s/bashrc.template' % TMP_DIR BASHRC_FILE = '%s/.bashrc' % TRAF_USER_DIR ULIMITS_FILE = '/etc/security/limits.d/%s.conf' % TRAF_USER HSPERFDATA_FILE = '/tmp/hsperfdata_trafodion' # create trafodion user and group if not cmd_output('getent group %s' % TRAF_GROUP): run_cmd('groupadd %s > /dev/null 2>&1' % TRAF_GROUP) if not cmd_output('getent passwd %s' % TRAF_USER): run_cmd( 'useradd --shell /bin/bash -m %s -g %s --password "$(openssl passwd %s)"' % (TRAF_USER, TRAF_GROUP, TRAF_PWD)) elif not os.path.exists(TRAF_USER_DIR): run_cmd('mkdir -p %s' % TRAF_USER_DIR) run_cmd('chmod 700 %s' % TRAF_USER_DIR) # set ssh key run_cmd_as_user(TRAF_USER, 'echo -e "y" | ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa') # the key is generated in copy_file script running on the installer node run_cmd('cp %s{,.pub} %s/.ssh/' % (KEY_FILE, TRAF_USER_DIR)) run_cmd_as_user(TRAF_USER, 'cat ~/.ssh/id_rsa.pub > %s' % AUTH_KEY_FILE) run_cmd('chmod 644 %s' % AUTH_KEY_FILE) ssh_cfg = 'StrictHostKeyChecking=no\nNoHostAuthenticationForLocalhost=yes\n' with open(SSH_CFG_FILE, 'w') as f: f.write(ssh_cfg) run_cmd('chmod 600 %s' % SSH_CFG_FILE) run_cmd('chown -R %s:%s %s/.ssh/' % (TRAF_USER, TRAF_GROUP, TRAF_USER_DIR)) # set bashrc nodes = dbcfgs['node_list'].split(',') change_items = { '{{ java_home }}': dbcfgs['java_home'], '{{ sq_home }}': SQ_ROOT, '{{ hadoop_type }}': hadoop_type, '{{ node_list }}': ' '.join(nodes), '{{ node_count }}': str(len(nodes)), '{{ enable_ha }}': dbcfgs['enable_ha'], '{{ my_nodes }}': ' -w ' + ' -w '.join(nodes) } mod_file(BASHRC_TEMPLATE, change_items) if 'APACHE' in DISTRO: bashrc_content = """ export HADOOP_PREFIX=%s export HBASE_HOME=%s export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$HBASE_HOME/bin """ % (dbcfgs['hadoop_home'], dbcfgs['hbase_home']) append_file(BASHRC_TEMPLATE, bashrc_content, position='HADOOP_TYPE') # backup bashrc if exsits if os.path.exists(BASHRC_FILE): run_cmd('cp %s %s.bak' % ((BASHRC_FILE, ) * 2)) # copy bashrc to trafodion's home run_cmd('cp %s %s' % (BASHRC_TEMPLATE, BASHRC_FILE)) run_cmd('chown -R %s:%s %s*' % (TRAF_USER, TRAF_GROUP, BASHRC_FILE)) # set ulimits for trafodion user ulimits_config = ''' # Trafodion settings %s soft core unlimited %s hard core unlimited %s soft memlock unlimited %s hard memlock unlimited %s soft nofile 32768 %s hard nofile 65536 %s soft nproc 100000 %s hard nproc 100000 %s soft nofile 8192 %s hard nofile 65535 hbase soft nofile 8192 ''' % ((TRAF_USER, ) * 10) with open(ULIMITS_FILE, 'w') as f: f.write(ulimits_config) # change permission for hsperfdata if os.path.exists(HSPERFDATA_FILE): run_cmd('chown -R %s:%s %s' % (TRAF_USER, TRAF_GROUP, HSPERFDATA_FILE)) # clean up unused key file at the last step run_cmd('rm -rf %s{,.pub}' % KEY_FILE) print 'Setup trafodion user successfully!'
def run(): """ create trafodion user, bashrc, setup passwordless SSH """ dbcfgs = json.loads(dbcfgs_json) DISTRO = dbcfgs['distro'] if 'CDH' in DISTRO: hadoop_type = 'cloudera' elif 'HDP' in DISTRO: hadoop_type = 'hortonworks' elif 'APACHE' in DISTRO: hadoop_type = 'apache' TRAF_USER = dbcfgs['traf_user'] TRAF_PWD = dbcfgs['traf_pwd'] TRAF_GROUP = TRAF_USER TRAF_HOME = cmd_output('cat /etc/default/useradd |grep HOME |cut -d "=" -f 2').strip() TRAF_USER_DIR = '%s/%s' % (TRAF_HOME, TRAF_USER) SQ_ROOT = '%s/%s-%s' % (TRAF_USER_DIR, dbcfgs['traf_basename'], dbcfgs['traf_version']) KEY_FILE = '/tmp/id_rsa' AUTH_KEY_FILE = '%s/.ssh/authorized_keys' % TRAF_USER_DIR SSH_CFG_FILE = '%s/.ssh/config' % TRAF_USER_DIR BASHRC_TEMPLATE = '%s/bashrc.template' % TMP_DIR BASHRC_FILE = '%s/.bashrc' % TRAF_USER_DIR ULIMITS_FILE = '/etc/security/limits.d/%s.conf' % TRAF_USER HSPERFDATA_FILE = '/tmp/hsperfdata_trafodion' # create trafodion user and group if not cmd_output('getent group %s' % TRAF_GROUP): run_cmd('groupadd %s > /dev/null 2>&1' % TRAF_GROUP) if not cmd_output('getent passwd %s' % TRAF_USER): run_cmd('useradd --shell /bin/bash -m %s -g %s --password "$(openssl passwd %s)"' % (TRAF_USER, TRAF_GROUP, TRAF_PWD)) elif not os.path.exists(TRAF_USER_DIR): run_cmd('mkdir -p %s' % TRAF_USER_DIR) run_cmd('chmod 700 %s' % TRAF_USER_DIR) # set ssh key run_cmd_as_user(TRAF_USER, 'echo -e "y" | ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa') # the key is generated in copy_file script running on the installer node run_cmd('cp %s{,.pub} %s/.ssh/' % (KEY_FILE, TRAF_USER_DIR)) run_cmd_as_user(TRAF_USER, 'cat ~/.ssh/id_rsa.pub > %s' % AUTH_KEY_FILE) run_cmd('chmod 644 %s' % AUTH_KEY_FILE) ssh_cfg = 'StrictHostKeyChecking=no\nNoHostAuthenticationForLocalhost=yes\n' with open(SSH_CFG_FILE, 'w') as f: f.write(ssh_cfg) run_cmd('chmod 600 %s' % SSH_CFG_FILE) run_cmd('chown -R %s:%s %s/.ssh/' % (TRAF_USER, TRAF_GROUP, TRAF_USER_DIR)) # set bashrc nodes = dbcfgs['node_list'].split(',') change_items = { '{{ java_home }}': dbcfgs['java_home'], '{{ sq_home }}': SQ_ROOT, '{{ hadoop_type }}': hadoop_type, '{{ node_list }}': ' '.join(nodes), '{{ node_count }}': str(len(nodes)), '{{ enable_ha }}': dbcfgs['enable_ha'], '{{ my_nodes }}': ' -w ' + ' -w '.join(nodes) } mod_file(BASHRC_TEMPLATE, change_items) if 'APACHE' in DISTRO: bashrc_content = """ export HADOOP_PREFIX=%s export HBASE_HOME=%s export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$HBASE_HOME/bin """ % (dbcfgs['hadoop_home'], dbcfgs['hbase_home']) append_file(BASHRC_TEMPLATE, bashrc_content, position='HADOOP_TYPE') # backup bashrc if exsits if os.path.exists(BASHRC_FILE): run_cmd('cp %s %s.bak' % ((BASHRC_FILE,) *2)) # copy bashrc to trafodion's home run_cmd('cp %s %s' % (BASHRC_TEMPLATE, BASHRC_FILE)) run_cmd('chown -R %s:%s %s*' % (TRAF_USER, TRAF_GROUP, BASHRC_FILE)) # set ulimits for trafodion user ulimits_config = ''' # Trafodion settings %s soft core unlimited %s hard core unlimited %s soft memlock unlimited %s hard memlock unlimited %s soft nofile 32768 %s hard nofile 65536 %s soft nproc 100000 %s hard nproc 100000 %s soft nofile 8192 %s hard nofile 65535 hbase soft nofile 8192 ''' % ((TRAF_USER,) * 10) with open(ULIMITS_FILE, 'w') as f: f.write(ulimits_config) # change permission for hsperfdata if os.path.exists(HSPERFDATA_FILE): run_cmd('chown -R %s:%s %s' % (TRAF_USER, TRAF_GROUP, HSPERFDATA_FILE)) # clean up unused key file at the last step run_cmd('rm -rf %s{,.pub}' % KEY_FILE) print 'Setup trafodion user successfully!'
def run(): dbcfgs = json.loads(dbcfgs_json) SQ_ROOT = os.environ['MY_SQROOT'] TRAF_VER = dbcfgs['traf_version'] HBASE_XML_FILE = dbcfgs['hbase_xml_file'] DCS_INSTALL_ENV = 'export DCS_INSTALL_DIR=%s/dcs-%s' % (SQ_ROOT, TRAF_VER) REST_INSTALL_ENV = 'export REST_INSTALL_DIR=%s/rest-%s' % (SQ_ROOT, TRAF_VER) DCS_CONF_DIR = '%s/dcs-%s/conf' % (SQ_ROOT, TRAF_VER) DCS_SRV_FILE = DCS_CONF_DIR + '/servers' DCS_MASTER_FILE = DCS_CONF_DIR + '/master' DCS_BKMASTER_FILE = DCS_CONF_DIR + '/backup-masters' DCS_ENV_FILE = DCS_CONF_DIR + '/dcs-env.sh' DCS_SITE_FILE = DCS_CONF_DIR + '/dcs-site.xml' REST_SITE_FILE = '%s/rest-%s/conf/rest-site.xml' % (SQ_ROOT, TRAF_VER) TRAFCI_FILE = SQ_ROOT + '/trafci/bin/trafci' SQENV_FILE = SQ_ROOT + '/sqenvcom.sh' ### dcs setting ### # servers nodes = dbcfgs['node_list'].split(',') dcs_cnt = dbcfgs['dcs_cnt_per_node'] dcs_servers = '' for node in nodes: dcs_servers += '%s %s\n' % (node, dcs_cnt) write_file(DCS_SRV_FILE, dcs_servers) ### modify dcs config files ### # modify master dcs_master = nodes[0] append_file(DCS_MASTER_FILE, dcs_master) # modify sqenvcom.sh append_file(SQENV_FILE, DCS_INSTALL_ENV) append_file(SQENV_FILE, REST_INSTALL_ENV) # modify dcs-env.sh mod_file(DCS_ENV_FILE, {'.*DCS_MANAGES_ZK=.*': 'export DCS_MANAGES_ZK=false'}) # modify trafci mod_file(TRAFCI_FILE, {'HNAME=.*': 'HNAME=%s:23400' % dcs_master}) # modify dcs-site.xml net_interface = cmd_output( 'netstat -rn | grep "^0.0.0.0" | awk \'{print $8}\'').strip() hb = ParseXML(HBASE_XML_FILE) zk_hosts = hb.get_property('hbase.zookeeper.quorum') zk_port = hb.get_property('hbase.zookeeper.property.clientPort') p = ParseXML(DCS_SITE_FILE) p.add_property('dcs.zookeeper.property.clientPort', zk_port) p.add_property('dcs.zookeeper.quorum', zk_hosts) p.add_property('dcs.dns.interface', net_interface) if dbcfgs['dcs_ha'] == 'Y': dcs_floating_ip = dbcfgs['dcs_floating_ip'] dcs_backup_nodes = dbcfgs['dcs_backup_nodes'] p.add_property('dcs.master.floating.ip', 'true') p.add_property('dcs.master.floating.ip.external.interface', net_interface) p.add_property('dcs.master.floating.ip.external.ip.address', dcs_floating_ip) p.rm_property('dcs.dns.interface') # modify backup_master write_file(DCS_BKMASTER_FILE, dcs_backup_nodes) p.write_xml() ### rest setting ### p = ParseXML(REST_SITE_FILE) p.add_property('rest.zookeeper.property.clientPort', zk_port) p.add_property('rest.zookeeper.quorum', zk_hosts) p.write_xml() ### run sqcertgen ### run_cmd('sqcertgen')
def run(): dbcfgs = json.loads(dbcfgs_json) SQ_ROOT = os.environ['MY_SQROOT'] TRAF_VER = dbcfgs['traf_version'] HBASE_XML_FILE = dbcfgs['hbase_xml_file'] DCS_INSTALL_ENV = 'export DCS_INSTALL_DIR=%s/dcs-%s' % (SQ_ROOT, TRAF_VER) REST_INSTALL_ENV = 'export REST_INSTALL_DIR=%s/rest-%s' % (SQ_ROOT, TRAF_VER) DCS_CONF_DIR = '%s/dcs-%s/conf' % (SQ_ROOT, TRAF_VER) DCS_SRV_FILE = DCS_CONF_DIR + '/servers' DCS_MASTER_FILE = DCS_CONF_DIR + '/master' DCS_BKMASTER_FILE = DCS_CONF_DIR + '/backup-masters' DCS_ENV_FILE = DCS_CONF_DIR + '/dcs-env.sh' DCS_SITE_FILE = DCS_CONF_DIR + '/dcs-site.xml' REST_SITE_FILE = '%s/rest-%s/conf/rest-site.xml' % (SQ_ROOT, TRAF_VER) TRAFCI_FILE = SQ_ROOT + '/trafci/bin/trafci' SQENV_FILE = SQ_ROOT + '/sqenvcom.sh' ### dcs setting ### # servers nodes = dbcfgs['node_list'].split(',') dcs_cnt = dbcfgs['dcs_cnt_per_node'] dcs_servers = '' for node in nodes: dcs_servers += '%s %s\n' % (node, dcs_cnt) write_file(DCS_SRV_FILE, dcs_servers) ### modify dcs config files ### # modify master dcs_master = nodes[0] append_file(DCS_MASTER_FILE, dcs_master) # modify sqenvcom.sh append_file(SQENV_FILE, DCS_INSTALL_ENV) append_file(SQENV_FILE, REST_INSTALL_ENV) # modify dcs-env.sh mod_file(DCS_ENV_FILE, {'.*DCS_MANAGES_ZK=.*':'export DCS_MANAGES_ZK=false'}) # modify trafci mod_file(TRAFCI_FILE, {'HNAME=.*':'HNAME=%s:23400' % dcs_master}) # modify dcs-site.xml net_interface = cmd_output('netstat -rn | grep "^0.0.0.0" | awk \'{print $8}\'').strip() hb = ParseXML(HBASE_XML_FILE) zk_hosts = hb.get_property('hbase.zookeeper.quorum') zk_port = hb.get_property('hbase.zookeeper.property.clientPort') p = ParseXML(DCS_SITE_FILE) p.add_property('dcs.zookeeper.property.clientPort', zk_port) p.add_property('dcs.zookeeper.quorum', zk_hosts) p.add_property('dcs.dns.interface', net_interface) if dbcfgs['dcs_ha'] == 'Y': dcs_floating_ip = dbcfgs['dcs_floating_ip'] dcs_backup_nodes = dbcfgs['dcs_backup_nodes'] p.add_property('dcs.master.floating.ip', 'true') p.add_property('dcs.master.floating.ip.external.interface', net_interface) p.add_property('dcs.master.floating.ip.external.ip.address', dcs_floating_ip) p.rm_property('dcs.dns.interface') # modify backup_master write_file(DCS_BKMASTER_FILE, dcs_backup_nodes) p.write_xml() ### rest setting ### p = ParseXML(REST_SITE_FILE) p.add_property('rest.zookeeper.property.clientPort', zk_port) p.add_property('rest.zookeeper.quorum', zk_hosts) p.write_xml() ### run sqcertgen ### run_cmd('sqcertgen')