in infrastructure-provisioning/scripts/deploy_repository/deploy_repository.py [0:0]
def install_nexus():
try:
if not exists(conn,'/home/{}/.ensure_dir/nexus_ensured'.format(configuration['conf_os_user'])):
if args.efs_enabled == 'False':
mounting_disks()
else:
mount_efs()
conn.sudo('apt-get install -y maven nmap python-pip')
conn.sudo('pip2 install -UI pip')
conn.sudo('pip2 install -U fabric==1.14.0')
conn.sudo('mkdir -p /opt/nexus')
conn.sudo('wget https://sonatype-download.global.ssl.fastly.net/nexus/{0}/nexus-{1}-unix.tar.gz -O \
/opt/nexus-{1}-unix.tar.gz'.format(
nexus_version.split('.')[0], nexus_version))
conn.sudo('tar -zhxvf /opt/nexus-{}-unix.tar.gz -C /opt/'.format(
nexus_version))
conn.sudo('mv /opt/nexus-{}/* /opt/nexus/'.format(nexus_version))
conn.sudo('mv /opt/nexus-{}/.[!.]* /opt/nexus/'.format(
nexus_version))
conn.sudo('rm -rf /opt/nexus-{}'.format(nexus_version))
conn.sudo('useradd nexus')
conn.sudo('echo \"run_as_user="nexus"\" > /opt/nexus/bin/nexus.rc')
create_keystore()
conn.put('templates/jetty-https.xml', '/tmp/jetty-https.xml')
conn.sudo('sed -i "s/KEYSTORE_PASSWORD/{}/g" /tmp/jetty-https.xml'.format(keystore_pass))
conn.sudo('cp -f /tmp/jetty-https.xml /opt/nexus/etc/jetty/')
conn.put('templates/nexus.service', '/tmp/nexus.service')
if args.efs_enabled == 'False':
conn.sudo('sed -i "s|EFS_SERVICE||g" /tmp/nexus.service')
else:
conn.sudo('sed -i "s|EFS_SERVICE|mount-efs-sequentially.service|g" /tmp/nexus.service')
conn.sudo('cp /tmp/nexus.service /etc/systemd/system/')
conn.put('files/nexus.properties', '/tmp/nexus.properties')
conn.sudo('mkdir -p /opt/sonatype-work/nexus3/etc')
conn.sudo('cp -f /tmp/nexus.properties /opt/sonatype-work/nexus3/etc/nexus.properties')
conn.sudo('chown -R nexus:nexus /opt/nexus /opt/sonatype-work')
conn.sudo('systemctl daemon-reload')
conn.sudo('systemctl start nexus')
nexus_service_waiter()
conn.sudo('systemctl enable nexus')
conn.put('templates/configureNexus.groovy', '/tmp/configureNexus.groovy')
conn.sudo('sed -i "s/REGION/{}/g" /tmp/configureNexus.groovy'.format(args.region))
conn.sudo('sed -i "s/ADMIN_PASSWORD/{}/g" /tmp/configureNexus.groovy'.format(args.nexus_admin_password))
conn.sudo('sed -i "s/SERVICE_USER_NAME/{}/g" /tmp/configureNexus.groovy'.format(args.nexus_service_user_name))
conn.sudo('sed -i "s/SERVICE_USER_PASSWORD/{}/g" /tmp/configureNexus.groovy'.format(
args.nexus_service_user_password))
conn.sudo('wget http://repo.{}.amazonaws.com/2017.09/main/mirror.list -O /tmp/main_mirror.list'.format(
args.region))
conn.sudo('wget http://repo.{}.amazonaws.com/2017.09/updates/mirror.list -O /tmp/updates_mirror.list'.format(
args.region))
amazon_main_repo = conn.sudo("cat /tmp/main_mirror.list | grep {} | sed 's/$basearch//g'".format(args.region)).stdout
amazon_updates_repo = conn.sudo("cat /tmp/updates_mirror.list | grep {} | sed 's/$basearch//g'".format(
args.region)).stdout
conn.sudo('sed -i "s|AMAZON_MAIN_URL|{}|g" /tmp/configureNexus.groovy'.format(amazon_main_repo))
conn.sudo('sed -i "s|AMAZON_UPDATES_URL|{}|g" /tmp/configureNexus.groovy'.format(amazon_updates_repo))
conn.sudo('rm -f /tmp/main_mirror.list')
conn.sudo('rm -f /tmp/updates_mirror.list')
conn.put('scripts/addUpdateScript.groovy', '/tmp/addUpdateScript.groovy')
script_executed = False
while not script_executed:
try:
conn.sudo('/usr/local/groovy/latest/bin/groovy /tmp/addUpdateScript.groovy -u "admin" -p "admin123" \
-n "configureNexus" -f "/tmp/configureNexus.groovy" -h "http://localhost:8081"')
script_executed = True
except:
time.sleep(10)
pass
conn.sudo('curl -u admin:admin123 -X POST --header \'Content-Type: text/plain\' \
http://localhost:8081/service/rest/v1/script/configureNexus/run')
conn.sudo('systemctl stop nexus')
conn.sudo('git clone https://github.com/sonatype-nexus-community/nexus-repository-apt')
conn.sudo('''bash -c 'cd nexus-repository-apt && mvn' ''')
apt_plugin_version = conn.sudo('find nexus-repository-apt/ -name "nexus-repository-apt-*.jar" '
'-printf "%f\\n" | grep -v "sources"').stdout.replace('nexus-repository-apt-',
'').replace('.jar', '')
compress_plugin_version = conn.sudo('find /opt/nexus/ -name "commons-compress-*.jar" '
'-printf "%f\\n" ').stdout.replace('commons-compress-', '').replace('.jar', '')
xz_plugin_version = conn.sudo('find /opt/nexus/ -name "xz-*.jar" '
'-printf "%f\\n" ').stdout.replace('xz-', '').replace('.jar', '')
conn.sudo('mkdir -p /opt/nexus/system/net/staticsnow/nexus-repository-apt/{0}/'.format(apt_plugin_version))
apt_plugin_jar_path = conn.sudo('find nexus-repository-apt/ -name "nexus-repository-apt-{0}.jar"'.format(
apt_plugin_version)).stdout
conn.sudo('cp -f {0} /opt/nexus/system/net/staticsnow/nexus-repository-apt/{1}/'.format(
apt_plugin_jar_path, apt_plugin_version
))
conn.sudo('sed -i "$ d" /opt/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/{0}/'
'nexus-core-feature-{0}-features.xml'.format(nexus_version))
conn.sudo('''echo '<feature name="nexus-repository-apt" description="net.staticsnow:nexus-repository-apt" '''
'''version="{1}">' >> /opt/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/{0}/'''
'''nexus-core-feature-{0}-features.xml'''.format(nexus_version, apt_plugin_version))
conn.sudo('''echo '<details>net.staticsnow:nexus-repository-apt</details>' >> '''
'''/opt/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/{0}/'''
'''nexus-core-feature-{0}-features.xml'''.format(nexus_version))
conn.sudo('''echo '<bundle>mvn:net.staticsnow/nexus-repository-apt/{1}</bundle>' >> '''
'''/opt/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/{0}/'''
'''nexus-core-feature-{0}-features.xml'''.format(nexus_version, apt_plugin_version))
conn.sudo('''echo '<bundle>mvn:org.apache.commons/commons-compress/{1}</bundle>' >> '''
'''/opt/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/{0}/'''
'''nexus-core-feature-{0}-features.xml'''.format(nexus_version, compress_plugin_version))
conn.sudo('''echo '<bundle>mvn:org.tukaani/xz/{1}</bundle>' >> '''
'''/opt/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/{0}/'''
'''nexus-core-feature-{0}-features.xml'''.format(nexus_version, xz_plugin_version))
conn.sudo('''echo '</feature>' >> '''
'''/opt/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/{0}/'''
'''nexus-core-feature-{0}-features.xml'''.format(nexus_version))
conn.sudo('''echo '</features>' >> '''
'''/opt/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/{0}/'''
'''nexus-core-feature-{0}-features.xml'''.format(nexus_version))
conn.sudo('''sed -i 's|<feature prerequisite=\"true\" dependency=\"false\">wrap</feature>|'''
'''<feature prerequisite=\"true\" dependency=\"false\">wrap</feature>\\n'''
'''<feature prerequisite=\"false\" dependency=\"false\">nexus-repository-apt</feature>|g' '''
'''/opt/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/{0}/nexus-core-feature-'''
'''{0}-features.xml'''.format(nexus_version))
conn.sudo('git clone https://github.com/sonatype-nexus-community/nexus-repository-r.git')
conn.sudo('''bash -c 'cd nexus-repository-r && mvn clean install' ''')
r_plugin_version = conn.sudo('find nexus-repository-r/ -name "nexus-repository-r-*.jar" '
'-printf "%f\\n" | grep -v "sources"').stdout.replace('nexus-repository-r-', '').replace(
'.jar', '')
conn.sudo('mkdir -p /opt/nexus/system/org/sonatype/nexus/plugins/nexus-repository-r/{}/'.format(
r_plugin_version))
r_plugin_jar_path = conn.sudo('find nexus-repository-r/ -name "nexus-repository-r-{0}.jar"'.format(
r_plugin_version)).stdout
conn.sudo('cp -f {0} /opt/nexus/system/org/sonatype/nexus/plugins/nexus-repository-r/{1}/'.format(
r_plugin_jar_path, r_plugin_version
))
conn.sudo('sed -i "$ d" /opt/nexus/system/com/sonatype/nexus/assemblies/nexus-oss-feature/{0}/'
'nexus-oss-feature-{0}-features.xml'.format(nexus_version))
conn.sudo('''echo '<feature name="nexus-repository-r" description="org.sonatype.nexus.plugins:'''
'''nexus-repository-r" version="{1}">' >> /opt/nexus/system/com/sonatype/nexus/assemblies/'''
'''nexus-oss-feature/{0}/nexus-oss-feature-{0}-features.xml'''.format(nexus_version, r_plugin_version))
conn.sudo('''echo '<details>org.sonatype.nexus.plugins:nexus-repository-r</details>' >> '''
'''/opt/nexus/system/com/sonatype/nexus/assemblies/nexus-oss-feature/{0}/'''
'''nexus-oss-feature-{0}-features.xml'''.format(nexus_version))
conn.sudo('''echo '<bundle>mvn:org.sonatype.nexus.plugins/nexus-repository-r/{1}</bundle>' >> '''
'''/opt/nexus/system/com/sonatype/nexus/assemblies/nexus-oss-feature/{0}/'''
'''nexus-oss-feature-{0}-features.xml'''.format(nexus_version, r_plugin_version))
conn.sudo('''echo '</feature>' >> '''
'''/opt/nexus/system/com/sonatype/nexus/assemblies/nexus-oss-feature/{0}/'''
'''nexus-oss-feature-{0}-features.xml'''.format(nexus_version))
conn.sudo('''echo '</features>' >> '''
'''/opt/nexus/system/com/sonatype/nexus/assemblies/nexus-oss-feature/{0}/'''
'''nexus-oss-feature-{0}-features.xml'''.format(nexus_version))
conn.sudo('''sed -i 's|<feature prerequisite=\"true\" dependency=\"false\">wrap</feature>|'''
'''<feature prerequisite=\"true\" dependency=\"false\">wrap</feature>\\n'''
'''<feature version=\"{1}\" prerequisite=\"false\" dependency=\"false\">'''
'''nexus-repository-r</feature>|g' '''
'''/opt/nexus/system/com/sonatype/nexus/assemblies/nexus-oss-feature/{0}/'''
'''nexus-oss-feature-{0}-features.xml'''.format(nexus_version, r_plugin_version))
conn.sudo('chown -R nexus:nexus /opt/nexus')
conn.sudo('systemctl start nexus')
nexus_service_waiter()
conn.put('templates/addCustomRepository.groovy', '/tmp/addCustomRepository.groovy')
conn.sudo('sed -i "s|REGION|{0}|g" /tmp/addCustomRepository.groovy'.format(args.region))
script_executed = False
while not script_executed:
try:
conn.sudo('/usr/local/groovy/latest/bin/groovy /tmp/addUpdateScript.groovy -u "admin" -p "{}" '
'-n "addCustomRepository" -f "/tmp/addCustomRepository.groovy" -h '
'"http://localhost:8081"'.format(args.nexus_admin_password))
script_executed = True
except:
time.sleep(10)
pass
conn.sudo('curl -u admin:{} -X POST --header \'Content-Type: text/plain\' '
'http://localhost:8081/service/rest/v1/script/addCustomRepository/run'.format(
args.nexus_admin_password))
conn.sudo('echo "admin:{}" > /opt/nexus/credentials'.format(args.nexus_admin_password))
conn.sudo('echo "{0}:{1}" >> /opt/nexus/credentials'.format(args.nexus_service_user_name,
args.nexus_service_user_password))
conn.put('templates/updateRepositories.groovy', '/tmp/updateRepositories.groovy')
conn.sudo('cp /tmp/updateRepositories.groovy /opt/nexus/updateRepositories.groovy')
conn.put('scripts/update_amazon_repositories.py', '/tmp/update_amazon_repositories.py')
conn.sudo('cp /tmp/update_amazon_repositories.py /opt/nexus/update_amazon_repositories.py')
conn.sudo('sed -i "s|NEXUS_PASSWORD|{}|g" /opt/nexus/update_amazon_repositories.py'.format(
args.nexus_admin_password))
conn.sudo('touch /var/log/amazon_repo_update.log')
conn.sudo('echo "0 0 * * * root /usr/bin/python /opt/nexus/update_amazon_repositories.py --region {} >> '
'/var/log/amazon_repo_update.log" >> /etc/crontab'.format(args.region))
conn.sudo('touch /home/{}/.ensure_dir/nexus_ensured'.format(configuration['conf_os_user']))
except Exception as err:
traceback.print_exc(file=sys.stdout)
print('Error with installing Nexus: {}'.format(str(err)))
raise Exception