From 964d8d3be9fffa31d5cc9ce675b11b32b082bff8 Mon Sep 17 00:00:00 2001 From: Andrew Lukoshko Date: Fri, 28 Oct 2022 17:40:16 +0200 Subject: [PATCH] Improve AlmaLinux OS support and compatibility --- ...Yum-Add-Repo-module-for-AlmaLinux-OS.patch | 29 -- ...maLinux-OS-support-and-compatibility.patch | 304 ++++++++++++++++++ SPECS/cloud-init.spec | 2 +- 3 files changed, 305 insertions(+), 30 deletions(-) delete mode 100644 SOURCES/0001-Fix-the-Yum-Add-Repo-module-for-AlmaLinux-OS.patch create mode 100644 SOURCES/0001-Improve-AlmaLinux-OS-support-and-compatibility.patch diff --git a/SOURCES/0001-Fix-the-Yum-Add-Repo-module-for-AlmaLinux-OS.patch b/SOURCES/0001-Fix-the-Yum-Add-Repo-module-for-AlmaLinux-OS.patch deleted file mode 100644 index 523ed9b..0000000 --- a/SOURCES/0001-Fix-the-Yum-Add-Repo-module-for-AlmaLinux-OS.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 68c9e63c581640667f23b87994c446a56136548a Mon Sep 17 00:00:00 2001 -From: Elkhan Mammadli -Date: Wed, 26 Oct 2022 16:37:21 +0400 -Subject: [PATCH 1/1] Fix the Yum Add Repo module for AlmaLinux OS - -Include AlmaLinux OS in the list of distributions -that supports cc_yum_add_repo - -Signed-off-by: Elkhan Mammadli ---- - config/cloud.cfg.tmpl | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/config/cloud.cfg.tmpl b/config/cloud.cfg.tmpl -index fb4b456..15747bb 100644 ---- a/config/cloud.cfg.tmpl -+++ b/config/cloud.cfg.tmpl -@@ -111,7 +111,7 @@ cloud_config_modules: - - locale - {% endif %} - - set-passwords --{% if variant in ["rhel", "fedora", "photon"] %} -+{% if variant in ["almalinux", "rhel", "fedora", "photon"] %} - {% if variant not in ["photon"] %} - - spacewalk - {% endif %} --- -2.37.3 - diff --git a/SOURCES/0001-Improve-AlmaLinux-OS-support-and-compatibility.patch b/SOURCES/0001-Improve-AlmaLinux-OS-support-and-compatibility.patch new file mode 100644 index 0000000..7239683 --- /dev/null +++ b/SOURCES/0001-Improve-AlmaLinux-OS-support-and-compatibility.patch @@ -0,0 +1,304 @@ +From 6ee4b150d57ca53c944a4a22147ddadec90300d3 Mon Sep 17 00:00:00 2001 +From: Elkhan Mammadli +Date: Fri, 28 Oct 2022 19:23:12 +0400 +Subject: [PATCH 1/1] Improve AlmaLinux OS support and compatibility + +Improve the compatibility with the upstream + +Signed-off-by: Elkhan Mammadli +--- + cloudinit/settings.py | 2 +- + cloudinit/sources/DataSourceRbxCloud.py | 2 +- + config/cloud.cfg.tmpl | 10 +++++----- + packages/pkg-deps.json | 14 ++++++++++++++ + systemd/cloud-config.service.tmpl | 2 +- + systemd/cloud-final.service.tmpl | 4 ++-- + systemd/cloud-init-local.service.tmpl | 12 ++++++------ + systemd/cloud-init.service.tmpl | 4 ++-- + tests/unittests/test_net.py | 1 + + tests/unittests/test_render_cloudcfg.py | 1 + + tools/read-dependencies | 8 ++++++-- + 11 files changed, 40 insertions(+), 20 deletions(-) + +diff --git a/cloudinit/settings.py b/cloudinit/settings.py +index 38a90b7..19b9cf1 100644 +--- a/cloudinit/settings.py ++++ b/cloudinit/settings.py +@@ -58,7 +58,7 @@ CFG_BUILTIN = { + 'cloud_dir': '/var/lib/cloud', + 'templates_dir': '/etc/cloud/templates/', + }, +- 'distro': 'rhel', ++ 'distro': 'almalinux', + 'network': {'renderers': None}, + }, + "vendor_data": {"enabled": True, "prefix": []}, +diff --git a/cloudinit/sources/DataSourceRbxCloud.py b/cloudinit/sources/DataSourceRbxCloud.py +index 14ac77e..7cd14a1 100644 +--- a/cloudinit/sources/DataSourceRbxCloud.py ++++ b/cloudinit/sources/DataSourceRbxCloud.py +@@ -55,7 +55,7 @@ def _sub_arp(cmd): + + def gratuitous_arp(items, distro): + source_param = "-S" +- if distro.name in ["fedora", "centos", "rhel"]: ++ if distro.name in ["almalinux", "fedora", "centos", "rhel"]: + source_param = "-s" + for item in items: + try: +diff --git a/config/cloud.cfg.tmpl b/config/cloud.cfg.tmpl +index 80ab4f9..ce63c1b 100644 +--- a/config/cloud.cfg.tmpl ++++ b/config/cloud.cfg.tmpl +@@ -34,7 +34,7 @@ disable_root: true + + {% if variant in ["almalinux", "alpine", "amazon", "centos", "cloudlinux", "eurolinux", + "fedora", "miraclelinux", "openEuler", "rhel", "rocky", "virtuozzo"] %} +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service,_netdev', '0', '2'] + {% else %} + mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2'] +@@ -70,7 +70,7 @@ network: + config: disabled + {% endif %} + +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + # Default redhat settings: + ssh_deletekeys: true + ssh_genkeytypes: ['rsa', 'ecdsa', 'ed25519'] +@@ -119,7 +119,7 @@ cloud_config_modules: + {% endif %} + {% if variant not in ["photon"] %} + - ssh-import-id +-{% if variant not in ["rhel"] %} ++{% if variant not in ["almalinux", "rhel"] %} + - keyboard + {% endif %} + - locale +@@ -128,7 +128,7 @@ cloud_config_modules: + {% if variant in ["rhel"] %} + - rh_subscription + {% endif %} +-{% if variant in ["rhel", "fedora", "photon"] %} ++{% if variant in ["almalinux", "rhel", "fedora", "photon"] %} + {% if variant not in ["photon"] %} + - spacewalk + {% endif %} +@@ -275,7 +275,7 @@ system_info: + groups: [adm, sudo] + {% elif variant == "arch" %} + groups: [wheel, users] +-{% elif variant == "rhel" %} ++{% elif variant in ["almalinux", "rhel"] %} + groups: [adm, systemd-journal] + {% else %} + groups: [wheel, adm, systemd-journal] +diff --git a/packages/pkg-deps.json b/packages/pkg-deps.json +index eaf1346..0c22fd4 100644 +--- a/packages/pkg-deps.json ++++ b/packages/pkg-deps.json +@@ -13,6 +13,20 @@ + "procps" + ] + }, ++ "almalinux" : { ++ "build-requires" : [ ++ "python3-devel" ++ ], ++ "requires" : [ ++ "e2fsprogs", ++ "iproute", ++ "net-tools", ++ "procps", ++ "rsyslog", ++ "shadow-utils", ++ "sudo" ++ ] ++ }, + "centos" : { + "build-requires" : [ + "python3-devel" +diff --git a/systemd/cloud-config.service.tmpl b/systemd/cloud-config.service.tmpl +index d5568a6..4b88f83 100644 +--- a/systemd/cloud-config.service.tmpl ++++ b/systemd/cloud-config.service.tmpl +@@ -4,7 +4,7 @@ Description=Apply the settings specified in cloud-config + After=network-online.target cloud-config.target + After=snapd.seeded.service + Wants=network-online.target cloud-config.target +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + ConditionPathExists=!/etc/cloud/cloud-init.disabled + ConditionKernelCommandLine=!cloud-init=disabled + {% endif %} +diff --git a/systemd/cloud-final.service.tmpl b/systemd/cloud-final.service.tmpl +index 85f423a..aa5990c 100644 +--- a/systemd/cloud-final.service.tmpl ++++ b/systemd/cloud-final.service.tmpl +@@ -7,7 +7,7 @@ After=multi-user.target + Before=apt-daily.service + {% endif %} + Wants=network-online.target cloud-config.service +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + ConditionPathExists=!/etc/cloud/cloud-init.disabled + ConditionKernelCommandLine=!cloud-init=disabled + {% endif %} +@@ -19,7 +19,7 @@ ExecStart=/usr/bin/cloud-init modules --mode=final + RemainAfterExit=yes + TimeoutSec=0 + KillMode=process +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + # Restart NetworkManager if it is present and running. + ExecStartPost=/bin/sh -c 'u=NetworkManager.service; \ + out=$(systemctl show --property=SubState $u) || exit; \ +diff --git a/systemd/cloud-init-local.service.tmpl b/systemd/cloud-init-local.service.tmpl +index a6b8265..147036f 100644 +--- a/systemd/cloud-init-local.service.tmpl ++++ b/systemd/cloud-init-local.service.tmpl +@@ -1,23 +1,23 @@ + ## template:jinja + [Unit] + Description=Initial cloud-init job (pre-networking) +-{% if variant in ["ubuntu", "unknown", "debian", "rhel" ] %} ++{% if variant in ["almalinux", "ubuntu", "unknown", "debian", "rhel"] %} + DefaultDependencies=no + {% endif %} + Wants=network-pre.target + After=hv_kvp_daemon.service + After=systemd-remount-fs.service +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + Requires=dbus.socket + After=dbus.socket + {% endif %} + Before=NetworkManager.service +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + Before=network.service + {% endif %} + Before=network-pre.target + Before=shutdown.target +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + Before=firewalld.target + Conflicts=shutdown.target + {% endif %} +@@ -26,14 +26,14 @@ Before=sysinit.target + Conflicts=shutdown.target + {% endif %} + RequiresMountsFor=/var/lib/cloud +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + ConditionPathExists=!/etc/cloud/cloud-init.disabled + ConditionKernelCommandLine=!cloud-init=disabled + {% endif %} + + [Service] + Type=oneshot +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + ExecStartPre=/bin/mkdir -p /run/cloud-init + ExecStartPre=/sbin/restorecon /run/cloud-init + ExecStartPre=/usr/bin/touch /run/cloud-init/enabled +diff --git a/systemd/cloud-init.service.tmpl b/systemd/cloud-init.service.tmpl +index c170aef..08da708 100644 +--- a/systemd/cloud-init.service.tmpl ++++ b/systemd/cloud-init.service.tmpl +@@ -1,7 +1,7 @@ + ## template:jinja + [Unit] + Description=Initial cloud-init job (metadata service crawler) +-{% if variant not in ["photon", "rhel"] %} ++{% if variant not in ["almalinux", "photon", "rhel"] %} + DefaultDependencies=no + {% endif %} + Wants=cloud-init-local.service +@@ -36,7 +36,7 @@ Before=shutdown.target + Conflicts=shutdown.target + {% endif %} + Before=systemd-user-sessions.service +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "rhel"] %} + ConditionPathExists=!/etc/cloud/cloud-init.disabled + ConditionKernelCommandLine=!cloud-init=disabled + {% endif %} +diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py +index 591241b..05aa3f9 100644 +--- a/tests/unittests/test_net.py ++++ b/tests/unittests/test_net.py +@@ -6254,6 +6254,7 @@ class TestNetRenderers(CiTestCase): + def test_sysconfig_available_uses_variant_mapping(self, m_info, m_avail): + m_avail.return_value = True + variants = [ ++ "almalinux", + "suse", + "centos", + "eurolinux", +diff --git a/tests/unittests/test_render_cloudcfg.py b/tests/unittests/test_render_cloudcfg.py +index 9f95d44..f93a43d 100644 +--- a/tests/unittests/test_render_cloudcfg.py ++++ b/tests/unittests/test_render_cloudcfg.py +@@ -9,6 +9,7 @@ from tests.unittests.helpers import cloud_init_project_dir + + # TODO(Look to align with tools.render-cloudcfg or cloudinit.distos.OSFAMILIES) + DISTRO_VARIANTS = [ ++ "almalinux", + "amazon", + "arch", + "centos", +diff --git a/tools/read-dependencies b/tools/read-dependencies +index efa5879..7888c8f 100755 +--- a/tools/read-dependencies ++++ b/tools/read-dependencies +@@ -22,6 +22,7 @@ DEFAULT_REQUIREMENTS = 'requirements.txt' + + # Map the appropriate package dir needed for each distro choice + DISTRO_PKG_TYPE_MAP = { ++ 'almalinux': 'redhat', + 'centos': 'redhat', + 'eurolinux': 'redhat', + 'miraclelinux': 'redhat', +@@ -68,6 +69,7 @@ ZYPPER_INSTALL = [ + '--auto-agree-with-licenses'] + + DRY_DISTRO_INSTALL_PKG_CMD = { ++ 'almalinux': ['yum', 'install', '--assumeyes'], + 'rocky': ['yum', 'install', '--assumeyes'], + 'centos': ['yum', 'install', '--assumeyes'], + 'eurolinux': ['yum', 'install', '--assumeyes'], +@@ -76,6 +78,7 @@ DRY_DISTRO_INSTALL_PKG_CMD = { + } + + DISTRO_INSTALL_PKG_CMD = { ++ 'almalinux': MAYBE_RELIABLE_YUM_INSTALL, + 'rocky': MAYBE_RELIABLE_YUM_INSTALL, + 'eurolinux': MAYBE_RELIABLE_YUM_INSTALL, + 'miraclelinux': MAYBE_RELIABLE_YUM_INSTALL, +@@ -90,6 +93,7 @@ DISTRO_INSTALL_PKG_CMD = { + + # List of base system packages required to enable ci automation + CI_SYSTEM_BASE_PKGS = { ++ 'almalinux': ['python3-tox'], + 'common': ['make', 'sudo', 'tar'], + 'eurolinux': ['python3-tox'], + 'miraclelinux': ['python3-tox'], +@@ -285,10 +289,10 @@ def pkg_install(pkg_list, distro, test_distro=False, dry_run=False): + cmd = DRY_DISTRO_INSTALL_PKG_CMD[distro] + install_cmd.extend(cmd) + +- if distro in ['centos', 'redhat', 'rocky', 'eurolinux']: ++ if distro in ['almalinux', 'centos', 'redhat', 'rocky', 'eurolinux']: + # CentOS and Redhat need epel-release to access oauthlib and jsonschema + subprocess.check_call(install_cmd + ['epel-release']) +- if distro in ['suse', 'opensuse', 'redhat', 'rocky', 'centos', 'eurolinux']: ++ if distro in ['almalinux', 'suse', 'opensuse', 'redhat', 'rocky', 'centos', 'eurolinux']: + pkg_list.append('rpm-build') + subprocess.check_call(install_cmd + pkg_list) + +-- +2.37.3 + diff --git a/SPECS/cloud-init.spec b/SPECS/cloud-init.spec index 77c19e2..b2cd32f 100644 --- a/SPECS/cloud-init.spec +++ b/SPECS/cloud-init.spec @@ -48,7 +48,7 @@ Patch17: ci-Revert-Use-Network-Manager-and-Netplan-as-default-re.patch Patch18: ci-Revert-Revert-Setting-highest-autoconnect-priority-f.patch # AlmaLinux patches -Patch100: 0001-Fix-the-Yum-Add-Repo-module-for-AlmaLinux-OS.patch +Patch100: 0001-Improve-AlmaLinux-OS-support-and-compatibility.patch # Source-git patches