summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alvarez <pedro.alvarez@codethink.co.uk>2016-04-11 11:51:16 +0100
committerPedro Alvarez <pedro.alvarez@codethink.co.uk>2016-04-18 11:24:59 +0000
commitaff6f4e49dc532866b38d2b4a7dd6d3093bbbbd7 (patch)
tree9853096cd7c150a826e875a4f00ce64df85ba97e
parentc184c3c5ab22f60dff24d5bb7c486522551ba86d (diff)
downloadinfrastructure-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.cfg6
-rw-r--r--baserock_hosts1
-rw-r--r--baserock_opengrok/baserock-export.service11
-rw-r--r--baserock_opengrok/baserock-export.timer10
-rw-r--r--baserock_opengrok/clone-and-index.service11
-rw-r--r--baserock_opengrok/clone-and-index.sh15
-rw-r--r--baserock_opengrok/clone-and-index.timer10
-rw-r--r--baserock_opengrok/export.sh38
-rw-r--r--baserock_opengrok/index.jsp3
-rw-r--r--baserock_opengrok/instance-config.yml163
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