diff --git a/README.md b/README.md index 6f65671..17b91d2 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,25 @@ The most important variables are listed below: ``` yaml nexus_behind_nginx: True +nexus_service_port: 8081 +nexus_service_bind_host: 127.0.0.1 +nexus_major_version: '2' +#nexus_version: '{{ nexus_major_version }}.28.1' +nexus_version: '{{ nexus_major_version }}.14.19' +nexus_release: '01' +nexus_download_url: 'https://download.sonatype.com/nexus/{{ nexus_major_version }}/nexus-{{ nexus_version }}-{{ nexus_release }}-unix.tar.gz' +nexus_install_basedir: /srv/nexus +nexus_webapp_dir: '{{ nexus_install_basedir }}/nexus-oss-webapp' nexus_data_basedir: /data +nexus_data_dir: '{{ nexus_data_basedir }}/sonatype-work/nexus' +nexus_logdir: '/var/log/nexus' +nexus_accesslog_maxhistory: 20 +nexus_wrapper_initmemory: 256 +nexus_wrapper_maxmemory: 1024 +nexus_wrapper_conf_dir: '{{ nexus_webapp_dir }}/bin/jsw/conf' +nexus_wrapper_logdir: '/var/log/nexus-wrapper' +# MB +nexus_wrapper_diskcache_buffersize: 4096 ``` Dependencies diff --git a/defaults/main.yml b/defaults/main.yml index fc8650b..b800e74 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,3 +1,21 @@ --- nexus_behind_nginx: True +nexus_service_port: 8081 +nexus_service_bind_host: 127.0.0.1 +nexus_major_version: '2' +#nexus_version: '{{ nexus_major_version }}.28.1' +nexus_version: '{{ nexus_major_version }}.14.19' +nexus_release: '01' +nexus_download_url: 'https://download.sonatype.com/nexus/{{ nexus_major_version }}/nexus-{{ nexus_version }}-{{ nexus_release }}-unix.tar.gz' +nexus_install_basedir: /srv/nexus +nexus_webapp_dir: '{{ nexus_install_basedir }}/nexus-oss-webapp' nexus_data_basedir: /data +nexus_data_dir: '{{ nexus_data_basedir }}/sonatype-work/nexus' +nexus_logdir: '/var/log/nexus' +nexus_accesslog_maxhistory: 20 +nexus_wrapper_initmemory: 256 +nexus_wrapper_maxmemory: 1024 +nexus_wrapper_conf_dir: '{{ nexus_webapp_dir }}/bin/jsw/conf' +nexus_wrapper_logdir: '/var/log/nexus-wrapper' +# MB +nexus_wrapper_diskcache_buffersize: 4096 diff --git a/handlers/main.yml b/handlers/main.yml index 27474e0..3929aa6 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,2 +1,6 @@ --- -# handlers file for ansible-role-template \ No newline at end of file +- name: Reload the systemd data + systemd: daemon_reload=yes + +- name: Restart Nexus + service: name=nexus state=restarted diff --git a/tasks/main.yml b/tasks/main.yml index 8657b14..aa37ccb 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -3,5 +3,41 @@ - name: Create a user for the Nexus OSS service user: name={{ nexus_user }} home=/dev/null createhome=no shell=/usr/sbin/nologin system=yes + - name: Create the nexus logs directory + file: dest={{ nexus_logdir }} state=directory owner={{ nexus_user }} group={{ nexus_user }} mode=0755 + + - name: Install the systemd unit + template: src=nexus.service.j2 dest=/etc/systemd/system/nexus.service owner=root group=root mode='0644' + notify: Reload the systemd data + + - meta: + free_form: flush_handlers + + tags: [ 'nexus', 'nexus_oss' ] + +- block: + - name: Create the nexus wrapper log directory + file: dest={{ nexus_wrapper_logdir }} state=directory owner={{ nexus_user }} group={{ nexus_user }} mode=0755 + + - name: Install the nexus wrapper configuration + template: src=wrapper.conf.j2 dest={{ nexus_wrapper_conf_dir }}/wrapper.conf owner=root group=root mode='0644' + notify: Restart Nexus + + - name: Install the nexus base config + template: src=nexus.properties.j2 dest={{ nexus_webapp_dir }}/conf/nexus.properties owner=root group=root mode='0644' + notify: Restart Nexus + + - name: Install the nexus access logs configuration + template: src=logback-access.xml.j2 dest={{ nexus_webapp_dir }}/conf/logback-access.xml owner=root group=root mode='0644' + + - meta: + free_form: flush_handlers + + when: nexus_major_version == '2' + tags: [ 'nexus', 'nexus_oss' ] + +- block: + - name: Ensure that the Nexus service is started and enabled + service: name=nexus state=started enabled=yes + tags: [ 'nexus', 'nexus_oss' ] - \ No newline at end of file diff --git a/templates/logback-access.xml.j2 b/templates/logback-access.xml.j2 new file mode 100644 index 0000000..e484a6c --- /dev/null +++ b/templates/logback-access.xml.j2 @@ -0,0 +1,31 @@ + + + + + + {{ nexus_logdir }}/request.log + true + + %clientHost %l %user [%date] "%requestURL" %statusCode %bytesSent %elapsedTime + + + {{ nexus_logdir }}/request-%d{yyyy-MM-dd}.log.gz + {{ nexus_accesslog_maxhistory }} + + + + + diff --git a/templates/nexus.properties.j2 b/templates/nexus.properties.j2 new file mode 100644 index 0000000..d3c7476 --- /dev/null +++ b/templates/nexus.properties.j2 @@ -0,0 +1,36 @@ +# +# Sonatype Nexus (TM) Open Source Version +# Copyright (c) 2008-present Sonatype, Inc. +# All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions. +# +# This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0, +# which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html. +# +# Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks +# of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the +# Eclipse Foundation. All other trademarks are the property of their respective owners. +# + +# Sonatype Nexus +# ============== +# This is the most basic configuration of Nexus. + +# Jetty section +application-port={{ nexus_service_port }} +application-host={{ nexus_service_bind_host }} +nexus-webapp=${bundleBasedir}/nexus +nexus-webapp-context-path=/nexus + +# Nexus section +#nexus-work=${bundleBasedir}/../sonatype-work/nexus +nexus-work={{ nexus_data_dir }} +runtime=${bundleBasedir}/nexus/WEB-INF + +# orientdb buffer size in megabytes +storage.diskCache.bufferSize={{ nexus_wrapper_diskcache_buffersize }} + +# Storage whitelist +# Generated using existing configured values from all repositories if not found on upgrade +# Comma-separated list of allowed override storage locations for repositories +# See https://links.sonatype.com/products/nxrm2/configuring-repositories +nexus.override.local.storage.whitelist= diff --git a/templates/nexus.service.j2 b/templates/nexus.service.j2 new file mode 100644 index 0000000..edb3770 --- /dev/null +++ b/templates/nexus.service.j2 @@ -0,0 +1,15 @@ +[Unit] +Description=nexus service +After=network.target + +[Service] +Type=forking +LimitNOFILE=65536 +ExecStart={{ nexus_webapp_dir }}/bin/nexus start +ExecStop={{ nexus_webapp_dir }}/bin/nexus stop +User={{ nexus_user }} +Restart=on-abort +TimeoutSec=600 + +[Install] +WantedBy=multi-user.target diff --git a/templates/wrapper.conf.j2 b/templates/wrapper.conf.j2 new file mode 100644 index 0000000..1c1ea42 --- /dev/null +++ b/templates/wrapper.conf.j2 @@ -0,0 +1,53 @@ + +wrapper.java.additional.3=-Dcom.sun.jndi.ldap.connect.pool.protocol="plain ssl" +wrapper.java.additional.3.stripquotes=TRUE +#wrapper.java.additional.4=-Xdebug +#wrapper.java.additional.5=-Xnoagent +#wrapper.java.additional.6=-Djava.compiler=NONE +#wrapper.java.additional.7=-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +#wrapper.java.additional.8=-XX:+HeapDumpOnOutOfMemoryError + +wrapper.app.parameter.1=./conf/jetty.xml +wrapper.app.parameter.2=./conf/jetty-requestlog.xml + +# Size Java memory, in MB (-Xms) +wrapper.java.initmemory={{ nexus_wrapper_initmemory }} +# Size Java memory, in MB (-Xmx). This option only supports a setting up to 4000 (4Gb). +# If you need more, comment this option out and use an explicit wrapper.java.additional option with -Xmx +wrapper.java.maxmemory={{ nexus_wrapper_maxmemory }} + +# How much to wait for JVM to respond to "ping" (increase on slower machines and VMs if needed) +wrapper.ping.timeout=0 +# How much to wait for application to start up (increase on slower machines if needed) +wrapper.startup.timeout=0 +# How much to wait for application to shutdown +wrapper.shutdown.timeout=300 + +# Make wrapper reload configuration between app restarts +# and set exit code 12 as "RESTART" command +wrapper.restart.reload_configuration=TRUE +wrapper.on_exit.12=RESTART + +# Set up JSW logging +wrapper.logfile={{ nexus_wrapper_logdir }}/wrapper.log +wrapper.logfile.format=PM +wrapper.logfile.loglevel=INFO +wrapper.logfile.maxsize=10m +wrapper.logfile.maxfiles=10 + +# Set up system logging (if needed, change to INFO or other valid values) +wrapper.syslog.loglevel=NONE + +# Set up JSW Console +wrapper.console.title=Sonatype Nexus +wrapper.console.format=PM +wrapper.console.loglevel=INFO +wrapper.console.flush=true + +# Set up JSW as NT Service (unused on other OSes) +wrapper.ntservice.name=nexus-webapp +wrapper.ntservice.displayname=nexus +wrapper.ntservice.description=Sonatype Nexus +wrapper.ntservice.dependency.1= +wrapper.ntservice.starttype=AUTO_START +wrapper.ntservice.interactive=false