You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
one-context/SPECS/one-context.spec

367 lines
10 KiB

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 <<EOT
# The loopback network interface
auto lo
iface lo inet loopback
EOT
# Do not reconfigure network interfaces on boot
# if [ -f /etc/default/networking ]; then
# if ! grep -q ^CONFIGURE_INTERFACES /etc/default/networking; then
# echo 'CONFIGURE_INTERFACES=no' >> /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 <tigro@msvsphere-os.ru> - 6.6.1-1.inferit.1
- drop compression and digest options
* Tue Jun 27 2023 Alexey Lyubimov <a.lyubimov@msvsphere.ru> - 6.6.1-1.inferit
- Update to v6.6.1
- Redebranded for MSVSphere
* Fri Apr 28 2023 Alexey Lyubimov <a.lyubimov@msvsphere.ru> - 6.6.0-1.inferit
- De-branded for MSVSphere
- Initial built for MSVSphere 9.1