From 3e3dff7e01824c7d00ea6f390f92fa66f67cb329 Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 28 Jun 2017 16:05:12 +0300 Subject: [PATCH 1/5] Add the play for restarting marathon apps --- tabernacle/ansible/restart_marathon_apps.yml | 6 ++ .../restart_marathon_apps/defaults/main.yml | 5 ++ .../dev/restart_marathon_apps/tasks/main.yml | 56 +++++++++++++++++++ .../dev/restart_marathon_apps/vars/main.yml | 48 ++++++++++++++++ 4 files changed, 115 insertions(+) create mode 100644 tabernacle/ansible/restart_marathon_apps.yml create mode 100644 tabernacle/ansible/roles/dev/restart_marathon_apps/defaults/main.yml create mode 100644 tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml create mode 100644 tabernacle/ansible/roles/dev/restart_marathon_apps/vars/main.yml diff --git a/tabernacle/ansible/restart_marathon_apps.yml b/tabernacle/ansible/restart_marathon_apps.yml new file mode 100644 index 0000000000..d0bfc824cb --- /dev/null +++ b/tabernacle/ansible/restart_marathon_apps.yml @@ -0,0 +1,6 @@ +--- + +- name: Restart an app in marathon + hosts: localhost + roles: + - { role: dev/restart_marathon_apps } diff --git a/tabernacle/ansible/roles/dev/restart_marathon_apps/defaults/main.yml b/tabernacle/ansible/roles/dev/restart_marathon_apps/defaults/main.yml new file mode 100644 index 0000000000..a2e1b529cc --- /dev/null +++ b/tabernacle/ansible/roles/dev/restart_marathon_apps/defaults/main.yml @@ -0,0 +1,5 @@ +machine_ip: "{{ lookup('env','MACHINE_IP') }}" +machine_server: "{{machine_ip}}:8080" +base_url: http://{{machine_server}}/v2/apps/ + +jq: "[.apps[] | [.tasksRunning, .tasksHealthy, .tasksUnhealthy, .tasksStaged]] | unique" diff --git a/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml b/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml new file mode 100644 index 0000000000..8d30956ebd --- /dev/null +++ b/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml @@ -0,0 +1,56 @@ +--- + + - name: Restart Applications + uri: + url: "{{base_url}}/highlander/{{item.group}}/{{item.app}}/restart" + method: POST + with_items: + - { group: core-backend, app: agni } + - { group: core-backend, app: isaac } + - { group: core-backend, app: middlewarehouse } + - { group: core-backend, app: phoenix } + - { group: core-backend, app: solomon } + + - { group: core-consumers, app: capture-consumer } + - { group: core-consumers, app: customer-groups-consumer } + - { group: core-consumers, app: gift-card-consumer } + - { group: core-consumers, app: green-river } + - { group: core-consumers, app: shipments-consumer } + + - { group: core-frontend, app: ashes } + - { group: core-frontend, app: peacock } + - { group: core-frontend, app: perfect-gourmet } + - { group: core-frontend, app: top-drawer } + + - { group: core-integrations, app: geronimo } + - { group: core-integrations, app: messaging } + - { group: core-integrations, app: hyperion } + + - { group: ic-backend, app: anthill } + - { group: ic-backend, app: bernardo } + - { group: ic-backend, app: eggcrate } + - { group: ic-backend, app: river-rock } + + - { group: ic-consumers, app: digger-sphex-consumer } + - { group: ic-consumers, app: orders-anthill } + - { group: ic-consumers, app: orders-reviews } + - { group: ic-consumers, app: orders-sphex } + - { group: ic-consumers, app: product-activity } + + - { group: ic-hooks, app: neo4j-reset } + + - { group: ic-integrations, app: suggester } + + - { group: ic-storage, app: henhouse } + - { group: ic-storage, app: neo4j } + when: marathon_apps[item.app] + + - name: Sleep for 5 seconds + shell: sleep 5 + + - name: Wait for the apps to be healthy + shell: curl -sS -XGET {{base_url}} | jq -c '{{jq}}' + register: unhealthy_task + until: unhealthy_task.stdout == '[[1,1,0,0]]' + retries: "{{marathon_retries}}" + delay: "{{marathon_delay}}" diff --git a/tabernacle/ansible/roles/dev/restart_marathon_apps/vars/main.yml b/tabernacle/ansible/roles/dev/restart_marathon_apps/vars/main.yml new file mode 100644 index 0000000000..068f64a118 --- /dev/null +++ b/tabernacle/ansible/roles/dev/restart_marathon_apps/vars/main.yml @@ -0,0 +1,48 @@ +marathon_apps: + # core-backend group + agni: "{{ lookup('env', 'AGNI_RESTART') | default(false) }}" + isaac: "{{ lookup('env', 'ISAAC_RESTART') | default(false) }}" + middlewarehouse: "{{ lookup('env', 'MIDDLEWAREHOUSE_RESTART') | default(false) }}" + phoenix: "{{ lookup('env', 'PHOENIX_RESTART') | default(false) }}" + solomon: "{{ lookup('env', 'SOLOMON_RESTART') | default(false) }}" + + # core-consumers group + capture-consumer: "{{ lookup('env', 'CAPTURE_RESTART') | default(false) }}" + customer-groups-consumer: "{{ lookup('env', 'CG_RESTART') | default(false) }}" + gift-card-consumer: "{{ lookup('env', 'GC_RESTART') | default(false) }}" + green-river: "{{ lookup('env', 'GREEN_RIVER_RESTART') | default(false) }}" + shipments-consumer: "{{ lookup('env', 'SHIPMENTS_RESTART') | default(false) }}" + + # core-frontend group + ashes: "{{ lookup('env', 'ASHES_RESTART') | default(false) }}" + peacock: "{{ lookup('env', 'PEACOCK_RESTART') | default(false) }}" + perfect-gourmet: "{{ lookup('env', 'TPG_RESTART') | default(false) }}" + top-drawer: "{{ lookup('env', 'TD_RESTART') | default(false) }}" + + # core-integrations group + geronimo: "{{ lookup('env', 'GERONIMO_RESTART') | default(false) }}" + messaging: "{{ lookup('env', 'MESSAGING_RESTART') | default(false) }}" + hyperion: "{{ lookup('env', 'HYPERION_RESTART') | default(false) }}" + + # ic-backend group + anthill: "{{ lookup('env', 'ANTHILL_RESTART') | default(false) }}" + bernardo: "{{ lookup('env', 'BERNARDO_RESTART') | default(false) }}" + eggcrate: "{{ lookup('env', 'EGGCRATE_RESTART') | default(false) }}" + river-rock: "{{ lookup('env', 'RIVER_ROCK_RESTART') | default(false) }}" + + # ic-consumers group + digger-sphex-consumer: "{{ lookup('env', 'DIGGER_SPHEX_RESTART') | default(false) }}" + orders-anthill: "{{ lookup('env', 'ORDERS_ANTHILL_RESTART') | default(false) }}" + orders-reviews: "{{ lookup('env', 'ORDERS_REVIEWS_RESTART') | default(false) }}" + orders-sphex: "{{ lookup('env', 'ORDERS_SPHEX_RESTART') | default(false) }}" + product-activity: "{{ lookup('env', 'PRODUCT_ACTIVITY_RESTART') | default(false) }}" + + # ic-hooks group + neo4j-reset: "{{ lookup('env', 'NEO4J_RESET_RESTART') | default(false) }}" + + # ic-integrations group + suggester: "{{ lookup('env', 'SUGGESTER_RESTART') | default(false) }}" + + # ic-storage group + henhouse: "{{ lookup('env', 'HENHOUSE_RESTART') | default(false) }}" + neo4j: "{{ lookup('env', 'NEO4J_RESTART') | default(false) }}" From 0b882bd08b981d9478073d5fca995d004150ed19 Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 28 Jun 2017 16:50:18 +0300 Subject: [PATCH 2/5] Minor adjustments --- tabernacle/ansible/restart_marathon_apps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tabernacle/ansible/restart_marathon_apps.yml b/tabernacle/ansible/restart_marathon_apps.yml index d0bfc824cb..959effd997 100644 --- a/tabernacle/ansible/restart_marathon_apps.yml +++ b/tabernacle/ansible/restart_marathon_apps.yml @@ -1,6 +1,6 @@ --- -- name: Restart an app in marathon +- name: Restart apps in marathon hosts: localhost roles: - { role: dev/restart_marathon_apps } From fd9dd789b10d91dd757c0ab99280f6627e316d73 Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 28 Jun 2017 16:51:01 +0300 Subject: [PATCH 3/5] Remove agni for now --- .../ansible/roles/dev/restart_marathon_apps/tasks/main.yml | 1 - tabernacle/ansible/roles/dev/restart_marathon_apps/vars/main.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml b/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml index 8d30956ebd..11e7f0d069 100644 --- a/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml +++ b/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml @@ -5,7 +5,6 @@ url: "{{base_url}}/highlander/{{item.group}}/{{item.app}}/restart" method: POST with_items: - - { group: core-backend, app: agni } - { group: core-backend, app: isaac } - { group: core-backend, app: middlewarehouse } - { group: core-backend, app: phoenix } diff --git a/tabernacle/ansible/roles/dev/restart_marathon_apps/vars/main.yml b/tabernacle/ansible/roles/dev/restart_marathon_apps/vars/main.yml index 068f64a118..a2c474a038 100644 --- a/tabernacle/ansible/roles/dev/restart_marathon_apps/vars/main.yml +++ b/tabernacle/ansible/roles/dev/restart_marathon_apps/vars/main.yml @@ -1,6 +1,5 @@ marathon_apps: # core-backend group - agni: "{{ lookup('env', 'AGNI_RESTART') | default(false) }}" isaac: "{{ lookup('env', 'ISAAC_RESTART') | default(false) }}" middlewarehouse: "{{ lookup('env', 'MIDDLEWAREHOUSE_RESTART') | default(false) }}" phoenix: "{{ lookup('env', 'PHOENIX_RESTART') | default(false) }}" From 1afcf0a1f3c3cad7c417a2f2b2829269f4b96b76 Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 29 Jun 2017 17:06:00 +0300 Subject: [PATCH 4/5] Check if machine ip is present --- .../ansible/roles/dev/restart_marathon_apps/tasks/main.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml b/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml index 11e7f0d069..70811c3b54 100644 --- a/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml +++ b/tabernacle/ansible/roles/dev/restart_marathon_apps/tasks/main.yml @@ -1,5 +1,11 @@ --- + - name: Check if machine ip is empty + assert: + that: + - machine_ip != "" + msg: "No machine ip was specified" + - name: Restart Applications uri: url: "{{base_url}}/highlander/{{item.group}}/{{item.app}}/restart" From 3e8984b522cc4c10bc0042f1b78baa8bd416f147 Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 29 Jun 2017 17:12:40 +0300 Subject: [PATCH 5/5] Add Makefile command --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6a5d871704..a914f4764c 100644 --- a/Makefile +++ b/Makefile @@ -28,4 +28,7 @@ provision: publish: cd developer-portal && make publish -.PHONY: prepare config up destroy provision publish +restart-apps: + ansible-playbook -v tabernacle/ansible/restart_marathon_apps.yml + +.PHONY: prepare config up destroy provision publish restart-apps