From 0261e875679f1bf63c8d689da7fc7e014597885d Mon Sep 17 00:00:00 2001 From: Stonewall Jackson Date: Sat, 4 Feb 2023 01:23:43 -0500 Subject: initial commit --- roles/solr/defaults/main.yml | 5 + roles/solr/handlers/main.yml | 4 + roles/solr/tasks/main.yml | 77 ++++++ roles/solr/templates/etc/solr/log4j2.xml.j2 | 18 ++ roles/solr/templates/etc/solr/solrconfig.xml.j2 | 280 +++++++++++++++++++++ roles/solr/templates/etc/sysconfig/solr.j2 | 6 + .../templates/etc/systemd/system/solr.service.j2 | 63 +++++ roles/solr/vars/main.yml | 3 + 8 files changed, 456 insertions(+) create mode 100644 roles/solr/defaults/main.yml create mode 100644 roles/solr/handlers/main.yml create mode 100644 roles/solr/tasks/main.yml create mode 100644 roles/solr/templates/etc/solr/log4j2.xml.j2 create mode 100644 roles/solr/templates/etc/solr/solrconfig.xml.j2 create mode 100644 roles/solr/templates/etc/sysconfig/solr.j2 create mode 100644 roles/solr/templates/etc/systemd/system/solr.service.j2 create mode 100644 roles/solr/vars/main.yml (limited to 'roles/solr') diff --git a/roles/solr/defaults/main.yml b/roles/solr/defaults/main.yml new file mode 100644 index 0000000..ffcc163 --- /dev/null +++ b/roles/solr/defaults/main.yml @@ -0,0 +1,5 @@ +solr_version: 9.1.1 +solr_lucene_version: 9.3.0 +solr_port: 8983 +solr_heap_size: 2g +solr_softcommit_ms: 60000 diff --git a/roles/solr/handlers/main.yml b/roles/solr/handlers/main.yml new file mode 100644 index 0000000..ca32ef7 --- /dev/null +++ b/roles/solr/handlers/main.yml @@ -0,0 +1,4 @@ +- name: restart solr + systemd: + name: solr + state: restarted diff --git a/roles/solr/tasks/main.yml b/roles/solr/tasks/main.yml new file mode 100644 index 0000000..0538a2a --- /dev/null +++ b/roles/solr/tasks/main.yml @@ -0,0 +1,77 @@ +- name: install java + dnf: + name: java-17-openjdk-headless + state: present + +- name: create installation directory + file: + path: '{{ solr_install_dir }}' + state: directory + +- name: unpack solr tarball + unarchive: + src: '{{ solr_url }}' + remote_src: yes + dest: '{{ solr_install_dir }}' + extra_opts: + - '--strip-components=1' + notify: restart solr + +- name: add local user + user: + name: solr + system: yes + home: '{{ solr_data_dir }}' + shell: /sbin/nologin + create_home: no + +- name: create data directory + file: + path: '{{ solr_data_dir }}' + state: directory + owner: solr + group: solr + mode: 0770 + +- name: create systemd unit + template: + src: etc/systemd/system/solr.service.j2 + dest: /etc/systemd/system/solr.service + register: solr_unit + +- name: reload systemd units + systemd: + daemon_reload: yes + when: solr_unit.changed + +- name: create config directory + file: + path: /etc/solr + state: directory + +- name: create EnvironmentFile + template: + src: etc/sysconfig/solr.j2 + dest: /etc/sysconfig/solr + notify: restart solr + +- name: create config files + template: + src: etc/solr/{{ item }}.j2 + dest: /etc/solr/{{ item }} + loop: + - log4j2.xml + - solrconfig.xml + notify: restart solr + +- name: copy default solr configuration + copy: + src: '{{ solr_install_dir }}/server/solr/solr.xml' + dest: '{{ solr_data_dir }}/solr.xml' + remote_src: yes + +- name: start solr + systemd: + name: solr + enabled: yes + state: started diff --git a/roles/solr/templates/etc/solr/log4j2.xml.j2 b/roles/solr/templates/etc/solr/log4j2.xml.j2 new file mode 100644 index 0000000..a5d0442 --- /dev/null +++ b/roles/solr/templates/etc/solr/log4j2.xml.j2 @@ -0,0 +1,18 @@ + + + + + + + {% raw %}%maxLen{%-5p %c %m%notEmpty{ =>%ex{short}}}{10240}%n{% endraw %} + + + + + + + + + + + diff --git a/roles/solr/templates/etc/solr/solrconfig.xml.j2 b/roles/solr/templates/etc/solr/solrconfig.xml.j2 new file mode 100644 index 0000000..0b5a602 --- /dev/null +++ b/roles/solr/templates/etc/solr/solrconfig.xml.j2 @@ -0,0 +1,280 @@ + + + {{ solr_lucene_version }} + + ${solr.data.dir:} + + + + ${solr.lock.type:native} + + + + + ${solr.ulog.dir:} + ${solr.ulog.numVersionBuckets:65536} + + + ${solr.autoCommit.maxTime:15000} + false + + + ${solr.autoSoftCommit.maxTime:-1} + + + + + ${solr.max.booleanClauses:1024} + + + + + + + + true + + 20 + + 200 + + + + + + + + + + + false + + + + + + + + + + + + + explicit + 10 + hdr + + + + + + explicit + json + true + + + + + + _text_ + + + + + + text_general + + + default + _text_ + solr.DirectSolrSpellChecker + internal + 0.5 + 2 + 1 + 5 + 4 + 0.01 + + + + + + default + on + true + 10 + 5 + 5 + true + true + 10 + 5 + + + spellcheck + + + + + + + + true + false + + + terms + + + + + + + + 100 + + + + + + 70 + 0.5 + [-\w ,/\n\"']{20,200} + + + + + + ]]> + ]]> + + + + + + + + + + + + + + + + + ,, + ,, + ,, + ,, + ,]]> + ]]> + + + + + + 10 + .,!? + + + + + + WORD + en + US + + + + + + + + + [^\w-\.] + _ + + + + + + + yyyy-MM-dd['T'[HH:mm[:ss[.SSS]][z + yyyy-MM-dd['T'[HH:mm[:ss[,SSS]][z + yyyy-MM-dd HH:mm[:ss[.SSS]][z + yyyy-MM-dd HH:mm[:ss[,SSS]][z + [EEE, ]dd MMM yyyy HH:mm[:ss] z + EEEE, dd-MMM-yy HH:mm:ss z + EEE MMM ppd HH:mm:ss [z ]yyyy + + + + + java.lang.String + text_general + + *_str + 256 + + true + + + java.lang.Boolean + booleans + + + java.util.Date + pdates + + + java.lang.Long + java.lang.Integer + plongs + + + java.lang.Number + pdoubles + + + + + + + + + + + text/plain; charset=UTF-8 + + diff --git a/roles/solr/templates/etc/sysconfig/solr.j2 b/roles/solr/templates/etc/sysconfig/solr.j2 new file mode 100644 index 0000000..04e9ade --- /dev/null +++ b/roles/solr/templates/etc/sysconfig/solr.j2 @@ -0,0 +1,6 @@ +JVM_HEAP_SIZE="{{ solr_heap_size }}" + +SOLR_CONF_DIR=/etc/solr +SOLR_OPTS="-Dsolr.autoSoftCommit.maxTime={{ solr_softcommit_ms }}" + +LOG4J_PROPS=/etc/solr/log4j2.xml diff --git a/roles/solr/templates/etc/systemd/system/solr.service.j2 b/roles/solr/templates/etc/systemd/system/solr.service.j2 new file mode 100644 index 0000000..52ee55f --- /dev/null +++ b/roles/solr/templates/etc/systemd/system/solr.service.j2 @@ -0,0 +1,63 @@ +[Unit] +Description=Apache Solr +Before=dovecot.service + +[Service] +Type=simple +User=solr +LimitNOFILE=65000 +LimitNPROC=65000 +Restart=on-failure + +ProtectSystem=strict +ReadWritePaths={{ solr_data_dir }} /var/log/solr + +# Harden this java nightmare +NoNewPrivileges=yes +PrivateTmp=yes +PrivateDevices=yes +DevicePolicy=closed +ProtectSystem=strict +ProtectHome=yes +ProtectControlGroups=yes +ProtectKernelModules=yes +ProtectKernelTunables=yes +RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 +RestrictNamespaces=yes +RestrictRealtime=yes +RestrictSUIDSGID=yes +LockPersonality=yes + +WorkingDirectory={{ solr_install_dir }}/server +LogsDirectory=solr + +Environment=SOLR_HOME={{ solr_data_dir }} +Environment=SOLR_CONF_DIR=${SOLR_HOME}/server/solr/configsets/_default/conf +Environment=JVM_ARGS= +Environment=JVM_GC_ARGS="-XX:+UseG1GC -XX:+PerfDisableSharedMem -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=250 -XX:+UseLargePages -XX:+AlwaysPreTouch -XX:+ExplicitGCInvokesConcurrent" +Environment=JVM_HEAP_SIZE=512m +Environment=JETTY_HOST=localhost +Environment=JETTY_PORT=8983 +Environment=LOG4J_PROPS={{ solr_install_dir }}/server/resources/log4j2.xml +EnvironmentFile=/etc/sysconfig/solr + +ExecStart=java -server \ + $JVM_ARGS \ + -Xmx${JVM_HEAP_SIZE} \ + $SOLR_OPTS \ + $JVM_GC_ARGS \ + -XX:+CrashOnOutOfMemoryError \ + -Dlog4j.configurationFile=${LOG4J_PROPS} \ + -Dsolr.log.dir=/var/log/solr \ + -Djetty.host=${JETTY_HOST} \ + -Djetty.port=${JETTY_PORT} \ + -Djetty.home={{ solr_install_dir }}/server \ + -Dsolr.solr.home=${SOLR_HOME} \ + -Dsolr.data.home= \ + -Dsolr.install.dir={{ solr_install_dir }} \ + -Dsolr.default.confdir=${SOLR_CONF_DIR} \ + -Dlog4j2.formatMsgNoLookups=true \ + -jar start.jar --module=http --module=gzip + +[Install] +WantedBy=multi-user.target diff --git a/roles/solr/vars/main.yml b/roles/solr/vars/main.yml new file mode 100644 index 0000000..fa5f1f8 --- /dev/null +++ b/roles/solr/vars/main.yml @@ -0,0 +1,3 @@ +solr_url: https://dlcdn.apache.org/solr/solr/{{ solr_version }}/solr-{{ solr_version }}.tgz +solr_install_dir: /usr/local/share/solr +solr_data_dir: /var/lib/solr -- cgit