Name: one-context Version: 6.6.1 Release: 1%{?dist}.inferit.1 Summary: OpenNebula Contextualization Package AutoReqProv: no Group: System Environment/Base License: Apache 2.0 URL: http://opennebula.org Source: https://github.com/OpenNebula/%{name}/archive/refs/tags/addon-context-linux-%{version}.tar.gz Patch1: addon-context-linux-6.6.1-msvsphere.patch Patch2: addon-context-linux-6.6.1-generate.patch Requires: util-linux Requires: bash Requires: curl Requires: bind-utils Requires: cloud-utils-growpart Requires: parted Requires: ruby Requires: rubygem-json Requires: sudo Requires: shadow-utils Requires: openssh-server Requires: qemu-guest-agent Requires: gawk Requires: virt-what Recommends: open-vm-tools Conflicts: cloud-init Conflicts: one-context-ec2 Obsoletes: cloud-init <= 21.4 BuildArch: noarch # Disable shebang mangling %undefine __brp_mangle_shebangs %description Contextualization tools for the virtual machine running in the OpenNebula cloud. Based on parameters provided by the cloud controller configures the networking, initial user password, SSH keys, runs custom start scripts, resizes the root filesystem, and provides tools to communicate with OneGate service. Check the OpenNebula web page (http://opennebula.org) to get the support. %prep %autosetup -v -n addon-context-linux-%{version} -p1 %build TARGET=el9 NAME=one-context BUILD_DIR=./out ./generate.sh %install cp -a out/* %{buildroot}/ %post upgrade() { : #!/usr/bin/env bash # Reload udev rules udevadm control --reload >/dev/null 2>&1 || : ### Enable services ######################################## SERVICES=${SERVICES:-one-context-local one-context-online one-context} TIMERS=${TIMERS:-one-context-reconfigure.timer} if which systemctl >/dev/null 2>&1 && \ [ -d /etc/systemd ] && \ [ -f /usr/lib/systemd/system/one-context.service ]; then systemctl daemon-reload >/dev/null 2>&1 || : for S in ${SERVICES} ${TIMERS}; do systemctl enable "${S}" >/dev/null 2>&1 done fi if which chkconfig >/dev/null 2>&1; then for S in ${SERVICES}; do chkconfig --add "${S}" >/dev/null 2>&1 done # EL6: refresh initramfs via dracut for growroot module if [ -f /usr/share/dracut/modules.d/50growroot/install ]; then for I in $(find /boot -name 'initramfs-*.img'); do KERNEL_VERS=$(echo "${I}" | sed -e 's/.*initramfs-\(.*\)\.img/\1/') dracut -f "${I}" "${KERNEL_VERS}" || : done fi elif which update-rc.d >/dev/null 2>&1; then for S in ${SERVICES}; do update-rc.d "${S}" enable >/dev/null 2>&1 update-rc.d "${S}" defaults >/dev/null 2>&1 done elif which rc-update >/dev/null 2>&1; then for S in ${SERVICES}; do rc-update add "${S}" boot >/dev/null 2>&1 done # Add crontab action for 1min schedules if ! crontab -l -u root | grep -qF '/etc/periodic/1min'; then ( crontab -l -u root echo -e '\n# Added by one-context' echo -e '* * * * * run-parts /etc/periodic/1min' ) | crontab -u root - fi # When existing file is changed, the new one might be created with # .apk-new suffix. Such files need to be processed by update-conf. if update-conf -al 2>/dev/null | grep -q context; then echo 'WARNING: Run update-conf to process any updated one-context files in /etc!' >&2 fi elif [ -x /bin/freebsd-version ]; then : else echo 'WARNING: Contextualization service not enabled automatically' >&2 fi } _install() { : #!/usr/bin/env bash SERVICES=${SERVICES:-one-context-local one-context-online one-context} TIMERS=${TIMERS:-one-context-reconfigure.timer} rm -f /etc/udev/rules.d/70-persistent-cd.rules rm -f /etc/udev/rules.d/70-persistent-net.rules # Reload udev rules udevadm control --reload >/dev/null 2>&1 || : ### Enable services ######################################## if which systemctl >/dev/null 2>&1 && \ [ -d /etc/systemd ] && \ [ -f /usr/lib/systemd/system/one-context.service ]; then systemctl daemon-reload >/dev/null 2>&1 || : for S in ${SERVICES} ${TIMERS}; do systemctl enable "${S}" >/dev/null 2>&1 done fi if which chkconfig >/dev/null 2>&1; then for S in ${SERVICES}; do chkconfig --add "${S}" >/dev/null 2>&1 done # EL6: refresh initramfs via dracut for growroot module if [ -f /usr/share/dracut/modules.d/50growroot/install ]; then for I in $(find /boot -name 'initramfs-*.img'); do KERNEL_VERS=$(echo "${I}" | sed -e 's/.*initramfs-\(.*\)\.img/\1/') dracut -f "${I}" "${KERNEL_VERS}" || : done fi elif which update-rc.d >/dev/null 2>&1; then for S in ${SERVICES}; do update-rc.d "${S}" enable >/dev/null 2>&1 update-rc.d "${S}" defaults >/dev/null 2>&1 done elif which rc-update >/dev/null 2>&1; then for S in ${SERVICES}; do rc-update add "${S}" boot >/dev/null 2>&1 done # Add crontab action for 1min schedules if ! crontab -l -u root | grep -qF '/etc/periodic/1min'; then ( crontab -l -u root echo -e '\n# Added by one-context' echo -e '* * * * * run-parts /etc/periodic/1min' ) | crontab -u root - fi # When existing file is changed, the new one might be created with # .apk-new suffix. Such files need to be processed by update-conf. if update-conf -al 2>/dev/null | grep -q context; then echo 'WARNING: Run update-conf to process any updated one-context files in /etc!' >&2 fi elif [ -x /bin/freebsd-version ]; then : else echo 'WARNING: Contextualization service not enabled automatically' >&2 fi ### Cleanup network configuration ########################## if [ -f /etc/sysctl.d/50-one-context.conf ]; then rm -f /etc/sysctl.d/50-one-context.conf fi # Debian based distros if [ -d /etc/network ]; then # Prepare network files cp /etc/network/interfaces "/etc/network/interfaces.$(date '+%s')" rm -rf /etc/network/interfaces.d cat > /etc/network/interfaces <> /etc/default/networking # fi # fi fi # Red Hat based distros if [ -d /etc/sysconfig/network-scripts/ ]; then # Prepare network files find /etc/sysconfig/network-scripts -type f \ \( -name 'ifcfg-*' -o -name 'route-*' -o -name 'route6-*' \) \ ! -name 'ifcfg-lo' ! -name 'route-lo' ! -name 'route6-lo' \ -exec rm -f {} \; fi # openSUSE based distros if [ -d /etc/sysconfig/network/ ]; then # Prepare network files find /etc/sysconfig/network -type f \ \( -name 'ifcfg-*' -o -name 'ifroute-*' -o -name 'ifsysctl-*' \) \ ! -name 'ifcfg-lo' ! -name 'ifroute-lo' ! -name 'ifsysctl-lo' \ -exec rm -f {} \; rm -f /etc/sysconfig/network/routes /etc/sysconfig/network/ifsysctl sed -i '/^NETCONFIG_DNS_STATIC_SERVERS=/ s/=.*$/=""/' /etc/sysconfig/network/config sed -i '/^NETCONFIG_DNS_STATIC_SEARCHLIST=/ s/=.*$/=""/' /etc/sysconfig/network/config fi # Netplan if [ -d /etc/netplan/ ]; then rm -f /etc/netplan/* fi # NetworkManager if [ -d /etc/NetworkManager/system-connections/ ]; then rm -f /etc/NetworkManager/system-connections/* fi # systemd-networkd if [ -d /etc/systemd/network/ ]; then rm -f \ /etc/systemd/networkd/*.network \ /etc/systemd/networkd/*.link fi # FreeBSD based distros #TODO: pfsense paths? if [ -x /bin/freebsd-version ]; then rm -f /etc/rc.conf.d/network /etc/rc.conf.d/routing if [ -f /etc/rc.conf ]; then sed -i '' \ -e '/^ifconfig_/d' \ -e '/^route_/d' \ -e '/^static_routes/d' \ -e '/^defaultrouter/d' \ /etc/rc.conf fi fi } if [ "${1}" -eq 1 ] then # "after install" goes here _install elif [ "${1}" -gt 1 ] then # "after upgrade" goes here upgrade fi %preun if [ "${1}" -eq 0 ] then : #!/usr/bin/env bash SERVICES=${SERVICES:-one-context one-context-online one-context-local one-context-reconfigure one-context-reconfigure-delayed} TIMERS=${TIMERS:-one-context-reconfigure.timer} # Disable services if which systemctl >/dev/null 2>&1 && [ -d /etc/systemd ]; then for S in ${TIMERS} ${SERVICES}; do systemctl --no-reload disable "${S}" >/dev/null 2>&1 || : systemctl stop "${S}" >/dev/null 2>&1 || : done fi if which chkconfig >/dev/null 2>&1; then for S in ${SERVICES}; do chkconfig --del "${S}" >/dev/null 2>&1 || : done elif which update-rc.d >/dev/null 2>&1; then for S in ${SERVICES}; do update-rc.d -f "${S}" remove >/dev/null 2>&1 || : done elif which rc-update >/dev/null 2>&1; then for S in ${SERVICES}; do rc-update del "${S}" boot >/dev/null 2>&1 || : done fi fi %postun if [ "${1}" -eq 0 ] then : #!/usr/bin/env bash udevadm control --reload >/dev/null 2>&1 || : if which systemctl >/dev/null 2>&1 && [ -d /etc/systemd ]; then systemctl daemon-reload >/dev/null 2>&1 || : fi fi %files %defattr(-,root,root,-) %config(noreplace) /etc/NetworkManager/conf.d/10-globally-managed-devices.conf %config(noreplace) /etc/NetworkManager/conf.d/one-context.conf %config(noreplace) /etc/udev/rules.d/75-cd-aliases-generator.rules %config(noreplace) /etc/udev/rules.d/75-persistent-net-generator.rules %dir /etc/one-context.d %dir /etc/one-context.d/loc-10-network.d /etc/one-context.d/* /etc/one-context.d/loc-10-network.d/* /lib/udev/rules.d/* /usr/bin/* /usr/lib/systemd/system/* /usr/sbin/* %changelog * Wed Oct 18 2023 Arkady L. Shane - 6.6.1-1.inferit.1 - drop compression and digest options * Tue Jun 27 2023 Alexey Lyubimov - 6.6.1-1.inferit - Update to v6.6.1 - Redebranded for MSVSphere * Fri Apr 28 2023 Alexey Lyubimov - 6.6.0-1.inferit - De-branded for MSVSphere - Initial built for MSVSphere 9.1