If you have deployed the VCSA a couple of dozen times like me then you quickly realize that it is necessary to script the initial configuration of the device. I would highly recommend taking a look at William Lam’s blog for some great setup scripts including:
- http://www.virtuallyghetto.com/2012/09/automating-vcsa-51-vcenter-server.html
- http://www.virtuallyghetto.com/2012/10/vghetto-lab-notsupported-slides-posted.html
- http://www.virtuallyghetto.com/2013/02/automating-vcsa-network-configurations.html
Something that I noticed was missing from William’s scripts was the ability to configure application layer services such as NTP and Syslog. As such, I put together a couple quick scripts shared below.
NTP
# optional NTP_SERVER_1=0.north-america.pool.ntp.org NTP_SERVER_2=1.north-america.pool.ntp.org # FIXME - only accepts up to two NTP servers if [ ! -z "${NTP_SERVER_2}" ]; then sed -i -e "/^## # rcntp/a server ${NTP_SERVER_2}" /etc/ntp.conf fi if [ ! -z "${NTP_SERVER_1}" ]; then echo -n "Configuring NTP..." echo "Configuring ntp ${NTP_SERVER_1}" sed -i -e "/^## # rcntp/a server ${NTP_SERVER_1}" /etc/ntp.conf /etc/init.d/ntp restart chkconfig --level 235 ntp on echo "done" fi
One important thing I would like to point out is that on the VCSA NTP is not configured to start on boot:
~ # chkconfig --list ntp ntp 0:off 1:off 2:off 3:off 4:off 5:off 6:off
This is easy to fix with:
~ # chkconfig ntp on insserv: Service network is missed in the runlevels 4 to use service postgresql insserv: Service syslog is missed in the runlevels 4 to use service postgresql ~ # chkconfig --list ntp ntp 0:off 1:off 2:off 3:on 4:off 5:on 6:off
However, if you look at other services such as syslog they default to 2, 3, and 5:
~ # chkconfig --list syslog syslog 0:off 1:off 2:on 3:on 4:off 5:on 6:off
So you could decide to mimic this on NTP like I did in the above script:
~ # chkconfig --level 235 ntp ntp on ~ # chkconfig --list ntp ntp 0:off 1:off 2:off 3:on 4:off 5:on 6:off
Syslog
# optional SYSLOG_SERVER=10.250.1.40 SYSLOG_PROTOCOL=tcp # defaults to udp SYSLOG_PORT=5140 # defaults to 514 # FIXME - only accepts a single forwarder to a single protocol on a single port if [ ! -z "${SYSLOG_SERVER}" ]; then echo -n "Configuring syslog..." if [ -z "${SYSLOG_PROCOTOL}" ]; then SYSLOG_PROTOCOL=udp; fi if [ -z "${SYSLOG_PORT}" ]; then SYSLOG_PORT=514; fi sed -i -e '/^#log { source(src); destination(logserver); };/a log { source(src); destination(logserver); };' /etc/syslog-ng/syslog-ng.conf sed -i -e '/^#log { source(src); destination(logserver); };/a destination logserver { '${SYSLOG_PROTOCOL}'("'${SYSLOG_SERVER}'" port('${SYSLOG_PORT}')); };' /etc/syslog-ng/syslog-ng.conf /etc/init.d/syslog restart echo "done" fi
For those curious why the SYSLOG_PORT is set to 5140 for TCP, it is because 514/TCP is reserved for remote shell (rsh). If you are not using this port for rsh then you could use it for syslog. Instead, I chose to use another port just in case. Common alternative ports I have seen used are 5140 and 5014.
© 2013, Steve Flanders. All rights reserved.