Hello all,
This is potentially only of interest to folks running their own smartos
physical hosts instead of those running Joyent-hosted systems. I
completely understand that cloud providers can't trust that
customer-specified zone aliases are unique on their systems. However,
those of us running our own smartos physical hosts have the luxury of being
certain that we have chosen unique aliases. I suspect most of us find it
more convenient to use aliases for our zones instead of UUIDs. I thought
I'd share what I'm doing and see whether anyone else is doing something
better that I might use.
I find it most convenient to have environment variables like this available
to me at the bash prompt:
app1=3d0b54a4-e16b-11e3-99a7-e7babf74a922
app2=3d0c2226-e16b-11e3-82ca-4b426c2af9d0
buildzone=3d0c8630-e16b-11e3-9a3c-ab1be656b213
firewall=3d0bb7fa-e16b-11e3-95c7-fb732fb88e96
webserver1=3d0a8d4e-e16b-11e3-9e9c-cb3596cd1c02
webserver2=3d0af04a-e16b-11e3-8237-171c0fded46a
To make this happen automatically, I use the following code in my .bashrc:
VMLIST=~/.vmadm-list.$$
NICKNAMES=~/.bash-vmadm-nicknames.$$
#First we create a list of the zones using vmadm and save it to a file
we can parse
vmadm list > ${VMLIST}
#Now we iterate over that list creating variable assignments of the
form NICKNAME=UUID and save it to a file we can source
egrep -v '^UUID.*ALIAS$' ${VMLIST} | awk '{print $NF" "$1}' | while
read nickname uuid ; do echo "export ${nickname}=${uuid}" ; done | sort -u
> ${NICKNAMES}
#Source the list of variable assignments
source ${NICKNAMES}
#Clean up
rm -f ${VMLIST} ${NICKNAMES}
The reason I like doing things this way is that it makes it possible for me
to things like:
zfs send -R zones/${app2}@some_snapshot
or:
zoneadm -z $app2 halt
The only problem I have with the above scheme is that if I create a *new*
zone, I need to log out of the global zone and log in again (or I suppose
source my .bashrc again) to pick up the new alias and create the
environment variable for it.
I have seen others override commands like vmadm with a bash function that
calls "vmadm lookup", but the reason I don't use the same is that it would
require that I create a bash function for each command I'm interested in
overriding (vmadm, zoneadm, etc.) and wouldn't work for things like
arguments to my zfs send above.
Just wondering if anyone else has a better method for doing this.
Thanks,
Neal Lauver
-------------------------------------------
smartos-discuss
Archives: https://www.listbox.com/member/archive/184463/=now
RSS Feed: https://www.listbox.com/member/archive/rss/184463/25769125-55cfbc00
Modify Your Subscription:
https://www.listbox.com/member/?member_id=25769125&id_secret=25769125-7688e9fb
Powered by Listbox: http://www.listbox.com