[lxc-users] Mapping dotless LXD hostnames to FQDN
Mark Constable
markc at renta.net
Sun Mar 13 03:39:39 UTC 2016
For a while there I was completely flummoxed trying to come up with an
ultra simple way to deal with dotless LXD hostnames without requiring an
otherwise useless out of band host-to-fqdn mapping system. This strategy
works for me and might be useful for someone else. It does rely on DNS or
/etc/hosts to resolve a hostname to a FQDN but that tool is most likely
required anyway and not some arbitrary file or db mapping system.
$1 is EITHER hostname or fqdn, $2 is name of ssh key (or ~/.ssh/id_rsa)
# exit script if $1 does not resolve
host -t a $1 || exit 1
# if $1 does not contain a dot then resolve $VHOST to FQDN
[[ $1 =~ \. ]] && VHOST=$1 || VHOST=$(host -t a $1 | cut -d ' ' -f1)
if [[ -d /var/lib/lxd/containers/$1 ]]; then
if ! lxc list | grep " $1 " | grep -q RUNNING; then
lxc start $1
fi
LEX="lxc exec $1 --"
$LEX bash -c 'test ! -d ~/.ssh && mkdir ~/.ssh && chmod 0700 ~/.ssh'
$LEX bash -c 'test -f ~/.ssh/authorized_keys'
if [[ $? -eq 1 ]]; then
lxc file push --uid=0 --gid=0 --mode=0600 ~/.ssh/$S_KEY.pub $1/root/.ssh/authorized_keys
fi
$LEX bash -c 'which sshd' > /dev/null
if [[ $? -gt 0 ]]; then
$LEX apt-get update > /dev/null 2>&1
$LEX apt-get install -qq -y --no-install-recommends openssh-server dnsutils > /dev/null 2>&1
fi
else
# $1 is a fqdn so setup some other non-LXD remote server
fi
ssh -o StrictHostKeyChecking=no root@$VHOST 'bash -s' << EOS
# continue system setup inside container (or remote host)
EOS
Now we have a "normalized" container or remote server ready to continue
working on.
More information about the lxc-users
mailing list