From: Andy Witter Date: Fri, 26 Apr 2013 22:14:04 +0000 (-0400) Subject: Add generation of icinga/nagios hosts.cfg X-Git-Tag: GenaSYS-2.3.6~38 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=edd647f96211a6f393b221ac628e1bf69b67f248;p=contrib%2Fpines%2Fgenasys.git Add generation of icinga/nagios hosts.cfg --- diff --git a/GenaSYS.sh b/GenaSYS.sh index 3ef6c93..5a5f610 100755 --- a/GenaSYS.sh +++ b/GenaSYS.sh @@ -25,8 +25,8 @@ PURPOSE_="Generate config files needed for Evergreen-ILS Cluster" SYNOPSIS_="$NAME_" REQUIRES_="standard GNU commands, apt, dpkg" - VERSION_="1.01" - DATE_="2010-09-18; last update: 2013-04-22" + VERSION_="1.02" + DATE_="2010-09-18; last update: 2013-04-26" AUTHOR_="Andy Witter " URL_="http://evergreen-ils.org" CATEGORY_="devel" @@ -67,6 +67,7 @@ TMPZONEFILE="${TMPFOLDER}/tmpzonefile.txt" TMPREVZONEFILE="${TMPFOLDER}/tmprevzonefile.txt" TMPOSRFNODES="${TMPFOLDER}/tmposrfnodes" TMPOPENSRF_XML="${TMPFOLDER}/tmpopensrf.xml" +TMPNAGIHOSTS="${TMPFOLDER}/hosts.cfg" PSQL_VERSION="9.1" [ -z $CONFIG_FILE ] && CONFIG_FILE="$WD/genasys.conf" NEW_CONFIG_FILE="$OUTDIR/genasys.conf" @@ -1096,6 +1097,9 @@ PRFX="$HOSTNAME_PREFIX" ### Only backup machines. MACHINES_BACKUP="${PRFX}-backup01" + + ### Only monitor machines. + MACHINES_MONITOR="${PRFX}-monitor01" else @@ -1127,8 +1131,13 @@ else ### Only backup machines. MACHINES_BACKUP="backup01" + + ### Only monitor machines. + MACHINES_MONITOR="monitor01" fi +HOSTNAMES_NO_BRICKS="lvs01 lvs02 db01 db02 db03 logger01 utility01 sip01 sip02 reporter01 memcache01 memcache02 monitor01 backup01 admin01" + ### Setup Privatenet IP for all hosts except bricks. LVS01_PRIVATE_SHARED_IP="${PRIVATENET}.1" LVS01_PRIVATE_IP="${PRIVATENET}.2" @@ -1492,6 +1501,11 @@ for BRICK in $(seq $BRICKCOUNT) sed -i 's^ )^)^g' ${OUTDIR}/$(eval echo \$BRICKHOSTNAME${BRICK})/$(eval echo \$BRICKHOSTNAME${BRICK})-head/openils/conf/.oils_brick.cfg eval cat $TEMPLATEDIR/oils_brick.cfg-footer >> ${OUTDIR}/$(eval echo \$BRICKHOSTNAME${BRICK})/$(eval echo \$BRICKHOSTNAME${BRICK})-head/openils/conf/.oils_brick.cfg BRICK_HEAD_LIST="$BRICK_HEAD_LIST$(eval printf "\$BRICKHOSTNAME${BRICK}-head\ ")" + ### Monitoring + printf 'define host {\n' >>$TMPNAGIHOSTS;eval printf "\\\thost_name\\\t\$BRICKHOSTNAME${BRICK}-head\\\n" >>$TMPNAGIHOSTS + eval printf "\\\talias\\\t\\\t\$BRICKHOSTNAME${BRICK}-head\\\n" >>$TMPNAGIHOSTS + eval printf "\\\taddress\\\t\\\t\$BRICKHOSTNAME${BRICK}_HEAD_IP\\\n" >>$TMPNAGIHOSTS + printf '\tuse\t\tgeneric-host\n}\n' >>$TMPNAGIHOSTS done @@ -1603,8 +1617,12 @@ for BRICK in $(seq $BRICKCOUNT) eval printf "${BRICK}0\\\tIN\\\tPTR\\\t\$BRICKHOSTNAME${BRICK}-head.${CLUSTERDOMAINNAME}.\\\n" >> $TMPREVZONEFILE eval printf "${BRICK}0\\\tIN\\\tPTR\\\tpublic.\$BRICKHOSTNAME${BRICK}-head.${CLUSTERDOMAINNAME}.\\\n" >> $TMPREVZONEFILE eval printf "${BRICK}0\\\tIN\\\tPTR\\\tprivate.\$BRICKHOSTNAME${BRICK}-head.${CLUSTERDOMAINNAME}.\\\n" >> $TMPREVZONEFILE - BRICK_HEAD_LIST="$BRICK_HEAD_LIST $(eval printf "\$BRICKHOSTNAME${BRICK}-head\ ")" - echo $BRICK_HEAD_LIST + BRICK_HEAD_LIST="$BRICK_HEAD_LIST$(eval printf "\$BRICKHOSTNAME${BRICK}-head\ ")" + ### Monitoring + printf 'define host {\n' >>$TMPNAGIHOSTS;eval printf "\\\thost_name\\\t\$BRICKHOSTNAME${BRICK}-head\\\n" >>$TMPNAGIHOSTS + eval printf "\\\talias\\\t\\\t\$BRICKHOSTNAME${BRICK}-head\\\n" >>$TMPNAGIHOSTS + eval printf "\\\taddress\\\t\\\t\$BRICKHOSTNAME${BRICK}_HEAD_IP\\\n" >>$TMPNAGIHOSTS + printf '\tuse\t\tgeneric-host\n}\n' >>$TMPNAGIHOSTS for DRONE in $(seq $DRONECOUNT) do typeset TMPBRICKDRONES="$(eval echo \$BRICKHOSTNAME${BRICK}-head)_drones.txt" @@ -1629,7 +1647,7 @@ for BRICK in $(seq $BRICKCOUNT) eval cp -f $TEMPLATEDIR/opensrf_core.xml "${OUTDIR}/\$BRICKHOSTNAME${BRICK}/\$BRICKHOSTNAME${BRICK}-drone0${DRONE}/openils/conf" eval sed -i "s^Brick_head_Fqdn^$(eval echo \$BRICKHOSTNAME${BRICK}-drone0${DRONE}).$CLUSTERDOMAINNAME^g" "${OUTDIR}/\$BRICKHOSTNAME${BRICK}/\$BRICKHOSTNAME${BRICK}-drone0${DRONE}/openils/conf/opensrf_core.xml" #eval sed -i "s^OpenSRF_Password^$OPENSRF_PASSWORD^g" "${OUTDIR}/\$BRICKHOSTNAME${BRICK}/\$BRICKHOSTNAME${BRICK}-drone0${DRONE}/openils/conf/opensrf_core.xml" - sed -i "s^OpenSRF_Password^$(echo $OPENSRF_PASSWORD | sed -e 's^&^\\\&^g' -e 's/\^/\\\^/g')^g" "${OUTDIR}/\$BRICKHOSTNAME${BRICK}/\$BRICKHOSTNAME${BRICK}-drone0${DRONE}/openils/conf/opensrf_core.xml" + eval sed -i "s^OpenSRF_Password^$(echo $OPENSRF_PASSWORD | sed -e 's^&^\\\&^g' -e 's/\^/\\\^/g')^g" "${OUTDIR}/\$BRICKHOSTNAME${BRICK}/\$BRICKHOSTNAME${BRICK}-drone0${DRONE}/openils/conf/opensrf_core.xml" ### drone gets fstab eval cp -f $TEMPLATEDIR/interfaces "${OUTDIR}/\$BRICKHOSTNAME${BRICK}/\$BRICKHOSTNAME${BRICK}-drone0${DRONE}/etc/network" eval cp -f $TMPFOLDER/ntp.conf "${OUTDIR}/\$BRICKHOSTNAME${BRICK}/\$BRICKHOSTNAME${BRICK}-drone0${DRONE}/etc" @@ -1674,7 +1692,13 @@ for BRICK in $(seq $BRICKCOUNT) >> $TMPHOSTS eval printf "\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}\\\tA\\\t\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}_IP\\\n" >> $TMPZONEFILE eval printf "${BRICK}${DRONE}\\\tIN\\\tPTR\\\t\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}.${CLUSTERDOMAINNAME}.\\\n" >> $TMPREVZONEFILE + ### Monitoring + printf 'define host {\n' >>$TMPNAGIHOSTS;eval printf "\\\thost_name\\\t\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}\\\n" >>$TMPNAGIHOSTS + eval printf "\\\talias\\\t\\\t\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}\\\n" >>$TMPNAGIHOSTS + eval printf "\\\taddress\\\t\\\t\$BRICKHOSTNAME${BRICK}_DRONE${DRONE}_IP\\\n" >>$TMPNAGIHOSTS + printf '\tuse\t\tgeneric-host\n}\n' >>$TMPNAGIHOSTS done + #echo printf ")\n" >> ${OUTDIR}/$(eval echo \$BRICKHOSTNAME${BRICK})/$(eval echo \$BRICKHOSTNAME${BRICK})-head/openils/conf/.oils_brick.cfg sed -i 's^ )^)^g' ${OUTDIR}/$(eval echo \$BRICKHOSTNAME${BRICK})/$(eval echo \$BRICKHOSTNAME${BRICK})-head/openils/conf/.oils_brick.cfg @@ -1920,7 +1944,7 @@ echo echo "Setting up hostname and logger config files for non-brick nodes.." #for HOSTNODE in lvs01 lvs02 db01 db02 db03 logger01 utility01 sip01 sip02 reporter01 memcache01 memcache02 monitor01 backup01 admin01 for HOSTNODE in $MACHINES_NO_BRICKS - do +do echo $HOSTNODE > "$OUTDIR/${HOSTNODE}/etc/hostname" mkdir -p "$OUTDIR/${HOSTNODE}/etc/rsyslog.d" cp -f $TEMPLATEDIR/rsyslog/50-default.conf "$OUTDIR/${HOSTNODE}/etc/rsyslog.d" @@ -1932,7 +1956,7 @@ echo "Done setting up hostname and logger config for non-bricks nodes." ### Setup OpenSRF and Evergreen on other OpenSRF Nodes. #for OTHERNODE in utility01 sip01 sip02 reporter01 for OTHERNODE in $MACHINES_OSRF_NO_BRICKS - do +do mkdir -p "$OUTDIR/$OTHERNODE/var/backup" mkdir -p "$OUTDIR/$OTHERNODE/openils/var/data/offline" mkdir -p "$OUTDIR/$OTHERNODE/openils/var/web/reporter" @@ -1964,7 +1988,7 @@ done ### copy completed opensrf file to their respective locations. #for OSRF_NODE in utility01 sip01 sip02 reporter01 for OSRF_NODE in $MACHINES_OSRF_NO_BRICKS - do +do cp -f "$TMPOPENSRF_XML" "$OUTDIR/$OSRF_NODE/openils/conf/opensrf.xml" cat $TEMPLATEDIR/opensrf.xml/opensrf.xml-footer >> "$OUTDIR/$OTHERNODE/openils/conf/opensrf.xml" done @@ -1975,7 +1999,7 @@ echo echo "Setting up SIP.." #for SIPNODE in sip01 sip02 for SIPNODE in $MACHINES_SIP_ONLY - do +do mkdir -p "$OUTDIR/$SIPNODE/opt" mkdir -p "$OUTDIR/$SIPNODE/etc/init.d" mkdir -p "$OUTDIR/$SIPNODE/etc/cron.d" @@ -2007,7 +2031,7 @@ echo "Done setting up SIP." echo echo "Setting up logger" for LOGGER in $MACHINES_LOGGER - do +do mkdir -p "$OUTDIR/$LOGGER/etc/rsyslog.d" cp -f "$TEMPLATEDIR/rsyslog/opensrf-rsyslog.conf" "$OUTDIR/$LOGGER/etc/rsyslog.d" cp -f "$TEMPLATEDIR/rsyslog/rsyslog.conf-logger" "$OUTDIR/$LOGGER/etc/rsyslog.conf" @@ -2021,7 +2045,7 @@ echo "Done setting up logger" ### Setup DB - !!More stuff to do here for sure. #for DB_SERVER in db01 db02 db03 for DB_SERVER in $MACHINES_DB_ONLY - do +do mkdir -p $OUTDIR/${DB_SERVER}/etc/init.d mkdir -p $OUTDIR/${DB_SERVER}/etc/postgresql/$PSQL_VERSION/main mkdir -p $OUTDIR/${DB_SERVER}/home/postgres/eg @@ -2046,7 +2070,7 @@ done ### setup exports for backup for BACKUP_SERVER in $MACHINES_BACKUP - do +do cp -f "$TMPFOLDER/exports_backup" "$OUTDIR/$BACKUP_SERVER/etc/exports" mkdir -p "$OUTDIR/$BACKUP_SERVER/var/backup" done @@ -2082,6 +2106,11 @@ echo ${REPORTS_NFS_HOSTNAME} > "$OUTDIR/${REPORTS_NFS_HOSTNAME}/etc/hostname" mkdir -p "$OUTDIR/${REPORTS_NFS_HOSTNAME}/etc/rsyslog.d" cp -f "$TEMPLATEDIR/rsyslog/50-default.conf" "$OUTDIR/${REPORTS_NFS_HOSTNAME}/etc/rsyslog.d" cp -f "$TEMPLATEDIR/rsyslog/60-evergreen-ils.conf" "$OUTDIR/${REPORTS_NFS_HOSTNAME}/etc/rsyslog.d" +### Monitoring +printf 'define host {\n' >>$TMPNAGIHOSTS;printf "\thost_name\t${REPORTS_NFS_HOSTNAME}\n" >>$TMPNAGIHOSTS +printf "\talias\t\t${REPORTS_NFS_HOSTNAME}\n" >>$TMPNAGIHOSTS +printf "\taddress\t\t${REPORTS_NFS_HOSTNAME_IP}\n" >>$TMPNAGIHOSTS +printf '\tuse\t\tgeneric-host\n}\n' >>$TMPNAGIHOSTS echo "Done." } @@ -2091,7 +2120,29 @@ if ! echo "${REPORTS_NFS_HOSTNAME}" | grep -q "reporter0\|db0" 2>/dev/null Reports_NFS_Host fi - +### Configure basic monitoring for non brick nodes. +for NAGINODE in $HOSTNAMES_NO_BRICKS +do + ### hosts.cfg + MONITOR_HOST=$( echo "${NAGINODE}" | tr '[:lower:]' '[:upper:]' ) + if [ "$USE_HOSTNAME_PREFIX" = "y" ] || [ "$USE_HOSTNAME_PREFIX" = "Y" ] + then + printf 'define host {\n' >>$TMPNAGIHOSTS;printf "\thost_name\t${PRFX}-${NAGINODE}\n" >>$TMPNAGIHOSTS + printf "\talias\t\t${PRFX}-$NAGINODE\n" >>$TMPNAGIHOSTS + else + printf 'define host {\n' >>$TMPNAGIHOSTS;printf "\thost_name\t${NAGINODE}\n" >>$TMPNAGIHOSTS + printf "\talias\t\t$NAGINODE\n" >>$TMPNAGIHOSTS + fi + if echo $NAGINODE | grep lvs0 + then + eval printf "\\\taddress\\\t\\\t\$${MONITOR_HOST}_PRIVATE_IP\\\n" >>$TMPNAGIHOSTS + else + eval printf "\\\taddress\\\t\\\t\$${MONITOR_HOST}_IP\\\n" >>$TMPNAGIHOSTS + fi + printf '\tuse\t\tgeneric-host\n}\n' >>$TMPNAGIHOSTS + eval echo \${MONITOR_HOST} + eval echo \$${MONITOR_HOST}_IP +done ### Write config info file. echo >> "$NETCFGFILE"