diff options
| author | Carlos Konstanski <ckonstanski@pippiandcarlos.com> | 2017-09-21 20:54:25 -0600 |
|---|---|---|
| committer | Carlos Konstanski <ckonstanski@pippiandcarlos.com> | 2017-09-21 20:54:25 -0600 |
| commit | 412c4c232cafde4cf59bb6e5225454bcca92a29d (patch) | |
| tree | 9e838d99a53bcad90f712d531c4d904ee3d96782 | |
| parent | 823dd08650327cd935b27fbe05b8dd646183dc20 (diff) | |
adding new microservices
38 files changed, 707 insertions, 90 deletions
diff --git a/pillar/openbook/admin_api_server.sls b/pillar/openbook/admin_api_server.sls new file mode 100644 index 0000000..069077e --- /dev/null +++ b/pillar/openbook/admin_api_server.sls @@ -0,0 +1,72 @@ +admin_api_server: + dirs: + data: + name: data + mode: "0755" + relative_to_buildroot: True + etc_openbook_admin_api_server: + name: /etc/openbook/admin-api-server + mode: "0777" + relative_to_buildroot: False + data_etc_openbook_admin_api_server: + name: data/etc/openbook/admin-api-server + mode: "0777" + relative_to_buildroot: True + var_log_openbook_admin_api_server: + name: /var/log/openbook/admin_api-server + mode: "0777" + relative_to_buildroot: False + data_var_log_openbook_admin_api_server: + name: data/var/log/openbook/admin_api-server + mode: "0777" + relative_to_buildroot: True + files: + build_sh: + name: build.sh + path: . + source: build.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: False + run_sh: + name: run.sh + path: . + source: run.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: True + dockerfile: + name: Dockerfile + path: . + source: Dockerfile + mode: "0644" + is_template: True + relative_to_buildroot: True + ansible: False + installdeps: + name: installdeps.sh + path: data + source: installdeps.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: False + start_app: + name: start_app.sh + path: data + source: start_app.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: False + admin_api_server_json: + name: admin-api-server.json + path: /etc/openbook/admin-api-server + source: admin_api_server.json + mode: "0644" + is_template: True + relative_to_buildroot: False + ansible: True + log: /var/log/openbook/admin-api-server/admin-api-server.log diff --git a/pillar/openbook/customer_api_server.sls b/pillar/openbook/customer_api_server.sls new file mode 100644 index 0000000..8ac12a9 --- /dev/null +++ b/pillar/openbook/customer_api_server.sls @@ -0,0 +1,72 @@ +customer_api_server: + dirs: + data: + name: data + mode: "0755" + relative_to_buildroot: True + etc_openbook_customer_api_server: + name: /etc/openbook/customer-api-server + mode: "0777" + relative_to_buildroot: False + data_etc_openbook_customer_api_server: + name: data/etc/openbook/customer-api-server + mode: "0777" + relative_to_buildroot: True + var_log_openbook_customer_api_server: + name: /var/log/openbook/customer-api-server + mode: "0777" + relative_to_buildroot: False + data_var_log_openbook_customer_api_server: + name: data/var/log/openbook/customer-api-server + mode: "0777" + relative_to_buildroot: True + files: + build_sh: + name: build.sh + path: . + source: build.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: False + run_sh: + name: run.sh + path: . + source: run.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: True + dockerfile: + name: Dockerfile + path: . + source: Dockerfile + mode: "0644" + is_template: True + relative_to_buildroot: True + ansible: False + installdeps: + name: installdeps.sh + path: data + source: installdeps.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: False + start_app: + name: start_app.sh + path: data + source: start_app.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: False + customer_api_server_json: + name: customer-api-server.json + path: /etc/openbook/customer-api-server + source: customer_api_server.json + mode: "0644" + is_template: True + relative_to_buildroot: False + ansible: True + log: /var/log/openbook/customer-api-server/customer-api-server.log diff --git a/pillar/openbook/job_scheduler_server.sls b/pillar/openbook/job_scheduler_server.sls new file mode 100644 index 0000000..fe1bd11 --- /dev/null +++ b/pillar/openbook/job_scheduler_server.sls @@ -0,0 +1,72 @@ +job_scheduler_server: + dirs: + data: + name: data + mode: "0755" + relative_to_buildroot: True + etc_openbook_job_scheduler_server: + name: /etc/openbook/job-scheduler-server + mode: "0777" + relative_to_buildroot: False + data_etc_openbook_job_scheduler_server: + name: data/etc/openbook/job-scheduler-server + mode: "0777" + relative_to_buildroot: True + var_log_openbook_job_scheduler_server: + name: /var/log/openbook/job-scheduler-server + mode: "0777" + relative_to_buildroot: False + data_var_log_openbook_job_scheduler_server: + name: data/var/log/openbook/job-scheduler-server + mode: "0777" + relative_to_buildroot: True + files: + build_sh: + name: build.sh + path: . + source: build.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: False + run_sh: + name: run.sh + path: . + source: run.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: True + dockerfile: + name: Dockerfile + path: . + source: Dockerfile + mode: "0644" + is_template: True + relative_to_buildroot: True + ansible: False + installdeps: + name: installdeps.sh + path: data + source: installdeps.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: False + start_app: + name: start_app.sh + path: data + source: start_app.sh + mode: "0755" + is_template: True + relative_to_buildroot: True + ansible: False + job_scheduler_server_json: + name: job-scheduler-server.json + path: /etc/openbook/job-scheduler-server + source: job_scheduler_server.json + mode: "0644" + is_template: True + relative_to_buildroot: False + ansible: True + log: /var/log/openbook/job-scheduler-server/job-scheduler-server.log diff --git a/pillar/openbook/api_server.sls b/pillar/openbook/workflow_server.sls index 6ee24c7..32f3052 100644 --- a/pillar/openbook/api_server.sls +++ b/pillar/openbook/workflow_server.sls @@ -1,23 +1,23 @@ -api_server: +workflow_server: dirs: data: name: data mode: "0755" relative_to_buildroot: True - etc_openbook_api_server: - name: /etc/openbook/api-server + etc_openbook_workflow_server: + name: /etc/openbook/workflow-server mode: "0777" relative_to_buildroot: False - data_etc_openbook_api_server: - name: data/etc/openbook/api-server + data_etc_openbook_workflow_server: + name: data/etc/openbook/workflow-server mode: "0777" relative_to_buildroot: True - var_log_openbook_api_server: - name: /var/log/openbook/api-server + var_log_openbook_workflow_server: + name: /var/log/openbook/workflow-server mode: "0777" relative_to_buildroot: False - data_var_log_openbook_api_server: - name: data/var/log/openbook/api-server + data_var_log_openbook_workflow_server: + name: data/var/log/openbook/workflow-server mode: "0777" relative_to_buildroot: True files: @@ -61,12 +61,12 @@ api_server: is_template: True relative_to_buildroot: True ansible: False - api_server_json: - name: api-server.json - path: /etc/openbook/api-server - source: api_server.json + workflow_server_json: + name: workflow-server.json + path: /etc/openbook/workflow-server + source: workflow_server.json mode: "0644" is_template: True relative_to_buildroot: False ansible: True - log: /var/log/openbook/api-server/api-server.log + log: /var/log/openbook/workflow-server/workflow-server.log diff --git a/pillar/top.sls b/pillar/top.sls index f471540..22ffb32 100644 --- a/pillar/top.sls +++ b/pillar/top.sls @@ -4,6 +4,9 @@ base: - openbook.ansible - openbook.baseimage - openbook.database - - openbook.api_server + - openbook.admin_api_server - openbook.admin_web_ui + - openbook.customer_api_server - openbook.customer_web_ui + - openbook.job_scheduler_server + - openbook.workflow_server diff --git a/salt/openbook/admin_api_server/files/Dockerfile b/salt/openbook/admin_api_server/files/Dockerfile new file mode 100644 index 0000000..35c5079 --- /dev/null +++ b/salt/openbook/admin_api_server/files/Dockerfile @@ -0,0 +1,8 @@ +FROM {{ pillar["baseimage"]["image_name"] }} +MAINTAINER Carlos Konstanski <carlos@talligent.com> +ADD docker-start.tar.xz / +EXPOSE 8081 5701 5702 +VOLUME {{ pillar["admin_api_server"]["dirs"]["etc_openbook_admin_api_server"]["name"] }} +VOLUME {{ pillar["admin_api_server"]["dirs"]["var_log_openbook_admin_api_server"]["name"] }} +RUN /installdeps.sh +ENTRYPOINT [ "/start_app.sh" ] diff --git a/salt/openbook/admin_api_server/files/admin_api_server.json b/salt/openbook/admin_api_server/files/admin_api_server.json new file mode 100644 index 0000000..40eb9a7 --- /dev/null +++ b/salt/openbook/admin_api_server/files/admin_api_server.json @@ -0,0 +1,15 @@ +{% raw %} +{% set ips = openbook_gcomm_addresses.split(",") %} +{% if ips|length > 1 %} +{% set failover = "failover:" %} +{% else %} +{% set failover = "" %} +{% endif %} +{% endraw %} + +{ + "log.path": "{{ pillar["admin_api_server"]["log"] }}", + "entityDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook", + "workflowDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook_workflow", + "jobsDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook_jobs" +} diff --git a/salt/openbook/admin_api_server/files/build.sh b/salt/openbook/admin_api_server/files/build.sh new file mode 100644 index 0000000..feaaaa1 --- /dev/null +++ b/salt/openbook/admin_api_server/files/build.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Do not call directly. Meant to be called from CI build script. + +pushd {{ pillar["admin_api_server"]["build_dir"] }} 2>/dev/null + +echo "Creating tmp directory" +rm -rf tmp +mkdir tmp +rm -f docker-start.tar.xz + +echo "Populating with custom files" +rsync -aq data/ tmp/ + +echo "Repackaging into .xz file" +tar Jcvf docker-start.tar.xz -C tmp/ . + +echo "Deleting existing docker container" +docker stop {{ pillar["admin_api_server"]["container_name"] }} +docker container prune -f +docker rmi -f {{ pillar["admin_api_server"]["image_name"] }} + +echo "Building docker Ubuntu image" +docker build -t {{ pillar["admin_api_server"]["image_name"] }} . + +echo "Push docker image to the registry" +docker tag {{ pillar["admin_api_server"]["image_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["admin_api_server"]["image_name"] }} +docker push {{ pillar["registry"]["url"] }}/{{ pillar["admin_api_server"]["image_name"] }} + +echo "Cleaning up" +rm -rf tmp +rm -f docker-start.tar.xz + +popd 2>/dev/null +exit 0 diff --git a/salt/openbook/admin_api_server/files/installdeps.sh b/salt/openbook/admin_api_server/files/installdeps.sh new file mode 100644 index 0000000..2d97c9f --- /dev/null +++ b/salt/openbook/admin_api_server/files/installdeps.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +export DEBIAN_FRONTEND=noninteractive +apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" openjdk-8-jre-headless + +curl -k \ + -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ + -o "{{ pillar["admin_api_server"]["jar_name"] }}" \ + "{{ pillar["jars"]["url"] }}{{ pillar["admin_api_server"]["jar_name"] }}" + +exit 0 diff --git a/salt/openbook/admin_api_server/files/run.sh b/salt/openbook/admin_api_server/files/run.sh new file mode 100644 index 0000000..1f5df60 --- /dev/null +++ b/salt/openbook/admin_api_server/files/run.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker run -d --net=host -v {{ pillar["admin_api_server"]["dirs"]["etc_openbook_admin_api_server"]["name"] }}:{{ pillar["admin_api_server"]["dirs"]["etc_openbook_admin_api_server"]["name"] }} -v {{ pillar["admin_api_server"]["dirs"]["var_log_openbook_admin_api_server"]["name"] }}:{{ pillar["admin_api_server"]["dirs"]["var_log_openbook_admin_api_server"]["name"] }} --name {{ pillar["admin_api_server"]["container_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["admin_api_server"]["image_name"] }} +exit 0 diff --git a/salt/openbook/admin_api_server/files/start_app.sh b/salt/openbook/admin_api_server/files/start_app.sh new file mode 100644 index 0000000..d610377 --- /dev/null +++ b/salt/openbook/admin_api_server/files/start_app.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +exec java -jar {{ pillar["admin_api_server"]["jar_name"] }} run com.talligent.openbook.verticle.Startup --cluster diff --git a/salt/openbook/admin_api_server/init.sls b/salt/openbook/admin_api_server/init.sls new file mode 100644 index 0000000..681d5d8 --- /dev/null +++ b/salt/openbook/admin_api_server/init.sls @@ -0,0 +1,55 @@ +{% for dir in pillar["admin_api_server"]["dirs"].items() %} +admin_api_server_dirs_{{ dir[0] }}: + file.directory: +{% if dir[1]["relative_to_buildroot"] %} + - name: {{ pillar["admin_api_server"]["build_dir"] }}/{{ dir[1]["name"] }} +{% else %} + - name: {{ dir[1]["name"] }} +{% endif %} + - user: root + - group: root + - mode: {{ dir[1]["mode"] }} + - makedirs: True +{% endfor %} + +{% for file in pillar["admin_api_server"]["files"].items() %} +admin_api_server_files_{{ file[0] }}: + file.managed: +{% if file[1]["relative_to_buildroot"] %} + - name: {{ pillar["admin_api_server"]["build_dir"] }}/{{ file[1]["path"] }}/{{ file[1]["name"] }} +{% else %} + - name: {{ file[1]["path"] }}/{{ file[1]["name"] }} +{% endif %} + - source: salt://openbook/admin_api_server/files/{{ file[1]["source"] }} +{% if file[1]["is_template"] %} + - template: jinja +{% endif %} + - user: root + - group: root + - mode: {{ file[1]["mode"] }} +{% if file[1]["ansible"] %} +ansible_admin_api_server_dirs_{{ file[0] }}: + file.directory: +{% if file[1]["is_template"] %} + - name: {{ pillar["ansible"]["build_dir"] }}/templates/admin_api_server/{{ file[1]["path"] }} +{% else %} + - name: {{ pillar["ansible"]["build_dir"] }}/files/admin_api_server/{{ file[1]["path"] }} +{% endif %} + - user: root + - group: root + - mode: "0755" + - makedirs: True +ansible_admin_api_server_files_{{ file[0] }}: + file.managed: +{% if file[1]["is_template"] %} + - name: {{ pillar["ansible"]["build_dir"] }}/templates/admin_api_server/{{ file[1]["path"] }}/{{ file[1]["name"] }} + - template: jinja +{% else %} + - name: {{ pillar["ansible"]["build_dir"] }}/files/admin_api_server/{{ file[1]["path"] }}/{{ file[1]["name"] }} +{% endif %} + - source: salt://openbook/admin_api_server/files/{{ file[1]["source"] }} + - user: root + - group: root + - mode: {{ file[1]["mode"] }} +{% endif %} +{% endfor %} diff --git a/salt/openbook/ansible/files/openbook.yaml b/salt/openbook/ansible/files/openbook.yaml index b6992ba..c4b8d64 100644 --- a/salt/openbook/ansible/files/openbook.yaml +++ b/salt/openbook/ansible/files/openbook.yaml @@ -115,7 +115,9 @@ - name: "Pull docker images" shell: | docker login --username {{ pillar["registry"]["username"] }} --password {{ pillar["registry"]["password"] }} {{ pillar["registry"]["url"] }} - docker pull {{ pillar["registry"]["url"] }}/{{ pillar["database"]["image_name"] }} + if [ "{{ openbook_install_database }}" == "True" ]; then + docker pull {{ pillar["registry"]["url"] }}/{{ pillar["database"]["image_name"] }} + fi docker pull {{ pillar["registry"]["url"] }}/{{ pillar["api_server"]["image_name"] }} docker pull {{ pillar["registry"]["url"] }}/{{ pillar["admin_web_ui"]["image_name"] }} docker pull {{ pillar["registry"]["url"] }}/{{ pillar["customer_web_ui"]["image_name"] }} diff --git a/salt/openbook/api_server/files/run.sh b/salt/openbook/api_server/files/run.sh deleted file mode 100644 index 86f5ede..0000000 --- a/salt/openbook/api_server/files/run.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -docker run -d --net=host -v {{ pillar["api_server"]["dirs"]["etc_openbook_api_server"]["name"] }}:{{ pillar["api_server"]["dirs"]["etc_openbook_api_server"]["name"] }} -v {{ pillar["api_server"]["dirs"]["var_log_openbook_api_server"]["name"] }}:{{ pillar["api_server"]["dirs"]["var_log_openbook_api_server"]["name"] }} --name {{ pillar["api_server"]["container_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["api_server"]["image_name"] }} -exit 0 diff --git a/salt/openbook/api_server/files/start_app.sh b/salt/openbook/api_server/files/start_app.sh deleted file mode 100644 index 87cea8b..0000000 --- a/salt/openbook/api_server/files/start_app.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -exec java -jar {{ pillar["api_server"]["jar_name"] }} run com.talligent.openbook.verticle.Startup --cluster diff --git a/salt/openbook/api_server/init.sls b/salt/openbook/api_server/init.sls deleted file mode 100644 index f0fdb7c..0000000 --- a/salt/openbook/api_server/init.sls +++ /dev/null @@ -1,55 +0,0 @@ -{% for dir in pillar["api_server"]["dirs"].items() %} -apiserver_dirs_{{ dir[0] }}: - file.directory: -{% if dir[1]["relative_to_buildroot"] %} - - name: {{ pillar["api_server"]["build_dir"] }}/{{ dir[1]["name"] }} -{% else %} - - name: {{ dir[1]["name"] }} -{% endif %} - - user: root - - group: root - - mode: {{ dir[1]["mode"] }} - - makedirs: True -{% endfor %} - -{% for file in pillar["api_server"]["files"].items() %} -apiserver_files_{{ file[0] }}: - file.managed: -{% if file[1]["relative_to_buildroot"] %} - - name: {{ pillar["api_server"]["build_dir"] }}/{{ file[1]["path"] }}/{{ file[1]["name"] }} -{% else %} - - name: {{ file[1]["path"] }}/{{ file[1]["name"] }} -{% endif %} - - source: salt://openbook/api_server/files/{{ file[1]["source"] }} -{% if file[1]["is_template"] %} - - template: jinja -{% endif %} - - user: root - - group: root - - mode: {{ file[1]["mode"] }} -{% if file[1]["ansible"] %} -ansible_apiserver_dirs_{{ file[0] }}: - file.directory: -{% if file[1]["is_template"] %} - - name: {{ pillar["ansible"]["build_dir"] }}/templates/api_server/{{ file[1]["path"] }} -{% else %} - - name: {{ pillar["ansible"]["build_dir"] }}/files/api_server/{{ file[1]["path"] }} -{% endif %} - - user: root - - group: root - - mode: "0755" - - makedirs: True -ansible_apiserver_files_{{ file[0] }}: - file.managed: -{% if file[1]["is_template"] %} - - name: {{ pillar["ansible"]["build_dir"] }}/templates/api_server/{{ file[1]["path"] }}/{{ file[1]["name"] }} - - template: jinja -{% else %} - - name: {{ pillar["ansible"]["build_dir"] }}/files/api_server/{{ file[1]["path"] }}/{{ file[1]["name"] }} -{% endif %} - - source: salt://openbook/api_server/files/{{ file[1]["source"] }} - - user: root - - group: root - - mode: {{ file[1]["mode"] }} -{% endif %} -{% endfor %} diff --git a/salt/openbook/customer_api_server/files/Dockerfile b/salt/openbook/customer_api_server/files/Dockerfile new file mode 100644 index 0000000..98303c5 --- /dev/null +++ b/salt/openbook/customer_api_server/files/Dockerfile @@ -0,0 +1,8 @@ +FROM {{ pillar["baseimage"]["image_name"] }} +MAINTAINER Carlos Konstanski <carlos@talligent.com> +ADD docker-start.tar.xz / +EXPOSE 8081 5701 5702 +VOLUME {{ pillar["customer_api_server"]["dirs"]["etc_openbook_customer_api_server"]["name"] }} +VOLUME {{ pillar["customer_api_server"]["dirs"]["var_log_openbook_customer_api_server"]["name"] }} +RUN /installdeps.sh +ENTRYPOINT [ "/start_app.sh" ] diff --git a/salt/openbook/customer_api_server/files/build.sh b/salt/openbook/customer_api_server/files/build.sh new file mode 100644 index 0000000..513ca2d --- /dev/null +++ b/salt/openbook/customer_api_server/files/build.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Do not call directly. Meant to be called from CI build script. + +pushd {{ pillar["customer_api_server"]["build_dir"] }} 2>/dev/null + +echo "Creating tmp directory" +rm -rf tmp +mkdir tmp +rm -f docker-start.tar.xz + +echo "Populating with custom files" +rsync -aq data/ tmp/ + +echo "Repackaging into .xz file" +tar Jcvf docker-start.tar.xz -C tmp/ . + +echo "Deleting existing docker container" +docker stop {{ pillar["customer_api_server"]["container_name"] }} +docker container prune -f +docker rmi -f {{ pillar["customer_api_server"]["image_name"] }} + +echo "Building docker Ubuntu image" +docker build -t {{ pillar["customer_api_server"]["image_name"] }} . + +echo "Push docker image to the registry" +docker tag {{ pillar["customer_api_server"]["image_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["customer_api_server"]["image_name"] }} +docker push {{ pillar["registry"]["url"] }}/{{ pillar["customer_api_server"]["image_name"] }} + +echo "Cleaning up" +rm -rf tmp +rm -f docker-start.tar.xz + +popd 2>/dev/null +exit 0 diff --git a/salt/openbook/customer_api_server/files/customer_api_server.json b/salt/openbook/customer_api_server/files/customer_api_server.json new file mode 100644 index 0000000..a69a8af --- /dev/null +++ b/salt/openbook/customer_api_server/files/customer_api_server.json @@ -0,0 +1,15 @@ +{% raw %} +{% set ips = openbook_gcomm_addresses.split(",") %} +{% if ips|length > 1 %} +{% set failover = "failover:" %} +{% else %} +{% set failover = "" %} +{% endif %} +{% endraw %} + +{ + "log.path": "{{ pillar["customer_api_server"]["log"] }}", + "entityDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook", + "workflowDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook_workflow", + "jobsDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook_jobs" +} diff --git a/salt/openbook/customer_api_server/files/installdeps.sh b/salt/openbook/customer_api_server/files/installdeps.sh new file mode 100644 index 0000000..e8054cf --- /dev/null +++ b/salt/openbook/customer_api_server/files/installdeps.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +export DEBIAN_FRONTEND=noninteractive +apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" openjdk-8-jre-headless + +curl -k \ + -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ + -o "{{ pillar["customer_api_server"]["jar_name"] }}" \ + "{{ pillar["jars"]["url"] }}{{ pillar["customer_api_server"]["jar_name"] }}" + +exit 0 diff --git a/salt/openbook/customer_api_server/files/run.sh b/salt/openbook/customer_api_server/files/run.sh new file mode 100644 index 0000000..11156c5 --- /dev/null +++ b/salt/openbook/customer_api_server/files/run.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker run -d --net=host -v {{ pillar["customer_api_server"]["dirs"]["etc_openbook_customer_api_server"]["name"] }}:{{ pillar["customer_api_server"]["dirs"]["etc_openbook_customer_api_server"]["name"] }} -v {{ pillar["customer_api_server"]["dirs"]["var_log_openbook_customer_api_server"]["name"] }}:{{ pillar["customer_api_server"]["dirs"]["var_log_openbook_customer_api_server"]["name"] }} --name {{ pillar["customer_api_server"]["container_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["customer_api_server"]["image_name"] }} +exit 0 diff --git a/salt/openbook/customer_api_server/files/start_app.sh b/salt/openbook/customer_api_server/files/start_app.sh new file mode 100644 index 0000000..6fd1f62 --- /dev/null +++ b/salt/openbook/customer_api_server/files/start_app.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +exec java -jar {{ pillar["customer_api_server"]["jar_name"] }} run com.talligent.openbook.verticle.Startup --cluster diff --git a/salt/openbook/customer_api_server/init.sls b/salt/openbook/customer_api_server/init.sls new file mode 100644 index 0000000..e6b497c --- /dev/null +++ b/salt/openbook/customer_api_server/init.sls @@ -0,0 +1,55 @@ +{% for dir in pillar["customer_api_server"]["dirs"].items() %} +customer_api_server_dirs_{{ dir[0] }}: + file.directory: +{% if dir[1]["relative_to_buildroot"] %} + - name: {{ pillar["customer_api_server"]["build_dir"] }}/{{ dir[1]["name"] }} +{% else %} + - name: {{ dir[1]["name"] }} +{% endif %} + - user: root + - group: root + - mode: {{ dir[1]["mode"] }} + - makedirs: True +{% endfor %} + +{% for file in pillar["customer_api_server"]["files"].items() %} +customer_api_server_files_{{ file[0] }}: + file.managed: +{% if file[1]["relative_to_buildroot"] %} + - name: {{ pillar["customer_api_server"]["build_dir"] }}/{{ file[1]["path"] }}/{{ file[1]["name"] }} +{% else %} + - name: {{ file[1]["path"] }}/{{ file[1]["name"] }} +{% endif %} + - source: salt://openbook/customer_api_server/files/{{ file[1]["source"] }} +{% if file[1]["is_template"] %} + - template: jinja +{% endif %} + - user: root + - group: root + - mode: {{ file[1]["mode"] }} +{% if file[1]["ansible"] %} +ansible_customer_api_server_dirs_{{ file[0] }}: + file.directory: +{% if file[1]["is_template"] %} + - name: {{ pillar["ansible"]["build_dir"] }}/templates/customer_api_server/{{ file[1]["path"] }} +{% else %} + - name: {{ pillar["ansible"]["build_dir"] }}/files/customer_api_server/{{ file[1]["path"] }} +{% endif %} + - user: root + - group: root + - mode: "0755" + - makedirs: True +ansible_customer_api_server_files_{{ file[0] }}: + file.managed: +{% if file[1]["is_template"] %} + - name: {{ pillar["ansible"]["build_dir"] }}/templates/customer_api_server/{{ file[1]["path"] }}/{{ file[1]["name"] }} + - template: jinja +{% else %} + - name: {{ pillar["ansible"]["build_dir"] }}/files/customer_api_server/{{ file[1]["path"] }}/{{ file[1]["name"] }} +{% endif %} + - source: salt://openbook/customer_api_server/files/{{ file[1]["source"] }} + - user: root + - group: root + - mode: {{ file[1]["mode"] }} +{% endif %} +{% endfor %} diff --git a/salt/openbook/job_scheduler_server/files/Dockerfile b/salt/openbook/job_scheduler_server/files/Dockerfile new file mode 100644 index 0000000..5eb261a --- /dev/null +++ b/salt/openbook/job_scheduler_server/files/Dockerfile @@ -0,0 +1,8 @@ +FROM {{ pillar["baseimage"]["image_name"] }} +MAINTAINER Carlos Konstanski <carlos@talligent.com> +ADD docker-start.tar.xz / +EXPOSE 8081 5701 5702 +VOLUME {{ pillar["job_scheduler_server"]["dirs"]["etc_openbook_job_scheduler_server"]["name"] }} +VOLUME {{ pillar["job_scheduler_server"]["dirs"]["var_log_openbook_job_scheduler_server"]["name"] }} +RUN /installdeps.sh +ENTRYPOINT [ "/start_app.sh" ] diff --git a/salt/openbook/job_scheduler_server/files/build.sh b/salt/openbook/job_scheduler_server/files/build.sh new file mode 100644 index 0000000..84b5759 --- /dev/null +++ b/salt/openbook/job_scheduler_server/files/build.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Do not call directly. Meant to be called from CI build script. + +pushd {{ pillar["job_scheduler_server"]["build_dir"] }} 2>/dev/null + +echo "Creating tmp directory" +rm -rf tmp +mkdir tmp +rm -f docker-start.tar.xz + +echo "Populating with custom files" +rsync -aq data/ tmp/ + +echo "Repackaging into .xz file" +tar Jcvf docker-start.tar.xz -C tmp/ . + +echo "Deleting existing docker container" +docker stop {{ pillar["job_scheduler_server"]["container_name"] }} +docker container prune -f +docker rmi -f {{ pillar["job_scheduler_server"]["image_name"] }} + +echo "Building docker Ubuntu image" +docker build -t {{ pillar["job_scheduler_server"]["image_name"] }} . + +echo "Push docker image to the registry" +docker tag {{ pillar["job_scheduler_server"]["image_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["job_scheduler_server"]["image_name"] }} +docker push {{ pillar["registry"]["url"] }}/{{ pillar["job_scheduler_server"]["image_name"] }} + +echo "Cleaning up" +rm -rf tmp +rm -f docker-start.tar.xz + +popd 2>/dev/null +exit 0 diff --git a/salt/openbook/job_scheduler_server/files/installdeps.sh b/salt/openbook/job_scheduler_server/files/installdeps.sh new file mode 100644 index 0000000..ad8643f --- /dev/null +++ b/salt/openbook/job_scheduler_server/files/installdeps.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +export DEBIAN_FRONTEND=noninteractive +apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" openjdk-8-jre-headless + +curl -k \ + -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ + -o "{{ pillar["job_scheduler_server"]["jar_name"] }}" \ + "{{ pillar["jars"]["url"] }}{{ pillar["job_scheduler_server"]["jar_name"] }}" + +exit 0 diff --git a/salt/openbook/job_scheduler_server/files/job_scheduler_server.json b/salt/openbook/job_scheduler_server/files/job_scheduler_server.json new file mode 100644 index 0000000..673a8c2 --- /dev/null +++ b/salt/openbook/job_scheduler_server/files/job_scheduler_server.json @@ -0,0 +1,15 @@ +{% raw %} +{% set ips = openbook_gcomm_addresses.split(",") %} +{% if ips|length > 1 %} +{% set failover = "failover:" %} +{% else %} +{% set failover = "" %} +{% endif %} +{% endraw %} + +{ + "log.path": "{{ pillar["job_scheduler_server"]["log"] }}", + "entityDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook", + "workflowDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook_workflow", + "jobsDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook_jobs" +} diff --git a/salt/openbook/job_scheduler_server/files/run.sh b/salt/openbook/job_scheduler_server/files/run.sh new file mode 100644 index 0000000..284bb15 --- /dev/null +++ b/salt/openbook/job_scheduler_server/files/run.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker run -d --net=host -v {{ pillar["job_scheduler_server"]["dirs"]["etc_openbook_job_scheduler_server"]["name"] }}:{{ pillar["job_scheduler_server"]["dirs"]["etc_openbook_job_scheduler_server"]["name"] }} -v {{ pillar["job_scheduler_server"]["dirs"]["var_log_openbook_job_scheduler_server"]["name"] }}:{{ pillar["job_scheduler_server"]["dirs"]["var_log_openbook_job_scheduler_server"]["name"] }} --name {{ pillar["job_scheduler_server"]["container_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["job_scheduler_server"]["image_name"] }} +exit 0 diff --git a/salt/openbook/job_scheduler_server/files/start_app.sh b/salt/openbook/job_scheduler_server/files/start_app.sh new file mode 100644 index 0000000..9a7dbf4 --- /dev/null +++ b/salt/openbook/job_scheduler_server/files/start_app.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +exec java -jar {{ pillar["job_scheduler_server"]["jar_name"] }} run com.talligent.openbook.verticle.Startup --cluster diff --git a/salt/openbook/job_scheduler_server/init.sls b/salt/openbook/job_scheduler_server/init.sls new file mode 100644 index 0000000..0bb4aca --- /dev/null +++ b/salt/openbook/job_scheduler_server/init.sls @@ -0,0 +1,55 @@ +{% for dir in pillar["job_scheduler_server"]["dirs"].items() %} +job_scheduler_server_dirs_{{ dir[0] }}: + file.directory: +{% if dir[1]["relative_to_buildroot"] %} + - name: {{ pillar["job_scheduler_server"]["build_dir"] }}/{{ dir[1]["name"] }} +{% else %} + - name: {{ dir[1]["name"] }} +{% endif %} + - user: root + - group: root + - mode: {{ dir[1]["mode"] }} + - makedirs: True +{% endfor %} + +{% for file in pillar["job_scheduler_server"]["files"].items() %} +job_scheduler_server_files_{{ file[0] }}: + file.managed: +{% if file[1]["relative_to_buildroot"] %} + - name: {{ pillar["job_scheduler_server"]["build_dir"] }}/{{ file[1]["path"] }}/{{ file[1]["name"] }} +{% else %} + - name: {{ file[1]["path"] }}/{{ file[1]["name"] }} +{% endif %} + - source: salt://openbook/job_scheduler_server/files/{{ file[1]["source"] }} +{% if file[1]["is_template"] %} + - template: jinja +{% endif %} + - user: root + - group: root + - mode: {{ file[1]["mode"] }} +{% if file[1]["ansible"] %} +ansible_job_scheduler_server_dirs_{{ file[0] }}: + file.directory: +{% if file[1]["is_template"] %} + - name: {{ pillar["ansible"]["build_dir"] }}/templates/job_scheduler_server/{{ file[1]["path"] }} +{% else %} + - name: {{ pillar["ansible"]["build_dir"] }}/files/job_scheduler_server/{{ file[1]["path"] }} +{% endif %} + - user: root + - group: root + - mode: "0755" + - makedirs: True +ansible_job_scheduler_server_files_{{ file[0] }}: + file.managed: +{% if file[1]["is_template"] %} + - name: {{ pillar["ansible"]["build_dir"] }}/templates/job_scheduler_server/{{ file[1]["path"] }}/{{ file[1]["name"] }} + - template: jinja +{% else %} + - name: {{ pillar["ansible"]["build_dir"] }}/files/job_scheduler_server/{{ file[1]["path"] }}/{{ file[1]["name"] }} +{% endif %} + - source: salt://openbook/job_scheduler_server/files/{{ file[1]["source"] }} + - user: root + - group: root + - mode: {{ file[1]["mode"] }} +{% endif %} +{% endfor %} diff --git a/salt/openbook/api_server/files/Dockerfile b/salt/openbook/workflow_server/files/Dockerfile index 57c48ea..d6bf531 100644 --- a/salt/openbook/api_server/files/Dockerfile +++ b/salt/openbook/workflow_server/files/Dockerfile @@ -2,7 +2,7 @@ FROM {{ pillar["baseimage"]["image_name"] }} MAINTAINER Carlos Konstanski <carlos@talligent.com> ADD docker-start.tar.xz / EXPOSE 8081 5701 5702 -VOLUME {{ pillar["api_server"]["dirs"]["etc_openbook_api_server"]["name"] }} -VOLUME {{ pillar["api_server"]["dirs"]["var_log_openbook_api_server"]["name"] }} +VOLUME {{ pillar["workflow_server"]["dirs"]["etc_openbook_workflow_server"]["name"] }} +VOLUME {{ pillar["workflow_server"]["dirs"]["var_log_openbook_workflow_server"]["name"] }} RUN /installdeps.sh ENTRYPOINT [ "/start_app.sh" ] diff --git a/salt/openbook/api_server/files/build.sh b/salt/openbook/workflow_server/files/build.sh index 95f7077..d89c34e 100644 --- a/salt/openbook/api_server/files/build.sh +++ b/salt/openbook/workflow_server/files/build.sh @@ -2,7 +2,7 @@ # Do not call directly. Meant to be called from CI build script. -pushd {{ pillar["api_server"]["build_dir"] }} 2>/dev/null +pushd {{ pillar["workflow_server"]["build_dir"] }} 2>/dev/null echo "Creating tmp directory" rm -rf tmp @@ -16,16 +16,16 @@ echo "Repackaging into .xz file" tar Jcvf docker-start.tar.xz -C tmp/ . echo "Deleting existing docker container" -docker stop {{ pillar["api_server"]["container_name"] }} +docker stop {{ pillar["workflow_server"]["container_name"] }} docker container prune -f -docker rmi -f {{ pillar["api_server"]["image_name"] }} +docker rmi -f {{ pillar["workflow_server"]["image_name"] }} echo "Building docker Ubuntu image" -docker build -t {{ pillar["api_server"]["image_name"] }} . +docker build -t {{ pillar["workflow_server"]["image_name"] }} . echo "Push docker image to the registry" -docker tag {{ pillar["api_server"]["image_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["api_server"]["image_name"] }} -docker push {{ pillar["registry"]["url"] }}/{{ pillar["api_server"]["image_name"] }} +docker tag {{ pillar["workflow_server"]["image_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["workflow_server"]["image_name"] }} +docker push {{ pillar["registry"]["url"] }}/{{ pillar["workflow_server"]["image_name"] }} echo "Cleaning up" rm -rf tmp diff --git a/salt/openbook/api_server/files/installdeps.sh b/salt/openbook/workflow_server/files/installdeps.sh index 94a6353..ccb638a 100644 --- a/salt/openbook/api_server/files/installdeps.sh +++ b/salt/openbook/workflow_server/files/installdeps.sh @@ -5,7 +5,7 @@ apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--fo curl -k \ -u '{{ pillar["jars"]["username"] }}:{{ pillar["jars"]["password"] }}' \ - -o "{{ pillar["api_server"]["jar_name"] }}" \ - "{{ pillar["jars"]["url"] }}{{ pillar["api_server"]["jar_name"] }}" + -o "{{ pillar["workflow_server"]["jar_name"] }}" \ + "{{ pillar["jars"]["url"] }}{{ pillar["workflow_server"]["jar_name"] }}" exit 0 diff --git a/salt/openbook/workflow_server/files/run.sh b/salt/openbook/workflow_server/files/run.sh new file mode 100644 index 0000000..427a3da --- /dev/null +++ b/salt/openbook/workflow_server/files/run.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker run -d --net=host -v {{ pillar["workflow_server"]["dirs"]["etc_openbook_workflow_server"]["name"] }}:{{ pillar["workflow_server"]["dirs"]["etc_openbook_workflow_server"]["name"] }} -v {{ pillar["workflow_server"]["dirs"]["var_log_openbook_workflow_server"]["name"] }}:{{ pillar["workflow_server"]["dirs"]["var_log_openbook_workflow_server"]["name"] }} --name {{ pillar["workflow_server"]["container_name"] }} {{ pillar["registry"]["url"] }}/{{ pillar["workflow_server"]["image_name"] }} +exit 0 diff --git a/salt/openbook/workflow_server/files/start_app.sh b/salt/openbook/workflow_server/files/start_app.sh new file mode 100644 index 0000000..3324f4f --- /dev/null +++ b/salt/openbook/workflow_server/files/start_app.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +exec java -jar {{ pillar["workflow_server"]["jar_name"] }} run com.talligent.openbook.verticle.Startup --cluster diff --git a/salt/openbook/api_server/files/api_server.json b/salt/openbook/workflow_server/files/workflow_server.json index 8e75119..0ff5f64 100644 --- a/salt/openbook/api_server/files/api_server.json +++ b/salt/openbook/workflow_server/files/workflow_server.json @@ -8,7 +8,7 @@ {% endraw %} { - "log.path": "{{ pillar["api_server"]["log"] }}", + "log.path": "{{ pillar["workflow_server"]["log"] }}", "entityDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook", "workflowDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook_workflow", "jobsDS.url": "jdbc:mariadb:{% raw %}{{ failover }}{% endraw %}//{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}/openbook_jobs" diff --git a/salt/openbook/workflow_server/init.sls b/salt/openbook/workflow_server/init.sls new file mode 100644 index 0000000..2b8ba27 --- /dev/null +++ b/salt/openbook/workflow_server/init.sls @@ -0,0 +1,55 @@ +{% for dir in pillar["workflow_server"]["dirs"].items() %} +workflow_server_dirs_{{ dir[0] }}: + file.directory: +{% if dir[1]["relative_to_buildroot"] %} + - name: {{ pillar["workflow_server"]["build_dir"] }}/{{ dir[1]["name"] }} +{% else %} + - name: {{ dir[1]["name"] }} +{% endif %} + - user: root + - group: root + - mode: {{ dir[1]["mode"] }} + - makedirs: True +{% endfor %} + +{% for file in pillar["workflow_server"]["files"].items() %} +workflow_server_files_{{ file[0] }}: + file.managed: +{% if file[1]["relative_to_buildroot"] %} + - name: {{ pillar["workflow_server"]["build_dir"] }}/{{ file[1]["path"] }}/{{ file[1]["name"] }} +{% else %} + - name: {{ file[1]["path"] }}/{{ file[1]["name"] }} +{% endif %} + - source: salt://openbook/workflow_server/files/{{ file[1]["source"] }} +{% if file[1]["is_template"] %} + - template: jinja +{% endif %} + - user: root + - group: root + - mode: {{ file[1]["mode"] }} +{% if file[1]["ansible"] %} +ansible_workflow_server_dirs_{{ file[0] }}: + file.directory: +{% if file[1]["is_template"] %} + - name: {{ pillar["ansible"]["build_dir"] }}/templates/workflow_server/{{ file[1]["path"] }} +{% else %} + - name: {{ pillar["ansible"]["build_dir"] }}/files/workflow_server/{{ file[1]["path"] }} +{% endif %} + - user: root + - group: root + - mode: "0755" + - makedirs: True +ansible_workflow_server_files_{{ file[0] }}: + file.managed: +{% if file[1]["is_template"] %} + - name: {{ pillar["ansible"]["build_dir"] }}/templates/workflow_server/{{ file[1]["path"] }}/{{ file[1]["name"] }} + - template: jinja +{% else %} + - name: {{ pillar["ansible"]["build_dir"] }}/files/workflow_server/{{ file[1]["path"] }}/{{ file[1]["name"] }} +{% endif %} + - source: salt://openbook/workflow_server/files/{{ file[1]["source"] }} + - user: root + - group: root + - mode: {{ file[1]["mode"] }} +{% endif %} +{% endfor %} diff --git a/salt/top.sls b/salt/top.sls index f471540..22ffb32 100644 --- a/salt/top.sls +++ b/salt/top.sls @@ -4,6 +4,9 @@ base: - openbook.ansible - openbook.baseimage - openbook.database - - openbook.api_server + - openbook.admin_api_server - openbook.admin_web_ui + - openbook.customer_api_server - openbook.customer_web_ui + - openbook.job_scheduler_server + - openbook.workflow_server |
