infra/image: Make fixnet and fixipaip services active by default

The services are now active by default and do not need to be activated
after IPA has been deployed.

The fixnet service is always activated and removes all lines containing
the hostname from /etc/hosts and adds a new line with the IP and the
hostname with and without domain. If IPA is deployed with DNS (the
config file /etc/named.conf exists and there is a '^dyndb "ipa"' line
in /etc/named.conf) then /etc/resolv.conf is also changed to use the
local DNS server.

The fixipaip service is now also always activated, but only started IF
IPA has been deployed and the ipa service was started before.

infra/image/build.sh is not actvating the services anymore, the services
are now actiavted in alll dockerfiles.
This commit is contained in:
Thomas Woerner
2025-05-28 16:17:58 +02:00
parent 89cfb5f4c4
commit c5fa54f2cf
10 changed files with 38 additions and 28 deletions

View File

@@ -119,13 +119,6 @@ then
deployed=true deployed=true
fi fi
echo echo
if $deployed; then
log info "= Enabling services ="
container_exec "${name}" systemctl enable fixnet
container_exec "${name}" systemctl enable fixipaip
echo
fi
container_stop "${name}" container_stop "${name}"

View File

@@ -31,6 +31,8 @@ COPY system-service/fixipaip.sh /root/
COPY system-service/fixnet.service /etc/systemd/system/ COPY system-service/fixnet.service /etc/systemd/system/
COPY system-service/fixipaip.service /etc/systemd/system/ COPY system-service/fixipaip.service /etc/systemd/system/
RUN chmod +x /root/fixnet.sh /root/fixipaip.sh RUN chmod +x /root/fixnet.sh /root/fixipaip.sh
RUN systemctl enable fixnet.service
RUN systemctl enable fixipaip.service
STOPSIGNAL RTMIN+3 STOPSIGNAL RTMIN+3

View File

@@ -34,6 +34,8 @@ COPY system-service/fixipaip.sh /root/
COPY system-service/fixnet.service /etc/systemd/system/ COPY system-service/fixnet.service /etc/systemd/system/
COPY system-service/fixipaip.service /etc/systemd/system/ COPY system-service/fixipaip.service /etc/systemd/system/
RUN chmod +x /root/fixnet.sh /root/fixipaip.sh RUN chmod +x /root/fixnet.sh /root/fixipaip.sh
RUN systemctl enable fixnet.service
RUN systemctl enable fixipaip.service
STOPSIGNAL RTMIN+3 STOPSIGNAL RTMIN+3

View File

@@ -30,6 +30,8 @@ COPY system-service/fixipaip.sh /root/
COPY system-service/fixnet.service /etc/systemd/system/ COPY system-service/fixnet.service /etc/systemd/system/
COPY system-service/fixipaip.service /etc/systemd/system/ COPY system-service/fixipaip.service /etc/systemd/system/
RUN chmod +x /root/fixnet.sh /root/fixipaip.sh RUN chmod +x /root/fixnet.sh /root/fixipaip.sh
RUN systemctl enable fixnet.service
RUN systemctl enable fixipaip.service
STOPSIGNAL RTMIN+3 STOPSIGNAL RTMIN+3

View File

@@ -33,6 +33,8 @@ COPY system-service/fixipaip.sh /root/
COPY system-service/fixnet.service /etc/systemd/system/ COPY system-service/fixnet.service /etc/systemd/system/
COPY system-service/fixipaip.service /etc/systemd/system/ COPY system-service/fixipaip.service /etc/systemd/system/
RUN chmod +x /root/fixnet.sh /root/fixipaip.sh RUN chmod +x /root/fixnet.sh /root/fixipaip.sh
RUN systemctl enable fixnet.service
RUN systemctl enable fixipaip.service
STOPSIGNAL RTMIN+3 STOPSIGNAL RTMIN+3

View File

@@ -33,6 +33,8 @@ COPY system-service/fixipaip.sh /root/
COPY system-service/fixnet.service /etc/systemd/system/ COPY system-service/fixnet.service /etc/systemd/system/
COPY system-service/fixipaip.service /etc/systemd/system/ COPY system-service/fixipaip.service /etc/systemd/system/
RUN chmod +x /root/fixnet.sh /root/fixipaip.sh RUN chmod +x /root/fixnet.sh /root/fixipaip.sh
RUN systemctl enable fixnet.service
RUN systemctl enable fixipaip.service
STOPSIGNAL RTMIN+3 STOPSIGNAL RTMIN+3

