From c5fa54f2cf55e6f44ea8531117a211a82d12feb1 Mon Sep 17 00:00:00 2001 From: Thomas Woerner <twoerner@redhat.com> Date: Wed, 28 May 2025 16:17:58 +0200 Subject: [PATCH] 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. --- infra/image/build.sh | 7 ----- infra/image/dockerfile/c10s | 2 ++ infra/image/dockerfile/c8s | 2 ++ infra/image/dockerfile/c9s | 2 ++ infra/image/dockerfile/fedora-latest | 2 ++ infra/image/dockerfile/fedora-rawhide | 2 ++ infra/image/system-service/fixipaip.service | 3 ++- infra/image/system-service/fixipaip.sh | 6 ++--- infra/image/system-service/fixnet.service | 7 ++--- infra/image/system-service/fixnet.sh | 29 ++++++++++++++------- 10 files changed, 36 insertions(+), 26 deletions(-) diff --git a/infra/image/build.sh b/infra/image/build.sh index 71679238..7de49e41 100755 --- a/infra/image/build.sh +++ b/infra/image/build.sh @@ -119,13 +119,6 @@ then deployed=true fi 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}" diff --git a/infra/image/dockerfile/c10s b/infra/image/dockerfile/c10s index 2852aab5..fa22e0ec 100644 --- a/infra/image/dockerfile/c10s +++ b/infra/image/dockerfile/c10s @@ -31,6 +31,8 @@ COPY system-service/fixipaip.sh /root/ COPY system-service/fixnet.service /etc/systemd/system/ COPY system-service/fixipaip.service /etc/systemd/system/ RUN chmod +x /root/fixnet.sh /root/fixipaip.sh +RUN systemctl enable fixnet.service +RUN systemctl enable fixipaip.service STOPSIGNAL RTMIN+3 diff --git a/infra/image/dockerfile/c8s b/infra/image/dockerfile/c8s index 3cf629a0..3737ce79 100644 --- a/infra/image/dockerfile/c8s +++ b/infra/image/dockerfile/c8s @@ -34,6 +34,8 @@ COPY system-service/fixipaip.sh /root/ COPY system-service/fixnet.service /etc/systemd/system/ COPY system-service/fixipaip.service /etc/systemd/system/ RUN chmod +x /root/fixnet.sh /root/fixipaip.sh +RUN systemctl enable fixnet.service +RUN systemctl enable fixipaip.service STOPSIGNAL RTMIN+3 diff --git a/infra/image/dockerfile/c9s b/infra/image/dockerfile/c9s index daf181c4..be729e6f 100644 --- a/infra/image/dockerfile/c9s +++ b/infra/image/dockerfile/c9s @@ -30,6 +30,8 @@ COPY system-service/fixipaip.sh /root/ COPY system-service/fixnet.service /etc/systemd/system/ COPY system-service/fixipaip.service /etc/systemd/system/ RUN chmod +x /root/fixnet.sh /root/fixipaip.sh +RUN systemctl enable fixnet.service +RUN systemctl enable fixipaip.service STOPSIGNAL RTMIN+3 diff --git a/infra/image/dockerfile/fedora-latest b/infra/image/dockerfile/fedora-latest index acdcbcf0..ae6dbcfe 100644 --- a/infra/image/dockerfile/fedora-latest +++ b/infra/image/dockerfile/fedora-latest @@ -33,6 +33,8 @@ COPY system-service/fixipaip.sh /root/ COPY system-service/fixnet.service /etc/systemd/system/ COPY system-service/fixipaip.service /etc/systemd/system/ RUN chmod +x /root/fixnet.sh /root/fixipaip.sh +RUN systemctl enable fixnet.service +RUN systemctl enable fixipaip.service STOPSIGNAL RTMIN+3 diff --git a/infra/image/dockerfile/fedora-rawhide b/infra/image/dockerfile/fedora-rawhide index 42bb8967..c6f37397 100644 --- a/infra/image/dockerfile/fedora-rawhide +++ b/infra/image/dockerfile/fedora-rawhide @@ -33,6 +33,8 @@ COPY system-service/fixipaip.sh /root/ COPY system-service/fixnet.service /etc/systemd/system/ COPY system-service/fixipaip.service /etc/systemd/system/ RUN chmod +x /root/fixnet.sh /root/fixipaip.sh +RUN systemctl enable fixnet.service +RUN systemctl enable fixipaip.service STOPSIGNAL RTMIN+3 diff --git a/infra/image/system-service/fixipaip.service b/infra/image/system-service/fixipaip.service index ec56c0d4..13a6d6b8 100644 --- a/infra/image/system-service/fixipaip.service +++ b/infra/image/system-service/fixipaip.service @@ -1,6 +1,7 @@ [Unit] Description=Fix IPA server IP in IPA Server After=ipa.service +PartOf=ipa.service [Service] Type=oneshot @@ -9,4 +10,4 @@ StandardOutput=journal StandardError=journal [Install] -WantedBy=default.target +WantedBy=ipa.service diff --git a/infra/image/system-service/fixipaip.sh b/infra/image/system-service/fixipaip.sh index bc895bb4..d1d373e0 100755 --- a/infra/image/system-service/fixipaip.sh +++ b/infra/image/system-service/fixipaip.sh @@ -50,9 +50,9 @@ if [ -z "${FORWARDER}" ] || [ "${FORWARDER}" == "127.0.0.1" ]; then fi echo "Fix IPA:" -echo " HOSTNAME: '${HOSTNAME}'" -echo " IP: '${IP}'" -echo " PTR: '${PTR}'" +echo " HOSTNAME: '${HOSTNAME}'" +echo " IP: '${IP}'" +echo " PTR: '${PTR}'" echo " FORWARDER: '${FORWARDER}'" ZONES=$(ipa -e in_server=true dnszone-find --name-from-ip="${HOSTNAME}." \ diff --git a/infra/image/system-service/fixnet.service b/infra/image/system-service/fixnet.service index a546a2f2..c6b0749b 100644 --- a/infra/image/system-service/fixnet.service +++ b/infra/image/system-service/fixnet.service @@ -1,8 +1,5 @@ [Unit] -Description=Fix server IP in IPA Server -Wants=network.target -After=network.target -Before=ipa.service +Description=Fix /etc/hosts and with local DNS also /etc/resolv.conf [Service] Type=oneshot @@ -11,4 +8,4 @@ StandardOutput=journal StandardError=journal [Install] -WantedBy=ipa.service +WantedBy=container-ipa.target diff --git a/infra/image/system-service/fixnet.sh b/infra/image/system-service/fixnet.sh index 0bf6d036..13d0a8fe 100755 --- a/infra/image/system-service/fixnet.sh +++ b/infra/image/system-service/fixnet.sh @@ -39,26 +39,35 @@ if [ -z "${IP}" ] || ! valid_ipv4 "${IP}" ; then exit 1 fi +DOMAIN=${HOSTNAME#*.} + echo "Fix NET:" echo " HOSTNAME: '${HOSTNAME}'" -echo " IP: '${IP}'" +echo " DOMAIN: '${DOMAIN}'" +echo " IP: '${IP}'" echo -if grep -qE "^[^(#\s*)][0-9\.]+\s$HOSTNAME(\s|$)" /etc/hosts -then - sed -i.bak -e "s/.*${HOSTNAME}/${IP}\t${HOSTNAME}/" /etc/hosts -else - echo -e "$IP\t${HOSTNAME} ${HOSTNAME%%.*}" >> /etc/hosts -fi +# /etc/hosts + +sed -i -E "/\s+${HOSTNAME}(\s|$)/d" /etc/hosts +echo -e "$IP\t${HOSTNAME} ${HOSTNAME%%.*}" >> /etc/hosts + +echo "/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 ${HOSTNAME#*.} +search ${DOMAIN} nameserver 127.0.0.1 EOF -echo "/etc/hosts:" -cat "/etc/hosts" echo echo "/etc/resolv.conf:" cat "/etc/resolv.conf" -- GitLab