Я хочу иметь возможность вызывать этот скрипт, используя ./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