diff options
author | Pedro Alvarez <pedro.alvarez@codethink.co.uk> | 2016-04-11 11:51:16 +0100 |
---|---|---|
committer | Pedro Alvarez <pedro.alvarez@codethink.co.uk> | 2016-04-18 11:24:59 +0000 |
commit | aff6f4e49dc532866b38d2b4a7dd6d3093bbbbd7 (patch) | |
tree | 9853096cd7c150a826e875a4f00ce64df85ba97e | |
parent | c184c3c5ab22f60dff24d5bb7c486522551ba86d (diff) | |
download | infrastructure-aff6f4e49dc532866b38d2b4a7dd6d3093bbbbd7.tar.gz |
Install opengrok.baserock.org
Using baserock-export scripts, OpenGrok sytem will
export all the sources needed for a Baserock minimal system
and will use them.
Change-Id: Ia1e5196b15d6bb8af005f0ea8cf317182db51134
-rw-r--r-- | baserock_frontend/haproxy.cfg | 6 | ||||
-rw-r--r-- | baserock_hosts | 1 | ||||
-rw-r--r-- | baserock_opengrok/baserock-export.service | 11 | ||||
-rw-r--r-- | baserock_opengrok/baserock-export.timer | 10 | ||||
-rw-r--r-- | baserock_opengrok/clone-and-index.service | 11 | ||||
-rw-r--r-- | baserock_opengrok/clone-and-index.sh | 15 | ||||
-rw-r--r-- | baserock_opengrok/clone-and-index.timer | 10 | ||||
-rw-r--r-- | baserock_opengrok/export.sh | 38 | ||||
-rw-r--r-- | baserock_opengrok/index.jsp | 3 | ||||
-rw-r--r-- | baserock_opengrok/instance-config.yml | 163 |
10 files changed, 268 insertions, 0 deletions
diff --git a/baserock_frontend/haproxy.cfg b/baserock_frontend/haproxy.cfg index 1d26c577..bb0120cc 100644 --- a/baserock_frontend/haproxy.cfg +++ b/baserock_frontend/haproxy.cfg @@ -70,6 +70,9 @@ frontend https-in acl host_docs hdr(host) -m beg -i docs use_backend baserock_webserver_http if host_docs + acl host_opengrok hdr(host) -m beg -i opengrok + use_backend baserock_opengrok_http if host_opengrok + use_backend baserock_openid_provider_http if { hdr(host) -m beg -i openid } frontend ssh-in: @@ -114,3 +117,6 @@ backend baserock_openid_provider_http backend baserock_webserver_http server baserock_webserver 192.168.222.127:80 + +backend baserock_opengrok_http + server baserock_opengrok 192.168.222.149:8080 diff --git a/baserock_hosts b/baserock_hosts index 5d03d255..8a376921 100644 --- a/baserock_hosts +++ b/baserock_hosts @@ -22,6 +22,7 @@ database-mariadb ansible_ssh_host=192.168.222.146 mail ansible_ssh_host=192.168.222.145 openid ansible_ssh_host=192.168.222.144 webserver ansible_ssh_host=192.168.222.127 +opengrok ansible_ssh_host=192.168.222.149 [ubuntu] paste ansible_ssh_host=192.168.222.6 diff --git a/baserock_opengrok/baserock-export.service b/baserock_opengrok/baserock-export.service new file mode 100644 index 00000000..5b48152a --- /dev/null +++ b/baserock_opengrok/baserock-export.service @@ -0,0 +1,11 @@ +[Unit] +Description=Baserock Export daemon +After=local-fs.target network-online.target + +[Service] +User=opengrok +ExecStart={{ EXPORT_WORKDIR }}/export.sh + + +[Install] +WantedBy=multi-user.target diff --git a/baserock_opengrok/baserock-export.timer b/baserock_opengrok/baserock-export.timer new file mode 100644 index 00000000..89e9647b --- /dev/null +++ b/baserock_opengrok/baserock-export.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Runs baserock-export with 5 min between calls + +[Timer] +#Time between baserock-export finishing and calling it again +OnUnitActiveSec=5min +Unit=baserock-export.service + +[Install] +WantedBy=multi-user.target diff --git a/baserock_opengrok/clone-and-index.service b/baserock_opengrok/clone-and-index.service new file mode 100644 index 00000000..ff9db508 --- /dev/null +++ b/baserock_opengrok/clone-and-index.service @@ -0,0 +1,11 @@ +[Unit] +Description=OpenGrok index daemon +After=local-fs.target network-online.target + +[Service] +User=opengrok +ExecStart={{ OPENGROK_BASE }}/clone-and-index.sh + + +[Install] +WantedBy=multi-user.target diff --git a/baserock_opengrok/clone-and-index.sh b/baserock_opengrok/clone-and-index.sh new file mode 100644 index 00000000..10a8faac --- /dev/null +++ b/baserock_opengrok/clone-and-index.sh @@ -0,0 +1,15 @@ +#!/bin/sh + + +dir={{ OPENGROK_BASE }}/source +if [ ! -d $dir/.git ]; then + git clone /opt/export-workdir/exported-definitions/ $dir +fi + +git --git-dir="$dir/.git" --work-tree="$dir" pull +(cd $dir && git submodule init) +(cd $dir && git submodule sync) +(cd $dir && git submodule update) +git --git-dir="$dir/.git" --work-tree="$dir" clean -xdff + +OPENGROK_INSTANCE_BASE={{ OPENGROK_BASE }} {{ OPENGROK_BASE }}/bin/OpenGrok index {{ OPENGROK_BASE }}/source/ diff --git a/baserock_opengrok/clone-and-index.timer b/baserock_opengrok/clone-and-index.timer new file mode 100644 index 00000000..e7cc4259 --- /dev/null +++ b/baserock_opengrok/clone-and-index.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Runs OpenGrok index with 5 min between calls + +[Timer] +#Time between clone-and-index finishing and calling it again +OnUnitActiveSec=5min +Unit=clone-and-index.service + +[Install] +WantedBy=multi-user.target diff --git a/baserock_opengrok/export.sh b/baserock_opengrok/export.sh new file mode 100644 index 00000000..d6a18d46 --- /dev/null +++ b/baserock_opengrok/export.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +DEFINITIONS_DIR="{{ EXPORT_WORKDIR }}/definitions" +DEFINITIONS_URL="git://git.baserock.org/baserock/baserock/definitions" + +MORPH_DIR="{{ EXPORT_WORKDIR }}/morph" +MORPH_URL="git://git.baserock.org/baserock/baserock/morph" + +EXPORT_DIR="{{ EXPORT_WORKDIR }}/exported-definitions" + +clone_or_pull() { + repo=$1 + dir=$2 + if [ -d "$dir" ]; then + git --git-dir="$dir/.git" --work-tree="$dir" pull + else + git clone $repo $dir + fi +} + + +clone_or_pull $DEFINITIONS_URL $DEFINITIONS_DIR +clone_or_pull $MORPH_URL $MORPH_DIR + +if [ ! -d "$EXPORT_DIR" ]; then + git init "$EXPORT_DIR" +fi + + +git config --global user.email "export@baserock.com" +git config --global user.name "Baserock Export Daemon" + +PYTHONPATH={{ EXPORT_WORKDIR }}/morph python \ + {{ BASEROCK_EXPORT }}/baserock-export-git-submodules.py \ + --git-cache-dir {{ EXPORT_WORKDIR }}/cache \ + --mode submodule \ + $DEFINITIONS_DIR/systems/minimal-system-x86_64-generic.morph \ + "$EXPORT_DIR" diff --git a/baserock_opengrok/index.jsp b/baserock_opengrok/index.jsp new file mode 100644 index 00000000..418c98f2 --- /dev/null +++ b/baserock_opengrok/index.jsp @@ -0,0 +1,3 @@ +<% + response.sendRedirect("/source"); +%> diff --git a/baserock_opengrok/instance-config.yml b/baserock_opengrok/instance-config.yml new file mode 100644 index 00000000..836e805b --- /dev/null +++ b/baserock_opengrok/instance-config.yml @@ -0,0 +1,163 @@ +# Configuration for Baserock OpenGrok system image. +# +# This expects to be run on a Fedora 23 cloud image. +--- +- hosts: opengrok + gather_facts: false + sudo: yes + vars: + OG_VERSION: 0.12.1.5 + EXPORT_WORKDIR: /opt/export-workdir + BASEROCK_EXPORT: /opt/baserock-export + OPENGROK_BASE: /opt/opengrok + tasks: + # See: https://fedoramagazine.org/getting-ansible-working-fedora-23/ + - name: install Python2 and required deps for Ansible modules + raw: dnf install -y python2 python2-dnf libselinux-python + + - name: enable persistant journal + shell: mkdir /var/log/journal + args: + creates: /var/log/journal + + - name: ensure system up to date + dnf: name=* state=latest + + - name: Install Tomcat, wget, git, and ctags packages + dnf: + name: "{{ item }}" + state: latest + with_items: + - tomcat + - wget + - git + - ctags + + - name: Enable and start Tomcat + service: + name: tomcat + enabled: yes + + - name: add opengrok user + user: + name: opengrok + shell: /bin/false + + - name: create /opt/.. directories + file: + path: "{{ item }}" + state: directory + owner: opengrok + group: opengrok + with_items: + - "{{ OPENGROK_BASE }}" + - /opt/downloads + - "{{ BASEROCK_EXPORT }}" + - "{{ EXPORT_WORKDIR }}" + + - name: Download opengrok + shell: wget https://java.net/projects/opengrok/downloads/download/opengrok-{{ OG_VERSION }}.tar.gz -O /opt/downloads/opengrok-{{ OG_VERSION }}.tar.gz + args: + creates: /opt/downloads/opengrok-{{ OG_VERSION }}.tar.gz + sudo_user: opengrok + + - name: Unpack opengrok + unarchive: + src: /opt/downloads/opengrok-{{ OG_VERSION }}.tar.gz + copy: no + dest: /opt/downloads + owner: opengrok + group: opengrok + creates: /opt/downloads/opengrok-{{ OG_VERSION }} + register: opengrok_unpacked + + - name: Copy OpenGrok to the right location + shell: cp -r /opt/downloads/opengrok-{{ OG_VERSION }}/* "{{ OPENGROK_BASE }}" + when: opengrok_unpacked|changed + + - name: Install morph dependencies + pip: + name: "{{ item }}" + with_items: + - fs + - pylru + - pyyaml + - jsonschema + + - name: Downloading baserock-export scripts + git: + repo: git://github.com/ssssam/baserock-export + dest: "{{ BASEROCK_EXPORT }}" + accept_hostkey: yes + sudo_user: opengrok + + - name: Install baserock-export wrapper script + template: + src: export.sh + dest: "{{ EXPORT_WORKDIR }}/export.sh" + mode: 0755 + owner: opengrok + group: opengrok + + - name: Install baserock-export service + template: + src: baserock-export.service + dest: /etc/systemd/system/baserock-export.service + + - name: Install baserock-export timer + copy: + src: baserock-export.timer + dest: /etc/systemd/system/baserock-export.timer + + - name: Enable and start baserock-export services + service: + name: "{{ item }}" + enabled: yes + state: started + with_items: + - baserock-export.timer + - baserock-export.service + + - name: Deploy OpenGrok app in Tomcat + shell: OPENGROK_TOMCAT_BASE=/var/lib/tomcat "{{ OPENGROK_BASE }}/bin/OpenGrok" deploy + + - name: Create ROOT folder for Tomcat + file: + path: /var/lib/tomcat/webapps/ROOT + state: directory + owner: tomcat + group: tomcat + + - name: Redirect / to /source (OpenGrok) in Tomcat + copy: + src: index.jsp + dest: /var/lib/tomcat/webapps/ROOT/index.jsp + owner: tomcat + group: tomcat + + - name: Install clone-and-index wrapper script + template: + src: clone-and-index.sh + dest: "{{ OPENGROK_BASE }}/clone-and-index.sh" + mode: 0755 + owner: opengrok + group: opengrok + + - name: Install clone-and-index service + template: + src: clone-and-index.service + dest: /etc/systemd/system/clone-and-index.service + + - name: Install clone-and-index timer + copy: + src: clone-and-index.timer + dest: /etc/systemd/system/clone-and-index.timer + + - name: Enable and start clone-and-index services + service: + name: "{{ item }}" + enabled: yes + state: started + with_items: + - clone-and-index.timer + - clone-and-index.service |