#!/bin/bash current_path=$(pwd) cmdb_dir=$(cd ~ && pwd)/apps check_docker() { docker info >/dev/null 2>&1 if ! [ $? -eq 0 ]; then echo "error: please install and start docker firstly" exit 1 fi } check_docker_compose() { docker-compose --version >/dev/null 2>&1 if ! [ $? -eq 0 ]; then echo "error: please install docker-compose firstly" exit 1 fi } clone_repo() { local repo_url=$1 git clone $repo_url || { echo "error: failed to clone $repo_url" exit 1 } } change_directory() { local new_dir=$1 if ! mkdir -p "$new_dir"; then echo "error: failed to create directory $new_dir" exit 1 fi cd "$new_dir" || exit 1 } install_service() { echo "" echo "Installing the service $1..." change_directory "$cmdb_dir" if [ -d "${cmdb_dir}/cmdb" ]; then echo "directory ${cmdb_dir}/cmdb already exist" exit 1 fi clone_repo "https://githubfast.com/veops/cmdb.git" || clone_repo "https://github.com/veops/cmdb.git" cd ${cmdb_dir}/cmdb || exit 1 docker-compose pull if [ $? -eq 0 ]; then echo "successfully install package in directory: ${cmdb_dir}/cmdb" fi cd $current_path || exit 1 } start_service() { echo "Starting the service $1..." cd ${cmdb_dir}/cmdb docker-compose up -d cd $current_path } pause_service() { case $2 in "" | cmdb-api | cmdb-ui | cmdb-db | cmdb-cache) echo "Pausing the service ..." cd ${cmdb_dir}/cmdb || exit 1 docker-compose stop $2 cd $current_path || exit 1 ;; *) echo "Please input invalid service name: [cmdb-api|cmdb-ui|cmdb-db|cmdb-cache]" ;; esac } delete_service() { echo "Deleting the service ..." cd ${cmdb_dir}/cmdb || exit 1 docker-compose down cd $current_path || exit 1 } status_service() { cd ${cmdb_dir}/cmdb || exit 1 docker-compose ps cd $current_path || exit 1 } uninstall_service() { if ! [ -d "${cmdb_dir}/cmdb" ]; then echo "directory ${cmdb_dir}/cmdb already not exist" exit 0 fi read -p "Are you sure to uninstall the all the application and data? y/n:" input if [ $input = "y" ]; then echo "Uninstalling the service ..." cd ${cmdb_dir}/cmdb || exit 1 docker-compose down -v if [ $? -eq 0 ]; then rm -fr ${cmdb_dir}/cmdb fi cd $current_path || exit 1 fi } echo "Welcome to the CMDB service management script!" echo "" check_depend() { check_docker check_docker_compose } case $1 in install) check_depend install_service $2 ;; start) check_depend start_service $2 ;; status) check_depend status_service $2 ;; pause) check_depend pause_service $2 ;; delete) check_depend delete_service $2 ;; uninstall) check_depend uninstall_service $2 ;; *) echo "Usage: $0 [install|start|pause|uninstall]" echo "install Used to install the application" echo "start Used to start the application" echo "status Used to show status of the application" echo "pause Used to pause the application" echo "delete Used to delete the application" echo "uninstall Used to uninstall the application, include all data" ;; esac