View File

@@ -1,6 +1,7 @@
[Unit] [Unit]
Description=Fix IPA server IP in IPA Server Description=Fix IPA server IP in IPA Server
After=ipa.service After=ipa.service
PartOf=ipa.service
[Service] [Service]
Type=oneshot Type=oneshot
@@ -9,4 +10,4 @@ StandardOutput=journal
StandardError=journal StandardError=journal
[Install] [Install]
WantedBy=default.target WantedBy=ipa.service

View File

@@ -50,9 +50,9 @@ if [ -z "${FORWARDER}" ] || [ "${FORWARDER}" == "127.0.0.1" ]; then
fi fi
echo "Fix IPA:" echo "Fix IPA:"
echo " HOSTNAME: '${HOSTNAME}'" echo " HOSTNAME: '${HOSTNAME}'"
echo " IP: '${IP}'" echo " IP: '${IP}'"
echo " PTR: '${PTR}'" echo " PTR: '${PTR}'"
echo " FORWARDER: '${FORWARDER}'" echo " FORWARDER: '${FORWARDER}'"
ZONES=$(ipa -e in_server=true dnszone-find --name-from-ip="${HOSTNAME}." \ ZONES=$(ipa -e in_server=true dnszone-find --name-from-ip="${HOSTNAME}." \

View File

@@ -1,8 +1,5 @@
[Unit] [Unit]
Description=Fix server IP in IPA Server Description=Fix /etc/hosts and with local DNS also /etc/resolv.conf
Wants=network.target
After=network.target
Before=ipa.service
[Service] [Service]
Type=oneshot Type=oneshot
@@ -11,4 +8,4 @@ StandardOutput=journal
StandardError=journal StandardError=journal
[Install] [Install]
WantedBy=ipa.service WantedBy=container-ipa.target

View File

@@ -39,26 +39,35 @@ if [ -z "${IP}" ] || ! valid_ipv4 "${IP}" ; then
exit 1 exit 1
fi fi
DOMAIN=${HOSTNAME#*.}
echo "Fix NET:" echo "Fix NET:"
echo " HOSTNAME: '${HOSTNAME}'" echo " HOSTNAME: '${HOSTNAME}'"
echo " IP: '${IP}'" echo " DOMAIN: '${DOMAIN}'"
echo " IP: '${IP}'"
echo echo
if grep -qE "^[^(#\s*)][0-9\.]+\s$HOSTNAME(\s|$)" /etc/hosts # /etc/hosts
then
sed -i.bak -e "s/.*${HOSTNAME}/${IP}\t${HOSTNAME}/" /etc/hosts
else
echo -e "$IP\t${HOSTNAME} ${HOSTNAME%%.*}" >> /etc/hosts
fi
cp -a /etc/resolv.conf /etc/resolv.conf.fixnet sed -i -E "/\s+${HOSTNAME}(\s|$)/d" /etc/hosts
cat > /etc/resolv.conf <<EOF echo -e "$IP\t${HOSTNAME} ${HOSTNAME%%.*}" >> /etc/hosts
search ${HOSTNAME#*.}
nameserver 127.0.0.1
EOF
echo "/etc/hosts:" echo "/etc/hosts:"
cat "/etc/hosts" cat "/etc/hosts"
# /etc/resolv.conf
# If bind is not installed, exit
[ -f "/etc/named.conf" ] || exit 0
# If dyndb is not enabled for bind, exit
grep -q '^dyndb "ipa"' "/etc/named.conf" || exit 0
cp -a /etc/resolv.conf /etc/resolv.conf.fixnet
cat > /etc/resolv.conf <<EOF
search ${DOMAIN}
nameserver 127.0.0.1
EOF
echo echo
echo "/etc/resolv.conf:" echo "/etc/resolv.conf:"
cat "/etc/resolv.conf" cat "/etc/resolv.conf"