Как автоматически вызвать скрипт с установленной переменной среды - PullRequest
0 голосов
/ 30 апреля 2018

Я хочу иметь возможность вызывать этот скрипт, используя ./script.sh -e "${env}" -a "${app}". -e (среда), а -a (приложение). По сути, устанавливая среду как stage или prod, она автоматически захватывает IP-адреса. Примечание: я использую Jenkins для этого и извлекаю код из GIT. Цель состоит не в том, чтобы жестко кодировать IP-адреса в сценарии, чтобы разрешить повторное использование кода.

Есть идеи?

#!/bin/bash

while [[ $# > 1 ]]
do
OPTIONS="$1"

case $OPTIONS in
    -a|--application)
    APPLICATION="$2"
    shift # past argument
    ;;
    -s|--ip)
    HOSTS_STAGE="$2"
    shift # past argument
    ;;
    -p|--ip)
    HOSTS_PROD="$2"
    shift # past argument
    ;;
    --default)
    DEFAULT=YES
    ;;
    *)
            # unknown option
    ;;
esac
shift # past argument or value
done

echo "########################################"
echo "##  OS Updates on ${APPLICATION}  ##"
echo "########################################"


if [[ "${ENVIRONMENT}" == 'stage' ]]; then
IPS="${HOSTS_STAGE}"

elif [[ "${ENVIRONMENT}" == 'prod' ]]; then
IPS="${HOSTS_PROD}"

fi


echo "---------------------------------------"
echo "##  Performing update in ${ENVIRONMENT}"
echo "---------------------------------------"

for ip in $IPS; do

    echo "---------------------------------------"
    echo "##  Running yum update on ${ip}"
    echo "---------------------------------------"

    ssh -i "${id_rsa}" -o StrictHostKeyChecking=no dvopsadmin@${ip} "df -h"
    done

   if [[ ${REBOOT} == y ]]; then
   for ip in $IPS; do
       echo "---------------------------------------"
       echo "## Rebooting server on ${ip}"
       echo "---------------------------------------"

       ssh -i "${id_rsa}" -o StrictHostKeyChecking=no dvopsadmin@${ip} "uname -a"
       done
   else
      echo "------------------------------------------"
      echo "##  Updates alredy performed withot reboot"
      echo "------------------------------------------"

   fi

1 Ответ

0 голосов
/ 30 апреля 2018

Я рекомендую использовать Плагин EnvInject . Вы можете использовать этот плагин для установки переменных env в верхней части вашего проекта Git. Проверьте ссылку для получения инструкций. Вы можете создать две переменные env, например, APP & ENV.

Затем в разделе «Выполнить оболочку» вы можете использовать переменные env.

./script.sh -e "${ENV}" -a "${APP}"

EDIT:

if [ "${ENVIRONMENT}" == 'stage' ]; then 
    IP="${IP_S[@]}" 
elif [ "${ENVIRONMENT}" == 'prod' ]; then 
    IP="${IP_P}" 
fi 

for host in ${IP}; do 

    echo "---------------------------------------" 
    echo "## Running yum update on ${host}" 
    echo "---------------------------------------" 


    if [ "${REBOOT}" == 'y' ]; then 
        ssh -i "${id_rsa}" -o StrictHostKeyChecking=no dvopsadmin@${host} "uname -a; df -h" 
    elif [ "${REBOOT}" == 'n' ]; then 
        ssh -i "${id_rsa}" -o StrictHostKeyChecking=no user@${host} "uname -a" 
    fi 
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...