ironic-python-agent-builder/tinyipa/build_files/bootlocal.sh
Julia Kreger c66244ff55 Remove PYOPTIMIZE_TINYIPA capability
Oslo.Privsep requries pycparser, which does not support being loaded
into python programs where the source is not available for doc string
references. This is because one of the things that happens with
an optomized python, is the files are "pre-compiled" and doc strings
are removed.

This is unfortunate, but just means the TinyIPA images are slightly
larger, Testing shows this is approximately 5 MB.

Change-Id: I3bdda3a8e595db8e84cd15bf083978c39514b1fa
2021-02-16 19:31:38 +00:00

94 lines
2.8 KiB
Bash
Executable File

#!/bin/sh
# put other system startup commands here
#exec > /tmp/installlogs 2>&1
set -x
echo "Starting bootlocal script:"
date
export HOME=/root
# Start SSHd
if [ -x /usr/local/etc/init.d/openssh ]; then
echo "Starting OpenSSH server:"
/usr/local/etc/init.d/openssh start
fi
# Start haveged
if [ -x /usr/local/sbin/haveged ]; then
echo "Starting haveged entropy daemon:"
/usr/local/sbin/haveged
fi
# Maybe save some RAM?
#rm -rf /tmp/builtin
# Install IPA and dependecies
if ! type "ironic-python-agent" > /dev/null ; then
PIP_COMMAND="pip"
if hash pip3 2>/dev/null; then
PIP_COMMAND="pip3"
fi
$PIP_COMMAND install --no-index --find-links=file:///tmp/wheelhouse ironic_python_agent
fi
# Create ipa-rescue-config directory for rescue password
sudo mkdir -p /etc/ipa-rescue-config
# Setup DHCP network
configure_dhcp_network() {
for pidfile in `ls /var/run/udhcpc*.pid`; do
kill `cat $pidfile`
done
# NOTE(TheJulia): We may need to add a short wait here as
# network interface plugging actions may not be asynchronous.
echo "Sleeping 30 sec as network interface is being updated"
sleep 30
INTERFACES=$(ip -o link |grep "LOWER_UP"|cut -f2 -d" "|sed 's/://'|grep -v "lo")
for interface in $INTERFACES; do
pidfile="/var/run/udhcpc/${interface}.pid"
/sbin/udhcpc -b -p ${pidfile} -i ${interface} -s /opt/udhcpc.script >> /var/log/udhcpc.log 2>&1
done
echo "Completed DHCP client restart"
echo "Outputting IP and Route information"
ip addr || true
ip route || true
ip -6 route || true
echo "Logging IPv4 sysctls"
sysctl -a |grep ipv4 || true
echo "Logging IPv6 sysctls"
sysctl -a |grep ipv6 || true
}
# Configure networking, use custom udhcpc script to handle MTU option
configure_dhcp_network
mkdir -p /etc/ironic-python-agent.d/
# Run IPA
echo "Starting Ironic Python Agent:"
date
ironic-python-agent --config-dir /etc/ironic-python-agent.d/ 2>&1 | tee /var/log/ironic-python-agent.log
create_rescue_user() {
crypted_pass=$(cat /etc/ipa-rescue-config/ipa-rescue-password)
sudo adduser rescue -D -G root # no useradd
echo "rescue:$crypted_pass" | sudo chpasswd -e
sudo sh -c "echo \"rescue ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers" # no suooers.d in tiny core.
# Restart sshd with allowing password authentication
sudo sed -i -e 's/^PasswordAuthentication no/PasswordAuthentication yes/' /usr/local/etc/ssh/sshd_config
sudo /usr/local/etc/init.d/openssh restart
}
if [ -f /etc/ipa-rescue-config/ipa-rescue-password ]; then
create_rescue_user || exit 0
# The network might change during rescue, renew addresses in this case.
configure_dhcp_network || exit 0
else
echo "IPA has exited. No rescue password file was defined."
fi