Last active
May 1, 2017 18:14
-
-
Save vishnu2kmohan/422f21b1a3a2e55af48007a6c9ec8ac9 to your computer and use it in GitHub Desktop.
janitor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ## list-completed-non-star-frameworks.sh | |
| #/usr/bin/env bash | |
| set -o errexit -o nounset -o pipefail | |
| curl -skSL \ | |
| -H "Authorization: token=$(dcos config show core.dcos_acs_token)" \ | |
| -H "Content-Type: application/json" \ | |
| $(dcos config show core.dcos_url)/mesos/state | \ | |
| jq -er '[.completed_frameworks[] | select(.role!="*") | {id: .id, name: .name, role: .role, principal: .principal, active: .active}]' \ | |
| > completed-non-star-frameworks.json | |
| ## template-janitor-marathon.json | |
| { | |
| "id": "/janitor-__NAME__", | |
| "cmd": "sed -i s/marathon_url,/url,/g /janitor.py && /janitor.py -v -r __ROLE__ -p __PRINCIPAL__ -z __ZNODE__ --auth_token=__TOKEN__", | |
| "cpus": 1, | |
| "mem": 128, | |
| "disk": 1, | |
| "instances": 1, | |
| "container": { | |
| "docker": { | |
| "image": "mesosphere/janitor:latest", | |
| "network": "HOST" | |
| }, | |
| "type": "DOCKER" | |
| } | |
| } | |
| ## generate-janitor-marathon-json.sh | |
| #!/usr/bin/env bash | |
| set -o errexit -o nounset -o pipefail | |
| framework_json=$1 | |
| jq -er '. | keys[]' "${1}" | while read key ; do | |
| id=$(jq -er ".[$key].id" "${framework_json}") | |
| name=$(jq -er ".[$key].name" "${framework_json}") | |
| role=$(jq -er ".[$key].role" "${framework_json}") | |
| principal=$(jq -er ".[$key].principal" "${framework_json}") | |
| znode="dcos-service-${name}" | |
| token=$(dcos config show core.dcos_acs_token) | |
| echo "Setting up janitor to cleanup framework: ${id} ${name} ${role} ${principal} ${znode}" | |
| sed -e "s|__ROLE__|${role}|g" \ | |
| -e "s|__PRINCIPAL__|${principal}|g" \ | |
| -e "s|__ZNODE__|${znode}|g" \ | |
| -e "s|__TOKEN__|${token}|g" \ | |
| -e "s|__NAME__|${name}|g" \ | |
| template-janitor-marathon.json > "janitor-${name}-marathon.json" | |
| done | |
| ## Add janitor app definitions to Marathon | |
| ## add-janitors-to-marathon.sh | |
| #!/usr/bin/env bash | |
| set -o errexit -o nounset -o pipefail | |
| for i in janitor*.json | |
| do | |
| dcos marathon app add $i | |
| done | |
| ## Remove janitor apps from Marathon | |
| ## remove-janitor-apps-from-marathon.sh | |
| #!/usr/bin/env bash | |
| set -o errexit -o nounset -o pipefail | |
| for i in $(dcos marathon app list --json | jq -er '.[] | select(.id | match("janitor")) | .id') | |
| do | |
| dcos marathon app remove $ | |
| done | |
| # Cleanup frameworks directly (without using Marathon/Docker) using https://github.com/mesosphere/framework-cleaner/raw/master/janitor.py | |
| # cleanup-frameworks.sh | |
| #!/usr/bin/env bash | |
| set -o nounset -o pipefail | |
| master_url=$(dcos config show core.dcos_url)/mesos/ | |
| marathon_url=$(dcos config show core.dcos_url)/marathon/v2/apps/ | |
| exhibitor_url=$(dcos config show core.dcos_url)/exhibitor/ | |
| token=$(dcos config show core.dcos_acs_token) | |
| jq -er '. | keys[]' "${1}" | while read -r key ; do | |
| id=$(jq -er ".[$key].id" "${1}") | |
| name=$(jq -er ".[$key].name" "${1}") | |
| role=$(jq -er ".[$key].role" "${1}") | |
| principal=$(jq -er ".[$key].principal" "${1}") | |
| znode="dcos-service-${name}" | |
| echo "Cleaning up ${id} ${name} ${role} ${principal} ${znode}" | |
| python janitor.py \ | |
| -v \ | |
| -m "${master_url}" \ | |
| -n "${marathon_url}" \ | |
| -e "${exhibitor_url}" \ | |
| -r "${role}" \ | |
| -p "${principal}" \ | |
| -z "${znode}" \ | |
| --auth_token="${token}" | |
| done | |
| ## list-inactive-non-star-frameworks.sh | |
| #/usr/bin/env/bash | |
| set -o errexit -o nounset -o pipefail | |
| curl -skSL \ | |
| -H "Authorization: token=$(dcos config show core.dcos_acs_token)" \ | |
| -H "Content-Type: application/json" \ | |
| $(dcos config show core.dcos_url)/mesos/state | \ | |
| jq -er '[.frameworks[] | select(.active==false) | select(.role!="*") | {id: .id, name: .name, role: .role, principal: .principal, active: .active}]' \ | |
| > inactive-non-star-frameworks.json | |
| ## teardown-inactive-frameworks.sh | |
| #!/usr/bin/env bash | |
| set -o nounset -o pipefail | |
| master_url=$(dcos config show core.dcos_url)/mesos/ | |
| token=$(dcos config show core.dcos_acs_token) | |
| jq -er '. | keys[]' "${1}" | while read -r key ; do | |
| id=$(jq -er ".[$key].id" "${1}") | |
| name=$(jq -er ".[$key].name" "${1}") | |
| role=$(jq -er ".[$key].role" "${1}") | |
| principal=$(jq -er ".[$key].principal" "${1}") | |
| echo "Tearing down inactive framework: ${id} ${name} ${role} ${principal}" | |
| curl -skSL \ | |
| -X POST \ | |
| -H "Authorization: token=$(dcos config show core.dcos_acs_token)" \ | |
| -H "Content-Type: application/json" \ | |
| -d "frameworkId=${id}" \ | |
| "${master_url}/master/teardown" | |
| done | |
| ## list-znodes.sh | |
| #/usr/bin/env bash | |
| set -o errexit -o nounset -o pipefail | |
| curl -skSL \ | |
| -H "Authorization: token=$(dcos config show core.dcos_acs_token)" \ | |
| -H "Content-Type: application/json" \ | |
| $(dcos config show core.dcos_url)/exhibitor/exhibitor/v1/explorer/node?key=/ | \ | |
| jq -er '.' | |
| ## list-spark-znodes.sh | |
| #/usr/bin/env bash | |
| set -o errexit -o nounset -o pipefail | |
| curl -skSL \ | |
| -H "Authorization: token=$(dcos config show core.dcos_acs_token)" \ | |
| -H "Content-Type: application/json" \ | |
| $(dcos config show core.dcos_url)/exhibitor/exhibitor/v1/explorer/node?key=/ | \ | |
| jq -er '[ .[] | select(.key | match("spark_mesos_dispatcher")) ]' \ | |
| > spark-dispatcher-znodes.json | |
| ## remove-znodes.sh | |
| #!/usr/bin/env bash | |
| set -o nounset -o pipefail | |
| master_url=$(dcos config show core.dcos_url)/mesos/ | |
| marathon_url=$(dcos config show core.dcos_url)/marathon/v2/apps/ | |
| exhibitor_url=$(dcos config show core.dcos_url)/exhibitor/ | |
| token=$(dcos config show core.dcos_acs_token) | |
| jq -er '. | keys[]' "${1}" | while read -r key ; do | |
| znode=$(jq -er ".[$key].title" "${1}") | |
| echo "Removing Znode: ${znode}" | |
| python janitor.py \ | |
| -v \ | |
| -m "${master_url}" \ | |
| -n "${marathon_url}" \ | |
| -e "${exhibitor_url}" \ | |
| -z "${znode}" \ | |
| --auth_token="${token}" | |
| done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment