openstack-ansible-lxc_conta.../templates/container-first-run.sh.j2

35 lines
1.0 KiB
Django/Jinja

#!/usr/bin/env bash
set -ev
export CPID="$(lxc-info -Hpn {{ inventory_hostname }})"
function update_backup_resolvers {
if [[ -e "/proc/${CPID}/root/etc/resolv.conf.setup" ]]; then
mv /proc/${CPID}/root/etc/resolv.conf.setup /proc/${CPID}/root/etc/resolv.conf
elif [[ -e "/proc/${CPID}/root/etc/resolv.conf" ]]; then
cp /proc/${CPID}/root/etc/resolv.conf /proc/${CPID}/root/etc/resolv.conf.setup
fi
}
# If the setup is complete return as the process is complete
if [[ -f "/var/lib/lxc/{{ inventory_hostname }}/setup.complete" ]]; then
exit 0
fi
# Backup the resolvers as the setup script is not executed within an NS.
update_backup_resolvers
# Use the host resolvers
cat /etc/resolv.conf > /proc/${CPID}/root/etc/resolv.conf
# Execute
nsenter --mount=/proc/${CPID}/ns/mnt --pid=/proc/${CPID}/ns/pid \
--uts=/proc/${CPID}/ns/uts --ipc=/proc/${CPID}/ns/ipc \
-- /opt/container-setup.sh
# Restore the resolvers
update_backup_resolvers
# Mark the setup as complete
touch /var/lib/lxc/{{ inventory_hostname }}/setup.complete