diff --git a/aws/dhcp.conf b/aws/dhcp.conf new file mode 100644 index 0000000..4f6c3fd --- /dev/null +++ b/aws/dhcp.conf @@ -0,0 +1,10 @@ +DEVICE=eth0 +BOOTPROTO=none +ONBOOT=yes +TYPE=Ethernet +USERCTL=yes +PEERDNS=yes +DHCPV6C=yes +DHCPV6C_OPTIONS=-nw +PERSISTENT_DHCLIENT=yes +DHCP_ARP_CHECK=no \ No newline at end of file diff --git a/aws/reiphandler.service b/aws/reiphandler.service new file mode 100644 index 0000000..d78a0d6 --- /dev/null +++ b/aws/reiphandler.service @@ -0,0 +1,9 @@ +[Unit] +Description=Zerto ReIP handler for RHEL + +[Install] +WantedBy=multi-user.target + +[Service] +ExecStart=/etc/init.d/reiphandler start +ExecStop=/etc/init.d/reiphandler stop diff --git a/aws/reiphandler.sh b/aws/reiphandler.sh new file mode 100644 index 0000000..1be91b9 --- /dev/null +++ b/aws/reiphandler.sh @@ -0,0 +1,306 @@ +#!/usr/bin/env bash +#reip_handler.sh + + +# chkconfig: 345 99 10 +# description: Script to run a on start up and perform re-ip if needed + +LOCKFILE=/var/lock/subsys/reiphandler +PROCESS_LOG_FILE=-target-folder-reip_handler.log +ONE_TIME_FILE=-target-folder-drctexecflag + +start(){ + # Touch our lock file so that stopping will work correctly + touch ${LOCKFILE} + VERSION=$(rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')) + + HV_RESPONSE=$(dmidecode | grep -i -E 'amazon') + #IS_NM_INSTALLED=$(service NetworkManager status | grep 'active') + + IS_RUN_WITHIN_VCENTER=${#HV_RESPONSE} + if [ $IS_RUN_WITHIN_VCENTER -gt 0 ]; + then + + FULL_PATH=/etc/sysconfig/network-scripts/ + echo $(date -u)' Creating network scripts backup' >> $PROCESS_LOG_FILE + tar -zcvf /etc/reip/networkscripts.tar.gz $FULL_PATH + tar -zcvf /etc/reip/rules.tar.gz /etc/udev/rules.d/ + tar -zcvf /etc/reip/network.tar.gz /etc/sysconfig/network + + + if [ -f /etc/udev/rules.d/70-persistent-net.rules ]; + then + rm -rf /etc/udev/rules.d/70-persistent-net.rules + rm -rf /lib/udev/rules.d/75-persistent-net-generator.rules + #reboot + fi + + IS_IFNAMES_KICKED=$(cat /etc/default/grub | grep -E 'net.ifnames=0') + if [ ${#IS_IFNAMES_KICKED} -eq 0 ]; + then + echo $(date -u)' GRUB_CMDLINE_LINUX="net.ifnames=0"' >>/etc/default/grub + fi + + CONFIG_FILES=$(ls $FULL_PATH -I "ifcfg-lo" | grep "ifcfg*") + INDEX=0 + echo $(date -u)' Renaming all configuration not fits ethX standard' >> $PROCESS_LOG_FILE + SOURCE_DATA_FILE_PATH=/etc/reip/dhcp.conf + for CONFIG_FILE in $CONFIG_FILES + do + echo $(date -u)' '$CONFIG_FILE >> $PROCESS_LOG_FILE + + SOURCE_PATH=$FULL_PATH$CONFIG_FILE + TARGET_PATH=$FULL_PATH'ifcfg-eth'$INDEX + echo $(date -u) ' Source file:'$SOURCE_PATH >> $PROCESS_LOG_FILE + echo $(date -u) ' Target file:'$TARGET_PATH >> $PROCESS_LOG_FILE + + mv $SOURCE_PATH $TARGET_PATH + + cat $SOURCE_DATA_FILE_PATH > $TARGET_PATH + INDEX=$((INDEX + 1)) + done + + echo $(date -u)' ReIP handler watchdog started' >> $PROCESS_LOG_FILE + IS_NETWORK_RESTART_REQUIRED="" + echo $(date -u)' We're not in VC. May be AWS. Let's give it a chance. Continue processing...' >> $PROCESS_LOG_FILE + echo $(date -u)' Checking for static IP configuration' >> $PROCESS_LOG_FILE + CONFIG_FILE_PATTERN=/etc/sysconfig/network-scripts/ifcfg-eth* + + COMMON_NETWORK_FILE=/etc/sysconfig/network + echo $(date -u)' Processing GATEWAY section by removing it if exists' >> $PROCESS_LOG_FILE + TMP=$(cat $COMMON_NETWORK_FILE | grep -v GATEWAY) + echo $TMP > $COMMON_NETWORK_FILE + + for CONFIG_FILE_PATH in $CONFIG_FILE_PATTERN + do + echo $(date -u)' Starting test for file '$CONFIG_FILE_PATH >> $PROCESS_LOG_FILE + IS_STATIC_IP=$(cat $CONFIG_FILE_PATH | grep -E 'BOOTPROTO=static|BOOTPROTO=none') + echo $(date -u)' Static ip test returned '$IS_STATIC_IP >> $PROCESS_LOG_FILE + if [ ! -z $IS_STATIC_IP ]; + then + echo $(date -u)" Static IP configuration discovered" >> $PROCESS_LOG_FILE + echo $(date -u)" Processing "$CONFIG_FILE_PATH" file" >> $PROCESS_LOG_FILE + FILE_NAME=$(basename $CONFIG_FILE_PATH) + INTERFACE_NAME=${FILE_NAME#"ifcfg-"} + INTERFACE_NAME=${INTERFACE_NAME%"ifcfg-"} + echo $(date -u)" Interface name "$INTERFACE_NAME" extracted" >> $PROCESS_LOG_FILE + # EDIT instead of replace + echo $(date -u)" Updating configuration file" >> $PROCESS_LOG_FILE + #CONFIG_FILE_PATH=/home/ec2-user/data.txt + + echo $(date -u)" Processing DEVICE section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep DEVICE) + NEW_VALUE='DEVICE="'$INTERFACE_NAME'"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing NAME section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep NAME) + NEW_VALUE='NAME="'$INTERFACE_NAME'"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing BOOTPROTO section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep BOOTPROTO) + NEW_VALUE='BOOTPROTO="dhcp"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing ONBOOT section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep ONBOOT) + NEW_VALUE='ONBOOT="yes"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing TYPE section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep TYPE) + NEW_VALUE='TYPE="Ethernet"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing USERCTL section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep USERCTL) + NEW_VALUE='USERCTL="yes"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing IPV6INIT section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep IPV6INIT) + NEW_VALUE='IPV6INIT="no"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing NM_CONTROLLED section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep NM_CONTROLLED=yes) + NEW_VALUE='NM_CONTROLLED=no"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing PERSISTENT_DHCLIENT section">> $PROCESS_LOG_FILE + echo 'PERSISTENT_DHCLIENT="1"' >> $CONFIG_FILE_PATH + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing GATEWAY section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep GATEWAY) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing HWADDR section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep HWADDR) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing BROADCAST section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep BROADCAST) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing IPADDR section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep IPADDR) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing NETMASK section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep NETMASK) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing NETWORK section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep NETWORK) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing DNS1 section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep DNS1) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + + echo $(date -u)" Processing DNS2 section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep DNS2) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing IPV4_FAILURE_FATAL section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep IPV4_FAILURE_FATAL) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing DEFROUTE section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep DEFROUTE) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing PREFIX section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep PREFIX) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Clean up empty lines">> $PROCESS_LOG_FILE + sed -i '/^$/d' $CONFIG_FILE_PATH + + IS_NETWORK_RESTART_REQUIRED="True" + else + echo $(date -u)" IP set to DHCP "$IS_STATIC_IP >> $PROCESS_LOG_FILE + fi + done + if [ ! -z $IS_NETWORK_RESTART_REQUIRED ]; + then + echo $(date -u)" Restarting network" >> $PROCESS_LOG_FILE + service network restart + rm -rf /etc/init.d/reiphandler + echo $(date -u)" Preparing to reboot" >> $PROCESS_LOG_FILE + reboot + fi + echo $(date -u)" Done" >> $PROCESS_LOG_FILE + echo $(date -u)" Removing Lock File" >> $PROCESS_LOG_FILE +# fi + else + echo $(date -u)" We're in VC. Suppressing all activity..." >> $PROCESS_LOG_FILE + fi + rm -rf ${LOCKFILE} +} + +stop(){ +# Remove our lock file +rm -rf ${LOCKFILE} +# Run that command that we wanted to run +echo $(date -u)" ReIP handler stopped" >> $PROCESS_LOG_FILE +} + +case "$1" in + start) start;; + stop) stop;; + *) + echo $"Usage: $0 {start|stop}" + exit 1 +esac +exit 0 diff --git a/aws/reipinstaller.sh b/aws/reipinstaller.sh new file mode 100644 index 0000000..b7cbe0b --- /dev/null +++ b/aws/reipinstaller.sh @@ -0,0 +1,55 @@ +#!/bin/sh +LOGS_FOLDER=/etc/reip/ +INSTALLATION_LOG=/tmp/reip/installation.log +HANDLER_NAME='reiphandler.sh' +CONF_FILE_NAME='dhcp.conf' +REIP_HANDLER_PATH=$LOGS_FOLDER$HANDLER_NAME +CONF_FILE_PATH=$LOGS_FOLDER$CONF_FILE_NAME + +chmod +x ./reipuninstaller.sh +./reipuninstaller.sh $INSTALLATION_LOG + +mkdir $LOGS_FOLDER + +echo $(date -u) "Copying handler file to it's permanent location">>$INSTALLATION_LOG +cp ./reiphandler.sh $REIP_HANDLER_PATH +cp ./dhcp.conf $CONF_FILE_PATH + +echo $(date -u) "Generating service log file path">>$INSTALLATION_LOG +sed -i -e "s|-target-folder-|$LOGS_FOLDER|" $REIP_HANDLER_PATH + +echo $(date -u) "Installing Handler">>$INSTALLATION_LOG +cp $REIP_HANDLER_PATH /etc/init.d/reiphandler + +echo $(date -u) "Granting service execution permissions">>$INSTALLATION_LOG +chmod +x /etc/init.d/reiphandler + +echo $(date -u) "Adding service to startup sequence">>$INSTALLATION_LOG +chkconfig --add reiphandler + +echo $(date -u) "Adding handler to startup sequence">>$INSTALLATION_LOG +VERSION=$(rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')) +echo $(date -u) "Resolved OS version is:"$VERSION>>$INSTALLATION_LOG +if [[ $VERSION == 7.* ]] ; + then + echo $(date -u) "Copying .service unit file to target folder">>$INSTALLATION_LOG + + cp ./reiphandler.service /etc/systemd/system/ + + echo $(date -u) "Adding service to startup sequence for RHEL 7.x">>$INSTALLATION_LOG + systemctl enable reiphandler + + OLD_VALUE='#add_drivers+="' + NEW_VALUE='add_drivers+="nvme xen-blkfront' + IS_XEN_EXISTS=$(cat /etc/dracut.conf | grep 'nvme xen-blkfront') + if [ ${#IS_XEN_EXISTS} -eq 0 ]; + then + echo $(date -u)" Xen Definition not found. Adding xen drivers" >> $INSTALLATION_LOG + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" /etc/dracut.conf + dracut -f -v >> $INSTALLATION_LOG + fi + fi + +#ln -s /etc/init.d/reiphandler /etc/rc.d/ +echo $(date -u) "Starting service">>$INSTALLATION_LOG +service reiphandler start diff --git a/aws/reipuninstaller.sh b/aws/reipuninstaller.sh new file mode 100644 index 0000000..7ceb362 --- /dev/null +++ b/aws/reipuninstaller.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +INSTALLATION_LOG=$1 + +echo 'Stopping service'>>$INSTALLATION_LOG +service reiphandler stop +echo 'Removing service source'>>$INSTALLATION_LOG +rm -rf /etc/reip/ +echo 'Removing unit file'>>$INSTALLATION_LOG +rm -rf /etc/systemd/system/reiphandler.service +echo 'Removing service backup'>>$INSTALLATION_LOG +rm -rf reip_handler.sh +echo 'Removing service installer'>>$INSTALLATION_LOG +rm -rf installer.sh +echo 'Removing service service'>>$INSTALLATION_LOG +rm -rf /etc/init.d/reiphandler +echo 'Success'>>$INSTALLATION_LOG diff --git a/azure/dhcp.conf b/azure/dhcp.conf new file mode 100644 index 0000000..4f6c3fd --- /dev/null +++ b/azure/dhcp.conf @@ -0,0 +1,10 @@ +DEVICE=eth0 +BOOTPROTO=none +ONBOOT=yes +TYPE=Ethernet +USERCTL=yes +PEERDNS=yes +DHCPV6C=yes +DHCPV6C_OPTIONS=-nw +PERSISTENT_DHCLIENT=yes +DHCP_ARP_CHECK=no \ No newline at end of file diff --git a/azure/reiphandler.service b/azure/reiphandler.service new file mode 100644 index 0000000..d78a0d6 --- /dev/null +++ b/azure/reiphandler.service @@ -0,0 +1,9 @@ +[Unit] +Description=Zerto ReIP handler for RHEL + +[Install] +WantedBy=multi-user.target + +[Service] +ExecStart=/etc/init.d/reiphandler start +ExecStop=/etc/init.d/reiphandler stop diff --git a/azure/reiphandler.sh b/azure/reiphandler.sh new file mode 100644 index 0000000..f859d91 --- /dev/null +++ b/azure/reiphandler.sh @@ -0,0 +1,306 @@ +#!/usr/bin/env bash +#reip_handler.sh + + +# chkconfig: 345 99 10 +# description: Script to run a on start up and perform re-ip if needed + +LOCKFILE=/var/lock/subsys/reiphandler +PROCESS_LOG_FILE=-target-folder-reip_handler.log +ONE_TIME_FILE=-target-folder-drctexecflag + +start(){ + # Touch our lock file so that stopping will work correctly + touch ${LOCKFILE} + VERSION=$(rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')) + + HV_RESPONSE=$(dmidecode | grep -i -E 'Microsoft') + #IS_NM_INSTALLED=$(service NetworkManager status | grep 'active') + + IS_RUN_WITHIN_VCENTER=${#HV_RESPONSE} + if [ $IS_RUN_WITHIN_VCENTER -gt 0 ]; + then + + FULL_PATH=/etc/sysconfig/network-scripts/ + echo $(date -u)' Creating network scripts backup' >> $PROCESS_LOG_FILE + tar -zcvf /etc/reip/networkscripts.tar.gz $FULL_PATH + tar -zcvf /etc/reip/rules.tar.gz /etc/udev/rules.d/ + tar -zcvf /etc/reip/network.tar.gz /etc/sysconfig/network + + + if [ -f /etc/udev/rules.d/70-persistent-net.rules ]; + then + rm -rf /etc/udev/rules.d/70-persistent-net.rules + rm -rf /lib/udev/rules.d/75-persistent-net-generator.rules + #reboot + fi + + IS_IFNAMES_KICKED=$(cat /etc/default/grub | grep -E 'net.ifnames=0') + if [ ${#IS_IFNAMES_KICKED} -eq 0 ]; + then + echo $(date -u)' GRUB_CMDLINE_LINUX="net.ifnames=0"' >>/etc/default/grub + fi + + CONFIG_FILES=$(ls $FULL_PATH -I "ifcfg-lo" | grep "ifcfg*") + INDEX=0 + echo $(date -u)' Renaming all configuration not fits ethX standard' >> $PROCESS_LOG_FILE + SOURCE_DATA_FILE_PATH=/etc/reip/dhcp.conf + for CONFIG_FILE in $CONFIG_FILES + do + echo $(date -u)' '$CONFIG_FILE >> $PROCESS_LOG_FILE + + SOURCE_PATH=$FULL_PATH$CONFIG_FILE + TARGET_PATH=$FULL_PATH'ifcfg-eth'$INDEX + echo $(date -u) ' Source file:'$SOURCE_PATH >> $PROCESS_LOG_FILE + echo $(date -u) ' Target file:'$TARGET_PATH >> $PROCESS_LOG_FILE + + mv $SOURCE_PATH $TARGET_PATH + + cat $SOURCE_DATA_FILE_PATH > $TARGET_PATH + INDEX=$((INDEX + 1)) + done + + echo $(date -u)' ReIP handler watchdog started' >> $PROCESS_LOG_FILE + IS_NETWORK_RESTART_REQUIRED="" + echo $(date -u)' We're not in VC. May be AWS. Let's give it a chance. Continue processing...' >> $PROCESS_LOG_FILE + echo $(date -u)' Checking for static IP configuration' >> $PROCESS_LOG_FILE + CONFIG_FILE_PATTERN=/etc/sysconfig/network-scripts/ifcfg-eth* + + COMMON_NETWORK_FILE=/etc/sysconfig/network + echo $(date -u)' Processing GATEWAY section by removing it if exists' >> $PROCESS_LOG_FILE + TMP=$(cat $COMMON_NETWORK_FILE | grep -v GATEWAY) + echo $TMP > $COMMON_NETWORK_FILE + + for CONFIG_FILE_PATH in $CONFIG_FILE_PATTERN + do + echo $(date -u)' Starting test for file '$CONFIG_FILE_PATH >> $PROCESS_LOG_FILE + IS_STATIC_IP=$(cat $CONFIG_FILE_PATH | grep -E 'BOOTPROTO=static|BOOTPROTO=none') + echo $(date -u)' Static ip test returned '$IS_STATIC_IP >> $PROCESS_LOG_FILE + if [ ! -z $IS_STATIC_IP ]; + then + echo $(date -u)" Static IP configuration discovered" >> $PROCESS_LOG_FILE + echo $(date -u)" Processing "$CONFIG_FILE_PATH" file" >> $PROCESS_LOG_FILE + FILE_NAME=$(basename $CONFIG_FILE_PATH) + INTERFACE_NAME=${FILE_NAME#"ifcfg-"} + INTERFACE_NAME=${INTERFACE_NAME%"ifcfg-"} + echo $(date -u)" Interface name "$INTERFACE_NAME" extracted" >> $PROCESS_LOG_FILE + # EDIT instead of replace + echo $(date -u)" Updating configuration file" >> $PROCESS_LOG_FILE + #CONFIG_FILE_PATH=/home/ec2-user/data.txt + + echo $(date -u)" Processing DEVICE section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep DEVICE) + NEW_VALUE='DEVICE="'$INTERFACE_NAME'"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing NAME section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep NAME) + NEW_VALUE='NAME="'$INTERFACE_NAME'"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing BOOTPROTO section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep BOOTPROTO) + NEW_VALUE='BOOTPROTO="dhcp"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing ONBOOT section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep ONBOOT) + NEW_VALUE='ONBOOT="yes"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing TYPE section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep TYPE) + NEW_VALUE='TYPE="Ethernet"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing USERCTL section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep USERCTL) + NEW_VALUE='USERCTL="yes"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing IPV6INIT section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep IPV6INIT) + NEW_VALUE='IPV6INIT="no"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing NM_CONTROLLED section">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep NM_CONTROLLED=yes) + NEW_VALUE='NM_CONTROLLED=no"' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing PERSISTENT_DHCLIENT section">> $PROCESS_LOG_FILE + echo 'PERSISTENT_DHCLIENT="1"' >> $CONFIG_FILE_PATH + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing GATEWAY section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep GATEWAY) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing HWADDR section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep HWADDR) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing BROADCAST section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep BROADCAST) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing IPADDR section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep IPADDR) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing NETMASK section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep NETMASK) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing NETWORK section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep NETWORK) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing DNS1 section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep DNS1) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + + echo $(date -u)" Processing DNS2 section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep DNS2) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing IPV4_FAILURE_FATAL section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep IPV4_FAILURE_FATAL) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing DEFROUTE section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep DEFROUTE) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Processing PREFIX section by removing it if exists">> $PROCESS_LOG_FILE + OLD_VALUE=$(cat $CONFIG_FILE_PATH | grep PREFIX) + NEW_VALUE='' + if [ ! -z $OLD_VALUE ]; + then + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" $CONFIG_FILE_PATH + fi + cat $CONFIG_FILE_PATH>> $PROCESS_LOG_FILE + + echo $(date -u)" Clean up empty lines">> $PROCESS_LOG_FILE + sed -i '/^$/d' $CONFIG_FILE_PATH + + IS_NETWORK_RESTART_REQUIRED="True" + else + echo $(date -u)" IP set to DHCP "$IS_STATIC_IP >> $PROCESS_LOG_FILE + fi + done + if [ ! -z $IS_NETWORK_RESTART_REQUIRED ]; + then + echo $(date -u)" Restarting network" >> $PROCESS_LOG_FILE + service network restart + rm -rf /etc/init.d/reiphandler + echo $(date -u)" Preparing to reboot" >> $PROCESS_LOG_FILE + reboot + fi + echo $(date -u)" Done" >> $PROCESS_LOG_FILE + echo $(date -u)" Removing Lock File" >> $PROCESS_LOG_FILE +# fi + else + echo $(date -u)" We're in VC. Suppressing all activity..." >> $PROCESS_LOG_FILE + fi + rm -rf ${LOCKFILE} +} + +stop(){ +# Remove our lock file +rm -rf ${LOCKFILE} +# Run that command that we wanted to run +echo $(date -u)" ReIP handler stopped" >> $PROCESS_LOG_FILE +} + +case "$1" in + start) start;; + stop) stop;; + *) + echo $"Usage: $0 {start|stop}" + exit 1 +esac +exit 0 diff --git a/azure/reipinstaller.sh b/azure/reipinstaller.sh new file mode 100644 index 0000000..b7cbe0b --- /dev/null +++ b/azure/reipinstaller.sh @@ -0,0 +1,55 @@ +#!/bin/sh +LOGS_FOLDER=/etc/reip/ +INSTALLATION_LOG=/tmp/reip/installation.log +HANDLER_NAME='reiphandler.sh' +CONF_FILE_NAME='dhcp.conf' +REIP_HANDLER_PATH=$LOGS_FOLDER$HANDLER_NAME +CONF_FILE_PATH=$LOGS_FOLDER$CONF_FILE_NAME + +chmod +x ./reipuninstaller.sh +./reipuninstaller.sh $INSTALLATION_LOG + +mkdir $LOGS_FOLDER + +echo $(date -u) "Copying handler file to it's permanent location">>$INSTALLATION_LOG +cp ./reiphandler.sh $REIP_HANDLER_PATH +cp ./dhcp.conf $CONF_FILE_PATH + +echo $(date -u) "Generating service log file path">>$INSTALLATION_LOG +sed -i -e "s|-target-folder-|$LOGS_FOLDER|" $REIP_HANDLER_PATH + +echo $(date -u) "Installing Handler">>$INSTALLATION_LOG +cp $REIP_HANDLER_PATH /etc/init.d/reiphandler + +echo $(date -u) "Granting service execution permissions">>$INSTALLATION_LOG +chmod +x /etc/init.d/reiphandler + +echo $(date -u) "Adding service to startup sequence">>$INSTALLATION_LOG +chkconfig --add reiphandler + +echo $(date -u) "Adding handler to startup sequence">>$INSTALLATION_LOG +VERSION=$(rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')) +echo $(date -u) "Resolved OS version is:"$VERSION>>$INSTALLATION_LOG +if [[ $VERSION == 7.* ]] ; + then + echo $(date -u) "Copying .service unit file to target folder">>$INSTALLATION_LOG + + cp ./reiphandler.service /etc/systemd/system/ + + echo $(date -u) "Adding service to startup sequence for RHEL 7.x">>$INSTALLATION_LOG + systemctl enable reiphandler + + OLD_VALUE='#add_drivers+="' + NEW_VALUE='add_drivers+="nvme xen-blkfront' + IS_XEN_EXISTS=$(cat /etc/dracut.conf | grep 'nvme xen-blkfront') + if [ ${#IS_XEN_EXISTS} -eq 0 ]; + then + echo $(date -u)" Xen Definition not found. Adding xen drivers" >> $INSTALLATION_LOG + sed -i -e "s|$OLD_VALUE|$NEW_VALUE|" /etc/dracut.conf + dracut -f -v >> $INSTALLATION_LOG + fi + fi + +#ln -s /etc/init.d/reiphandler /etc/rc.d/ +echo $(date -u) "Starting service">>$INSTALLATION_LOG +service reiphandler start diff --git a/azure/reipuninstaller.sh b/azure/reipuninstaller.sh new file mode 100644 index 0000000..7ceb362 --- /dev/null +++ b/azure/reipuninstaller.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +INSTALLATION_LOG=$1 + +echo 'Stopping service'>>$INSTALLATION_LOG +service reiphandler stop +echo 'Removing service source'>>$INSTALLATION_LOG +rm -rf /etc/reip/ +echo 'Removing unit file'>>$INSTALLATION_LOG +rm -rf /etc/systemd/system/reiphandler.service +echo 'Removing service backup'>>$INSTALLATION_LOG +rm -rf reip_handler.sh +echo 'Removing service installer'>>$INSTALLATION_LOG +rm -rf installer.sh +echo 'Removing service service'>>$INSTALLATION_LOG +rm -rf /etc/init.d/reiphandler +echo 'Success'>>$INSTALLATION_LOG