Skip to content

Instantly share code, notes, and snippets.

@aboron
Last active August 8, 2017 15:24
Show Gist options
  • Save aboron/4e44405e703861a8af4add5bcb7322e7 to your computer and use it in GitHub Desktop.
Save aboron/4e44405e703861a8af4add5bcb7322e7 to your computer and use it in GitHub Desktop.
Script to automate setup of lx ubuntu zones on joyent triton
#/bin/bash
set_tzdata ()
{
# Change this to the timezone in your area
ln -fs /usr/share/zoneinfo/US/Eastern /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
}
fix_fstab ()
{
sed -ie 's/^none/#none/g' /etc/fstab
}
set_hosts ()
{
sed -ie 's/'$oldhost'/'$host'/g' /etc/hosts
sed -i '1i'$ipaddr'\t'$fqdn' '$host /etc/hosts
}
set_hostname ()
{
echo "$host" > /etc/hostname
}
set_motd ()
{
instance=`cat /etc/motd | grep Instance | cut -d'(' -f2`
figlet -lf big $fqdn > /tmp/motd.tmp
sed -i 's/[[:space:]]*$//' /tmp/motd.tmp
echo "$(cat /tmp/motd.tmp) Instance ($instance" > /etc/motd
}
create_vimrc()
{
cat > /root/tmp.vimrc <<'_EOF'
begin-base64 644 .vimrc
IiBTZXRzIGhvdyBtYW55IGxpbmVzIG9mIGhpc3RvcnkgVklNIGhhcyB0byBy
ZW1lbWJlcgpzZXQgaGlzdG9yeT01MDAKIiBFbmFibGUgZmlsZXR5cGUgcGx1
Z2lucwpmaWxldHlwZSBwbHVnaW4gb24KZmlsZXR5cGUgaW5kZW50IG9uCiIg
U2V0IHRvIGF1dG8gcmVhZCB3aGVuIGEgZmlsZSBpcyBjaGFuZ2VkIGZyb20g
dGhlIG91dHNpZGUKc2V0IGF1dG9yZWFkCiIgV2l0aCBhIG1hcCBsZWFkZXIg
aXQncyBwb3NzaWJsZSB0byBkbyBleHRyYSBrZXkgY29tYmluYXRpb25zCiIg
bGlrZSA8bGVhZGVyPncgc2F2ZXMgdGhlIGN1cnJlbnQgZmlsZQpsZXQgbWFw
bGVhZGVyID0gIiwiCmxldCBnOm1hcGxlYWRlciA9ICIsIgoiIEZhc3Qgc2F2
aW5nCm5tYXAgPGxlYWRlcj53IDp3ITxjcj4KIiA6VyBzdWRvIHNhdmVzIHRo
ZSBmaWxlIAoiICh1c2VmdWwgZm9yIGhhbmRsaW5nIHRoZSBwZXJtaXNzaW9u
LWRlbmllZCBlcnJvcikKY29tbWFuZCBXIHcgIXN1ZG8gdGVlICUgPiAvZGV2
L251bGwKIiBTZXQgNyBsaW5lcyB0byB0aGUgY3Vyc29yIC0gd2hlbiBtb3Zp
bmcgdmVydGljYWxseSB1c2luZyBqL2sKc2V0IHNvPTcKbGV0ICRMQU5HPSdl
bicgCnNldCBsYW5nbWVudT1lbgpzb3VyY2UgJFZJTVJVTlRJTUUvZGVsbWVu
dS52aW0Kc291cmNlICRWSU1SVU5USU1FL21lbnUudmltCiIgVHVybiBvbiB0
aGUgV2lMZCBtZW51CnNldCB3aWxkbWVudQoiIElnbm9yZSBjb21waWxlZCBm
aWxlcwpzZXQgd2lsZGlnbm9yZT0qLm8sKn4sKi5weWMsKi8uZ2l0LyosKi8u
aGcvKiwqLy5zdm4vKiwqLy5EU19TdG9yZQoiQWx3YXlzIHNob3cgY3VycmVu
dCBwb3NpdGlvbgpzZXQgcnVsZXIKIiBIZWlnaHQgb2YgdGhlIGNvbW1hbmQg
YmFyCnNldCBjbWRoZWlnaHQ9MQoiIEEgYnVmZmVyIGJlY29tZXMgaGlkZGVu
IHdoZW4gaXQgaXMgYWJhbmRvbmVkCnNldCBoaWQKIiBDb25maWd1cmUgYmFj
a3NwYWNlIHNvIGl0IGFjdHMgYXMgaXQgc2hvdWxkIGFjdApzZXQgYmFja3Nw
YWNlPWVvbCxzdGFydCxpbmRlbnQKc2V0IHdoaWNod3JhcCs9PCw+LGgsbAoi
IElnbm9yZSBjYXNlIHdoZW4gc2VhcmNoaW5nCnNldCBpZ25vcmVjYXNlCnNl
dCBzbWFydGNhc2UKIiBIaWdobGlnaHQgc2VhcmNoIHJlc3VsdHMKc2V0IGhs
c2VhcmNoCiIgTWFrZXMgc2VhcmNoIGFjdCBsaWtlIHNlYXJjaCBpbiBtb2Rl
cm4gYnJvd3NlcnMKc2V0IGluY3NlYXJjaCAKIiBEb24ndCByZWRyYXcgd2hp
bGUgZXhlY3V0aW5nIG1hY3JvcyAoZ29vZCBwZXJmb3JtYW5jZSBjb25maWcp
CnNldCBsYXp5cmVkcmF3IAoiIEZvciByZWd1bGFyIGV4cHJlc3Npb25zIHR1
cm4gbWFnaWMgb24Kc2V0IG1hZ2ljCiIgU2hvdyBtYXRjaGluZyBicmFja2V0
cyB3aGVuIHRleHQgaW5kaWNhdG9yIGlzIG92ZXIgdGhlbQpzZXQgc2hvd21h
dGNoIAoiIEhvdyBtYW55IHRlbnRocyBvZiBhIHNlY29uZCB0byBibGluayB3
aGVuIG1hdGNoaW5nIGJyYWNrZXRzCnNldCBtYXQ9MgoiIE5vIGFubm95aW5n
IHNvdW5kIG9uIGVycm9ycwpzZXQgbm9lcnJvcmJlbGxzCnNldCBub3Zpc3Vh
bGJlbGwKc2V0IHRfdmI9CnNldCB0bT01MDAKIiBFbmFibGUgc3ludGF4IGhp
Z2hsaWdodGluZwpzeW50YXggZW5hYmxlIAoiIEVuYWJsZSAyNTYgY29sb3Jz
IHBhbGV0dGUgaW4gR25vbWUgVGVybWluYWwKaWYgJENPTE9SVEVSTSA9PSAn
Z25vbWUtdGVybWluYWwnCiAgICBzZXQgdF9Dbz0yNTYKZW5kaWYKdHJ5CiAg
ICBjb2xvcnNjaGVtZSBkZXNlcnQKY2F0Y2gKZW5kdHJ5CnNldCBiYWNrZ3Jv
dW5kPWRhcmsKCiIgU2V0IGV4dHJhIG9wdGlvbnMgd2hlbiBydW5uaW5nIGlu
IEdVSSBtb2RlCmlmIGhhcygiZ3VpX3J1bm5pbmciKQogICAgc2V0IGd1aW9w
dGlvbnMtPVQKICAgIHNldCBndWlvcHRpb25zLT1lCiAgICBzZXQgdF9Dbz0y
NTYKICAgIHNldCBndWl0YWJsYWJlbD0lTVwgJXQKZW5kaWYKIiBTZXQgdXRm
OCBhcyBzdGFuZGFyZCBlbmNvZGluZyBhbmQgZW5fVVMgYXMgdGhlIHN0YW5k
YXJkIGxhbmd1YWdlCnNldCBlbmNvZGluZz11dGY4CiIgVXNlIFVuaXggYXMg
dGhlIHN0YW5kYXJkIGZpbGUgdHlwZQpzZXQgZmZzPXVuaXgsZG9zLG1hYwoi
IFR1cm4gYmFja3Vwb2ZmLi4uCnNldCBub2JhY2t1cApzZXQgbm93YgpzZXQg
bm9zd2FwZmlsZQoiIFVzZSBzcGFjZXMgaW5zdGVhZCBvZiB0YWJzCnNldCBl
eHBhbmR0YWIKIiBCZSBzbWFydCB3aGVuIHVzaW5nIHRhYnMgOykKc2V0IHNt
YXJ0dGFiCiIgMSB0YWIgPT0gNCBzcGFjZXMKc2V0IHNoaWZ0d2lkdGg9NApz
ZXQgdGFic3RvcD00CiIgTGluZWJyZWFrIG9uIDUwMCBjaGFyYWN0ZXJzCnNl
dCBsYnIKc2V0IHR3PTUwMApzZXQgYWkgIkF1dG8gaW5kZW50CnNldCBzaSAi
U21hcnQgaW5kZW50CnNldCB3cmFwICJXcmFwIGxpbmVzCiIgVmlzdWFsIG1v
ZGUgcHJlc3NpbmcgKiBvciAjIHNlYXJjaGVzIGZvciB0aGUgY3VycmVudCBz
ZWxlY3Rpb24Kdm5vcmVtYXAgPHNpbGVudD4gKiA6PEMtdT5jYWxsIFZpc3Vh
bFNlbGVjdGlvbignJywgJycpPENSPi88Qy1SPj1ALzxDUj48Q1I+CnZub3Jl
bWFwIDxzaWxlbnQ+ICMgOjxDLXU+Y2FsbCBWaXN1YWxTZWxlY3Rpb24oJycs
ICcnKTxDUj4/PEMtUj49QC88Q1I+PENSPgoKIiBNYXAgPFNwYWNlPiB0byAv
IChzZWFyY2gpIGFuZCBDdHJsLTxTcGFjZT4gdG8gPyAoYmFja3dhcmRzIHNl
YXJjaCkKbWFwIDxzcGFjZT4gLwptYXAgPGMtc3BhY2U+ID8KIiBEaXNhYmxl
IGhpZ2hsaWdodCB3aGVuIDxsZWFkZXI+PGNyPiBpcyBwcmVzc2VkCm1hcCA8
c2lsZW50PiA8bGVhZGVyPjxjcj4gOm5vaDxjcj4KIiBTbWFydCB3YXkgdG8g
bW92ZSBiZXR3ZWVuIHdpbmRvd3MKbWFwIDxDLWo+IDxDLVc+agptYXAgPEMt
az4gPEMtVz5rCm1hcCA8Qy1oPiA8Qy1XPmgKbWFwIDxDLWw+IDxDLVc+bAoK
IiBDbG9zZSB0aGUgY3VycmVudCBidWZmZXIKbWFwIDxsZWFkZXI+YmQgOkJj
bG9zZTxjcj46dGFiY2xvc2U8Y3I+Z1QKIiBDbG9zZSBhbGwgdGhlIGJ1ZmZl
cnMKbWFwIDxsZWFkZXI+YmEgOmJ1ZmRvIGJkPGNyPgoKbWFwIDxsZWFkZXI+
bCA6Ym5leHQ8Y3I+Cm1hcCA8bGVhZGVyPmggOmJwcmV2aW91czxjcj4KCiIg
VXNlZnVsIG1hcHBpbmdzIGZvciBtYW5hZ2luZyB0YWJzCm1hcCA8bGVhZGVy
PnRuIDp0YWJuZXc8Y3I+Cm1hcCA8bGVhZGVyPnRvIDp0YWJvbmx5PGNyPgpt
YXAgPGxlYWRlcj50YyA6dGFiY2xvc2U8Y3I+Cm1hcCA8bGVhZGVyPnRtIDp0
YWJtb3ZlIAptYXAgPGxlYWRlcj50PGxlYWRlcj4gOnRhYm5leHQgCgoiIExl
dCAndGwnIHRvZ2dsZSBiZXR3ZWVuIHRoaXMgYW5kIHRoZSBsYXN0IGFjY2Vz
c2VkIHRhYgpsZXQgZzpsYXN0dGFiID0gMQpubWFwIDxMZWFkZXI+dGwgOmV4
ZSAidGFibiAiLmc6bGFzdHRhYjxDUj4KYXUgVGFiTGVhdmUgKiBsZXQgZzps
YXN0dGFiID0gdGFicGFnZW5yKCkKCiIgT3BlbnMgYSBuZXcgdGFiIHdpdGgg
dGhlIGN1cnJlbnQgYnVmZmVyJ3MgcGF0aAptYXAgPGxlYWRlcj50ZSA6dGFi
ZWRpdCA8Yy1yPj1leHBhbmQoIiU6cDpoIik8Y3I+LwoiIFN3aXRjaCBDV0Qg
dG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgb3BlbiBidWZmZXIKbWFwIDxsZWFk
ZXI+Y2QgOmNkICU6cDpoPGNyPjpwd2Q8Y3I+CiIgU3BlY2lmeSB0aGUgYmVo
YXZpb3Igd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBidWZmZXJzIAp0cnkKICBz
ZXQgc3dpdGNoYnVmPXVzZW9wZW4sdXNldGFiLG5ld3RhYgogIHNldCBzdGFs
PTIKY2F0Y2gKZW5kdHJ5CiIgUmV0dXJuIHRvIGxhc3QgZWRpdCBwb3NpdGlv
biB3aGVuIG9wZW5pbmcgZmlsZXMgKFlvdSB3YW50IHRoaXMhKQphdSBCdWZS
ZWFkUG9zdCAqIGlmIGxpbmUoIidcIiIpID4gMSAmJiBsaW5lKCInXCIiKSA8
PSBsaW5lKCIkIikgfCBleGUgIm5vcm1hbCEgZydcIiIgfCBlbmRpZgoKCiIg
QWx3YXlzIHNob3cgdGhlIHN0YXR1cyBsaW5lCnNldCBsYXN0c3RhdHVzPTIK
IiBGb3JtYXQgdGhlIHN0YXR1cyBsaW5lCnNldCBzdGF0dXNsaW5lPVwgJXtI
YXNQYXN0ZSgpfSVGJW0lciVoXCAld1wgXCBDV0Q6XCAlciV7Z2V0Y3dkKCl9
JWhcIFwgXCBMaW5lOlwgJWxcIFwgQ29sdW1uOlwgJWMKCgoiIFJlbWFwIFZJ
TSAwIHRvIGZpcnN0IG5vbi1ibGFuayBjaGFyYWN0ZXIKbWFwIDAgXgoKIiBN
b3ZlIGEgbGluZSBvZiB0ZXh0IHVzaW5nIEFMVCtbamtdIG9yIENvbW1hbmQr
W2prXSBvbiBtYWMKbm1hcCA8TS1qPiBtejptKzxjcj5gegpubWFwIDxNLWs+
IG16Om0tMjxjcj5gegp2bWFwIDxNLWo+IDptJz4rPGNyPmA8bXlgPm16Z3Zg
eW9gegp2bWFwIDxNLWs+IDptJzwtMjxjcj5gPm15YDxtemd2YHlvYHoKCiIg
RGVsZXRlIHRyYWlsaW5nIHdoaXRlIHNwYWNlIG9uIHNhdmUsIHVzZWZ1bCBm
b3Igc29tZSBmaWxldHlwZXMgOykKZnVuISBDbGVhbkV4dHJhU3BhY2VzKCkK
ICAgIGxldCBzYXZlX2N1cnNvciA9IGdldHBvcygiLiIpCiAgICBsZXQgb2xk
X3F1ZXJ5ID0gZ2V0cmVnKCcvJykKICAgIHNpbGVudCEgJXMvXHNcKyQvL2UK
ICAgIGNhbGwgc2V0cG9zKCcuJywgc2F2ZV9jdXJzb3IpCiAgICBjYWxsIHNl
dHJlZygnLycsIG9sZF9xdWVyeSkKZW5kZnVuCgppZiBoYXMoImF1dG9jbWQi
KQogICAgYXV0b2NtZCBCdWZXcml0ZVByZSAqLnR4dCwqLmpzLCoucHksKi53
aWtpLCouc2gsKi5jb2ZmZWUgOmNhbGwgQ2xlYW5FeHRyYVNwYWNlcygpCmVu
ZGlmCgoKIiBQcmVzc2luZyAsc3Mgd2lsbCB0b2dnbGUgYW5kIHVudG9nZ2xl
IHNwZWxsIGNoZWNraW5nCm1hcCA8bGVhZGVyPnNzIDpzZXRsb2NhbCBzcGVs
bCE8Y3I+CgoiIFNob3J0Y3V0cyB1c2luZyA8bGVhZGVyPgptYXAgPGxlYWRl
cj5zbiBdcwptYXAgPGxlYWRlcj5zcCBbcwptYXAgPGxlYWRlcj5zYSB6Zwpt
YXAgPGxlYWRlcj5zPyB6PQoKCiIgUmVtb3ZlIHRoZSBXaW5kb3dzIF5NIC0g
d2hlbiB0aGUgZW5jb2RpbmdzIGdldHMgbWVzc2VkIHVwCm5vcmVtYXAgPExl
YWRlcj5tIG1tSG10OiVzLzxDLVY+PGNyPi8vZ2U8Y3I+J3R6dCdtCgoiIFRv
Z2dsZSBwYXN0ZSBtb2RlIG9uIGFuZCBvZmYKbWFwIDxsZWFkZXI+cHAgOnNl
dGxvY2FsIHBhc3RlITxjcj4KCgoiIFJldHVybnMgdHJ1ZSBpZiBwYXN0ZSBt
b2RlIGlzIGVuYWJsZWQKZnVuY3Rpb24hIEhhc1Bhc3RlKCkKICAgIGlmICZw
YXN0ZQogICAgICAgIHJldHVybiAnUEFTVEUgTU9ERSAgJwogICAgZW5kaWYK
ICAgIHJldHVybiAnJwplbmRmdW5jdGlvbgoKIiBEb24ndCBjbG9zZSB3aW5k
b3csIHdoZW4gZGVsZXRpbmcgYSBidWZmZXIKY29tbWFuZCEgQmNsb3NlIGNh
bGwgPFNJRD5CdWZjbG9zZUNsb3NlSXQoKQpmdW5jdGlvbiEgPFNJRD5CdWZj
bG9zZUNsb3NlSXQoKQogICBsZXQgbDpjdXJyZW50QnVmTnVtID0gYnVmbnIo
IiUiKQogICBsZXQgbDphbHRlcm5hdGVCdWZOdW0gPSBidWZucigiIyIpCgog
ICBpZiBidWZsaXN0ZWQobDphbHRlcm5hdGVCdWZOdW0pCiAgICAgYnVmZmVy
ICMKICAgZWxzZQogICAgIGJuZXh0CiAgIGVuZGlmCgogICBpZiBidWZucigi
JSIpID09IGw6Y3VycmVudEJ1Zk51bQogICAgIG5ldwogICBlbmRpZgoKICAg
aWYgYnVmbGlzdGVkKGw6Y3VycmVudEJ1Zk51bSkKICAgICBleGVjdXRlKCJi
ZGVsZXRlISAiLmw6Y3VycmVudEJ1Zk51bSkKICAgZW5kaWYKZW5kZnVuY3Rp
b24KCmZ1bmN0aW9uISBDbWRMaW5lKHN0cikKICAgIGV4ZSAibWVudSBGb28u
QmFyIDoiIC4gYTpzdHIKICAgIGVtZW51IEZvby5CYXIKICAgIHVubWVudSBG
b28KZW5kZnVuY3Rpb24gCgpmdW5jdGlvbiEgVmlzdWFsU2VsZWN0aW9uKGRp
cmVjdGlvbiwgZXh0cmFfZmlsdGVyKSByYW5nZQogICAgbGV0IGw6c2F2ZWRf
cmVnID0gQCIKICAgIGV4ZWN1dGUgIm5vcm1hbCEgdmd2eSIKCiAgICBsZXQg
bDpwYXR0ZXJuID0gZXNjYXBlKEAiLCAiXFwvLionJF5+W10iKQogICAgbGV0
IGw6cGF0dGVybiA9IHN1YnN0aXR1dGUobDpwYXR0ZXJuLCAiXG4kIiwgIiIs
ICIiKQoKICAgIGlmIGE6ZGlyZWN0aW9uID09ICdndicKICAgICAgICBjYWxs
IENtZExpbmUoIkFjayAnIiAuIGw6cGF0dGVybiAuICInICIgKQogICAgZWxz
ZWlmIGE6ZGlyZWN0aW9uID09ICdyZXBsYWNlJwogICAgICAgIGNhbGwgQ21k
TGluZSgiJXMiIC4gJy8nLiBsOnBhdHRlcm4gLiAnLycpCiAgICBlbmRpZgoK
ICAgIGxldCBALyA9IGw6cGF0dGVybgogICAgbGV0IEAiID0gbDpzYXZlZF9y
ZWcKZW5kZnVuY3Rpb24K
====
_EOF
cd /root
uudecode /root/tmp.vimrc
rm /root/tmp.vimrc
}
hasfiglet=`which figlet`
if [ -f "$hasfiglet" ]
then
echo "(figlet already installed)"
else
echo "(installing figlet for banner)"
apt-get -y install figlet
fi
hasuudecode=`which uudecode`
if [ -f "$hasuudecode" ]
then
echo "(uudecode already installed)"
else
echo "(installing sharutils for uudecode)"
apt-get -y install sharutils
fi
if [ -z "$1" ]
then
echo "!No FQDN or host label given!"
else
fqdn="$1"
fi
host=`echo $fqdn | cut -d'.' -f1`
test1=`echo $fqdn | cut -d'.' -f2`
ipaddr=`ifconfig | grep Bcast | cut -d':' -f2 | cut -d' ' -f1`
oldhost=`cat /etc/hostname`
############################################################################
# These are the things we want to do every boot in a Triton LX-Ubuntu VM
############################################################################
apt-get update
apt-get -y dist-upgrade
############################################################################
# Only do these things on first boot (use .vimrc to flag the action as done)
############################################################################
if [ -f "/root/.vimrc" ]
then
echo "(first boot settings already performed)"
else
echo "(performing first boot actions)"
fix_fstab
if [ -z "$1" ]
then
echo "!No text label of any kind given, motd/hosts/hostname will be left alone!"
else
if [ -z "$test1" ]
then
echo "!Not passed a complete FQDN, leaving hosts/hostname unchanged!"
echo "!Motd may look strange!"
else
set_hosts
set_hostname
fi
set_motd
fi
set_tzdata
create_vimrc
fi
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment