diff --git a/deployment/ansible/group_vars/all b/deployment/ansible/group_vars/all index 7ab891992..e055fb729 100644 --- a/deployment/ansible/group_vars/all +++ b/deployment/ansible/group_vars/all @@ -42,11 +42,10 @@ docker_version: "1.9.*" docker_py_version: "1.2.3" docker_options: "--storage-driver=aufs" -sjs_host: "localhost" -sjs_port: 8090 -sjs_container_image: "quay.io/azavea/spark-jobserver:0.6.1" +geop_host: "localhost" +geop_port: 8090 -geop_version: "2.1.0" +geop_version: "3.0.0-alpha" geop_cache_enabled: 1 nginx_cache_dir: "/var/cache/nginx" diff --git a/deployment/ansible/roles/model-my-watershed.base/defaults/main.yml b/deployment/ansible/roles/model-my-watershed.base/defaults/main.yml index ae9fb5887..c6f16c167 100644 --- a/deployment/ansible/roles/model-my-watershed.base/defaults/main.yml +++ b/deployment/ansible/roles/model-my-watershed.base/defaults/main.yml @@ -11,8 +11,8 @@ envdir_config: MMW_CACHE_PORT: "{{ redis_port }}" MMW_TILER_HOST: "{{ tiler_host }}" MMW_GEOPROCESSING_CACHE: "{{ geop_cache_enabled }}" - MMW_GEOPROCESSING_HOST: "{{ sjs_host }}" - MMW_GEOPROCESSING_PORT: "{{ sjs_port }}" + MMW_GEOPROCESSING_HOST: "{{ geop_host }}" + MMW_GEOPROCESSING_PORT: "{{ geop_port }}" MMW_GEOPROCESSING_VERSION: "{{ geop_version }}" MMW_ITSI_CLIENT_ID: "{{ itsi_client_id }}" MMW_ITSI_SECRET_KEY: "{{ itsi_secret_key }}" diff --git a/deployment/ansible/roles/model-my-watershed.beaver/tasks/main.yml b/deployment/ansible/roles/model-my-watershed.beaver/tasks/main.yml index 176fdb0d8..74cca470f 100644 --- a/deployment/ansible/roles/model-my-watershed.beaver/tasks/main.yml +++ b/deployment/ansible/roles/model-my-watershed.beaver/tasks/main.yml @@ -6,9 +6,9 @@ - celery - django - docker + - geoprocessing - gunicorn - nginx - - spark-jobserver - windshaft notify: - Restart Beaver diff --git a/deployment/ansible/roles/model-my-watershed.beaver/templates/geoprocessing.conf.j2 b/deployment/ansible/roles/model-my-watershed.beaver/templates/geoprocessing.conf.j2 new file mode 100644 index 000000000..05d6eccbf --- /dev/null +++ b/deployment/ansible/roles/model-my-watershed.beaver/templates/geoprocessing.conf.j2 @@ -0,0 +1,4 @@ +-[/var/log/upstart/geoprocessing.log] +-multiline_regex_before = ^\s+ +-type: geoprocessing +-tags: geoprocessing,beaver diff --git a/deployment/ansible/roles/model-my-watershed.beaver/templates/spark-jobserver.conf.j2 b/deployment/ansible/roles/model-my-watershed.beaver/templates/spark-jobserver.conf.j2 deleted file mode 100644 index 76295b4c2..000000000 --- a/deployment/ansible/roles/model-my-watershed.beaver/templates/spark-jobserver.conf.j2 +++ /dev/null @@ -1,4 +0,0 @@ -[/var/log/upstart/spark-jobserver.log] -multiline_regex_before = ^\s+ -type: spark-jobserver -tags: spark-jobserver,beaver diff --git a/deployment/ansible/roles/model-my-watershed.geoprocessing/defaults/main.yml b/deployment/ansible/roles/model-my-watershed.geoprocessing/defaults/main.yml index 1c6c4204c..39ba92c69 100644 --- a/deployment/ansible/roles/model-my-watershed.geoprocessing/defaults/main.yml +++ b/deployment/ansible/roles/model-my-watershed.geoprocessing/defaults/main.yml @@ -1,3 +1,3 @@ --- geop_home: "/opt/geoprocessing" -geop_jar_url: "https://github.com/WikiWatershed/mmw-geoprocessing/releases/download/{{ geop_version }}/mmw-geoprocessing-assembly-{{ geop_version }}.jar" +geop_jar_url: "https://github.com/WikiWatershed/mmw-geoprocessing/releases/download/{{ geop_version }}/api-assembly-{{ geop_version }}.jar" diff --git a/deployment/ansible/roles/model-my-watershed.geoprocessing/handlers/main.yml b/deployment/ansible/roles/model-my-watershed.geoprocessing/handlers/main.yml new file mode 100644 index 000000000..8a16b8406 --- /dev/null +++ b/deployment/ansible/roles/model-my-watershed.geoprocessing/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Restart geoprocessing service + service: name=geoprocessing state=restarted diff --git a/deployment/ansible/roles/model-my-watershed.geoprocessing/meta/main.yml b/deployment/ansible/roles/model-my-watershed.geoprocessing/meta/main.yml index a07a81b60..ed880a5aa 100644 --- a/deployment/ansible/roles/model-my-watershed.geoprocessing/meta/main.yml +++ b/deployment/ansible/roles/model-my-watershed.geoprocessing/meta/main.yml @@ -1,8 +1,9 @@ --- dependencies: - - { role: "model-my-watershed.spark-jobserver" } - { role: "azavea.java", java_major_version: "8", java_version: "8u141*" } + - { role: "model-my-watershed.base" } + - { role: "model-my-watershed.nginx" } diff --git a/deployment/ansible/roles/model-my-watershed.geoprocessing/tasks/main.yml b/deployment/ansible/roles/model-my-watershed.geoprocessing/tasks/main.yml index e1403adfc..a769fa4c4 100644 --- a/deployment/ansible/roles/model-my-watershed.geoprocessing/tasks/main.yml +++ b/deployment/ansible/roles/model-my-watershed.geoprocessing/tasks/main.yml @@ -3,6 +3,28 @@ file: path="{{ geop_home }}" state=directory -- name: Download Spark Job Server geoprocessing JAR +- name: Download mmw-geoprocessing JAR get_url: url="{{ geop_jar_url }}" dest="{{ geop_home }}/mmw-geoprocessing-{{ geop_version }}.jar" + +- name: Configure Nginx site + template: src=nginx-geoprocessing.conf.j2 + dest=/etc/nginx/sites-available/geoprocessing.conf + notify: + - Restart Nginx + +- name: Enable Nginx site + file: src=/etc/nginx/sites-available/geoprocessing.conf + dest=/etc/nginx/sites-enabled/geoprocessing + state=link + notify: + - Restart Nginx + +- name: Configure geoprocessing service definition + template: src=upstart-geoprocessing.conf.j2 + dest=/etc/init/geoprocessing.conf + notify: + - Restart geoprocessing service + +- name: Ensure geoprocessing service is running + service: name=geoprocessing state=started diff --git a/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/nginx-spark-jobserver.conf.j2 b/deployment/ansible/roles/model-my-watershed.geoprocessing/templates/nginx-geoprocessing.conf.j2 similarity index 72% rename from deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/nginx-spark-jobserver.conf.j2 rename to deployment/ansible/roles/model-my-watershed.geoprocessing/templates/nginx-geoprocessing.conf.j2 index 789860dd5..5fa8dd3a0 100644 --- a/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/nginx-spark-jobserver.conf.j2 +++ b/deployment/ansible/roles/model-my-watershed.geoprocessing/templates/nginx-geoprocessing.conf.j2 @@ -2,7 +2,7 @@ server { listen *:80; server_name _; - access_log /var/log/nginx/spark-jobserver.access.log logstash_json; + access_log /var/log/nginx/geoprocessing.access.log logstash_json; {% if ['packer'] | is_in(group_names) -%} location /version.txt { @@ -15,6 +15,6 @@ server { proxy_set_header Host $http_host; proxy_redirect off; - proxy_pass http://127.0.0.1:8090/healthz; + proxy_pass http://127.0.0.1:8090/ping; } } diff --git a/deployment/ansible/roles/model-my-watershed.geoprocessing/templates/upstart-geoprocessing.conf.j2 b/deployment/ansible/roles/model-my-watershed.geoprocessing/templates/upstart-geoprocessing.conf.j2 new file mode 100644 index 000000000..e9cea54fc --- /dev/null +++ b/deployment/ansible/roles/model-my-watershed.geoprocessing/templates/upstart-geoprocessing.conf.j2 @@ -0,0 +1,15 @@ +description "Geoprocessing service" + +{% if ['development', 'test'] | some_are_in(group_names) -%} +start on (vagrant-mounted) +{% else %} +start on (local-filesystems and net-device-up IFACE!=lo) +{% endif %} + +stop on shutdown + +respawn +setuid mmw +chdir {{ geop_home }} + +exec java -jar mmw-geoprocessing-{{ geop_version }}.jar diff --git a/deployment/ansible/roles/model-my-watershed.spark-jobserver/defaults/main.yml b/deployment/ansible/roles/model-my-watershed.spark-jobserver/defaults/main.yml deleted file mode 100644 index 84a3580f4..000000000 --- a/deployment/ansible/roles/model-my-watershed.spark-jobserver/defaults/main.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -sjs_home: "/opt/spark-jobserver" -sjs_driver_memory: "1G" -sjs_data_dir: "/opt/spark-jobserver/data" diff --git a/deployment/ansible/roles/model-my-watershed.spark-jobserver/handlers/main.yml b/deployment/ansible/roles/model-my-watershed.spark-jobserver/handlers/main.yml deleted file mode 100644 index af79ab376..000000000 --- a/deployment/ansible/roles/model-my-watershed.spark-jobserver/handlers/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -- name: Restart Spark Job Server - service: name=spark-jobserver state=restarted diff --git a/deployment/ansible/roles/model-my-watershed.spark-jobserver/meta/main.yml b/deployment/ansible/roles/model-my-watershed.spark-jobserver/meta/main.yml deleted file mode 100644 index 595f90824..000000000 --- a/deployment/ansible/roles/model-my-watershed.spark-jobserver/meta/main.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -dependencies: - - { role: "model-my-watershed.docker" } - - { role: "model-my-watershed.nginx" } diff --git a/deployment/ansible/roles/model-my-watershed.spark-jobserver/tasks/main.yml b/deployment/ansible/roles/model-my-watershed.spark-jobserver/tasks/main.yml deleted file mode 100644 index 7c9a6ece8..000000000 --- a/deployment/ansible/roles/model-my-watershed.spark-jobserver/tasks/main.yml +++ /dev/null @@ -1,42 +0,0 @@ ---- -- name: Create Spark Job Server directories - file: path="{{ item }}" - recurse=yes - state=directory - with_items: - - "{{ sjs_home }}" - - "{{ sjs_data_dir }}" - -- name: Configure Spark Job Server - template: src="{{ item }}.j2" - dest="/opt/spark-jobserver/{{ item }}" - with_items: - - spark-jobserver.conf - - log4j.properties - notify: - - Restart Spark Job Server - -- name: Configure Nginx site - template: src=nginx-spark-jobserver.conf.j2 - dest=/etc/nginx/sites-available/spark-jobserver.conf - notify: - - Restart Nginx - -- name: Enable Nginx site - file: src=/etc/nginx/sites-available/spark-jobserver.conf - dest=/etc/nginx/sites-enabled/spark-jobserver - state=link - notify: - - Restart Nginx - -- name: Pull Spark Job Server container image - command: "/usr/bin/docker pull {{ sjs_container_image }}" - -- name: Configure Spark Job Server service definition - template: src=upstart-spark-jobserver.conf.j2 - dest=/etc/init/spark-jobserver.conf - notify: - - Restart Spark Job Server - -- name: Ensure Spark Job Server is running - service: name=spark-jobserver state=started diff --git a/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/log4j.properties.j2 b/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/log4j.properties.j2 deleted file mode 100644 index e66c26913..000000000 --- a/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/log4j.properties.j2 +++ /dev/null @@ -1,17 +0,0 @@ -log4j.rootLogger=INFO,console - -log4j.appender.console=org.apache.log4j.ConsoleAppender - -{% if ['development', 'test'] | some_are_in(group_names) -%} -log4j.appender.console.Threshold=DEBUG -log4j.logger.com.amazonaws=DEBUG -{% else %} -log4j.appender.console.Threshold=INFO -log4j.logger.com.amazonaws=WARN -{% endif %} - -log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern=[%t] %-5p %c - %m%n - -log4j.logger.org.apache.spark.scheduler.TaskSetManager=WARN -log4j.logger.org.apache.spark.scheduler.DAGScheduler=WARN diff --git a/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/spark-jobserver.conf.j2 b/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/spark-jobserver.conf.j2 deleted file mode 100644 index 2bad7966a..000000000 --- a/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/spark-jobserver.conf.j2 +++ /dev/null @@ -1,46 +0,0 @@ -################### -# spark-jobserver # -################### - -spark.jobserver { - port = 8090 - jobdao = spark.jobserver.io.JobSqlDAO - - sqldao { - rootdir = {{ sjs_data_dir }} - jdbc.url = "jdbc:h2:file:/{{ sjs_data_dir }}/h2-db" - } - - job-jar-paths { - "geoprocessing-{{ geop_version }}" = {{ geop_home }}/mmw-geoprocessing-{{ geop_version }}.jar - } - - context-creation-timeout = 30 s -} - -spark.contexts { - geoprocessing {} -} - -######### -# spark # -######### - -spark { - home = "/opt/spark" - master = "local[*]" - - context-settings.passthrough.spark.serializer = "org.apache.spark.serializer.KryoSerializer" - context-settings.passthrough.spark.kryo.registrator = "geotrellis.spark.io.kryo.KryoRegistrator" -} - -######### -# spray # -######### - -spray.can.server { - parsing.max-content-length = 250m - # Match the backend's timeout set here src/mmw/apps/modeling/tasks.py - idle-timeout = 45s - request-timeout = 42s -} diff --git a/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/upstart-spark-jobserver.conf.j2 b/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/upstart-spark-jobserver.conf.j2 deleted file mode 100644 index 253c68a87..000000000 --- a/deployment/ansible/roles/model-my-watershed.spark-jobserver/templates/upstart-spark-jobserver.conf.j2 +++ /dev/null @@ -1,32 +0,0 @@ -description "Spark Job Server" - -start on (filesystem and started docker) -stop on stopping docker - -kill timeout 20 -kill signal CONT -respawn - -pre-start script - /usr/bin/docker kill spark-jobserver || true - /usr/bin/docker rm spark-jobserver || true -end script - -exec /usr/bin/docker run \ - --name spark-jobserver \ - --publish {{ sjs_port }}:{{ sjs_port }} \ - {% if ['development', 'test'] | some_are_in(group_names) -%} - --volume /aws:/root/.aws \ - --env AWS_PROFILE={{ aws_profile }} \ - {% endif -%} - --volume {{ sjs_home }}/spark-jobserver.conf:{{ sjs_home }}/spark-jobserver.conf \ - --volume {{ sjs_home }}/log4j.properties:{{ sjs_home }}/log4j.properties \ - --volume {{ geop_home }}:{{ geop_home }} \ - --volume {{ sjs_data_dir }}:{{ sjs_data_dir }} \ - --log-driver syslog \ - {{ sjs_container_image }} --driver-memory {{ sjs_driver_memory }} --driver-java-options "-Xss5m -Dlog4j.configuration=file:log4j.properties" - -post-stop script - /usr/bin/docker kill spark-jobserver || true - /usr/bin/docker rm spark-jobserver || true -end script