From 6d8b474b9de777581a1ca95efea015a4bf5a1d0e Mon Sep 17 00:00:00 2001 From: Elkhan Mammadli Date: Thu, 13 Mar 2025 18:48:58 +0400 Subject: [PATCH 1/2] fix: fix almalinux and cloudlinux support Signed-off-by: Elkhan Mammadli --- ...s-for-AlmaLinux-OS-and-CloudLinux-OS.patch | 160 ++++++++---------- SPECS/cloud-init.spec | 2 +- 2 files changed, 70 insertions(+), 92 deletions(-) diff --git a/SOURCES/0001-Improvements-for-AlmaLinux-OS-and-CloudLinux-OS.patch b/SOURCES/0001-Improvements-for-AlmaLinux-OS-and-CloudLinux-OS.patch index a9d1e46..7fc24b7 100644 --- a/SOURCES/0001-Improvements-for-AlmaLinux-OS-and-CloudLinux-OS.patch +++ b/SOURCES/0001-Improvements-for-AlmaLinux-OS-and-CloudLinux-OS.patch @@ -1,36 +1,26 @@ -From 6701ba45d4cc3a888f2275f8f840ce37bc2f4959 Mon Sep 17 00:00:00 2001 -From: Andrew Lukoshko -Date: Thu, 13 Mar 2025 14:24:23 +0000 -Subject: [PATCH] Improvements for AlmaLinux OS and CloudLinux OS +From 25dc8023e0bfb131e6e8171e78bb5939a29525e0 Mon Sep 17 00:00:00 2001 +From: Elkhan Mammadli +Date: Thu, 13 Mar 2025 18:23:03 +0400 +Subject: [PATCH] fix: fix and improve almalinux and cloudlinux support -Add AlmaLinux OS and CloudLinux OS support to: +- Fix cc_ntp module. +- Add support to cc_ca_certs module. +- Improve support for systemd integration. -Modules: -- cc_ca_certs -- cc_ntp -- cc_resolv_conf - -Datasources: -- Rbx Cloud Datasource - -Systemd services: -- cloud-final.service -- cloud-init-local.service -- cloud-init.service +Signed-off-by: Elkhan Mammadli --- - cloudinit/config/cc_ca_certs.py | 8 ++++ - cloudinit/config/cc_ntp.py | 11 ++--- - cloudinit/config/cc_resolv_conf.py | 2 + - cloudinit/settings.py | 2 +- - cloudinit/sources/DataSourceRbxCloud.py | 2 +- - systemd/cloud-final.service.tmpl | 2 +- - systemd/cloud-init-local.service.tmpl | 10 ++-- - systemd/cloud-init.service.tmpl | 4 +- - templates/chrony.conf.almalinux.tmpl | 51 ++++++++++++++++++++ - templates/chrony.conf.cloudlinux.tmpl | 51 ++++++++++++++++++++ - templates/ntp.conf.almalinux.tmpl | 64 +++++++++++++++++++++++++ - templates/ntp.conf.cloudlinux.tmpl | 64 +++++++++++++++++++++++++ - 12 files changed, 253 insertions(+), 18 deletions(-) + cloudinit/config/cc_ca_certs.py | 8 ++++ + cloudinit/config/cc_ntp.py | 3 ++ + cloudinit/settings.py | 2 +- + 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 +- + templates/chrony.conf.almalinux.tmpl | 51 +++++++++++++++++++++ + templates/chrony.conf.cloudlinux.tmpl | 51 +++++++++++++++++++++ + templates/ntp.conf.almalinux.tmpl | 64 +++++++++++++++++++++++++++ + templates/ntp.conf.cloudlinux.tmpl | 64 +++++++++++++++++++++++++++ + 11 files changed, 253 insertions(+), 12 deletions(-) create mode 100644 templates/chrony.conf.almalinux.tmpl create mode 100644 templates/chrony.conf.cloudlinux.tmpl create mode 100644 templates/ntp.conf.almalinux.tmpl @@ -63,48 +53,19 @@ index 8d3fd9a..4dd5843 100644 "debian", "fedora", diff --git a/cloudinit/config/cc_ntp.py b/cloudinit/config/cc_ntp.py -index 9eef24f..1015d43 100644 +index 9eef24f..653db7d 100644 --- a/cloudinit/config/cc_ntp.py +++ b/cloudinit/config/cc_ntp.py -@@ -109,14 +109,6 @@ DISTRO_CLIENT_CONFIG = { - "service_name": "ntpd", - }, - }, -- "centos": { -- "ntp": { -- "service_name": "ntpd", -- }, -- "chrony": { -- "service_name": "chronyd", -- }, -- }, - "cos": { - "chrony": { - "service_name": "chronyd", -@@ -224,6 +216,9 @@ DISTRO_CLIENT_CONFIG = { - for distro in ("opensuse-microos", "opensuse-tumbleweed", "opensuse-leap"): - DISTRO_CLIENT_CONFIG[distro] = DISTRO_CLIENT_CONFIG["opensuse"] - -+for distro in ("almalinux", "centos", "cloudlinux"): -+ DISTRO_CLIENT_CONFIG[distro] = DISTRO_CLIENT_CONFIG["rhel"] -+ +@@ -227,6 +227,9 @@ for distro in ("opensuse-microos", "opensuse-tumbleweed", "opensuse-leap"): for distro in ("sle_hpc", "sle-micro"): DISTRO_CLIENT_CONFIG[distro] = DISTRO_CLIENT_CONFIG["sles"] -diff --git a/cloudinit/config/cc_resolv_conf.py b/cloudinit/config/cc_resolv_conf.py -index aa88919..4eb1d76 100644 ---- a/cloudinit/config/cc_resolv_conf.py -+++ b/cloudinit/config/cc_resolv_conf.py -@@ -57,7 +57,9 @@ meta: MetaSchema = { - "title": "Configure resolv.conf", - "description": MODULE_DESCRIPTION, - "distros": [ -+ "almalinux", - "alpine", -+ "cloudlinux", - "fedora", - "mariner", - "opensuse", ++for distro in ("almalinux", "cloudlinux", "rocky"): ++ DISTRO_CLIENT_CONFIG[distro] = DISTRO_CLIENT_CONFIG["rhel"] ++ + # The schema definition for each cloud-config module is a strict contract for + # describing supported configuration parameters for each cloud-config section. + # It allows cloud-config to validate and alert users to invalid or ignored diff --git a/cloudinit/settings.py b/cloudinit/settings.py index 3a581e5..def6d4b 100644 --- a/cloudinit/settings.py @@ -118,23 +79,32 @@ index 3a581e5..def6d4b 100644 "network": {"renderers": None}, }, "vendor_data": {"enabled": True, "prefix": []}, -diff --git a/cloudinit/sources/DataSourceRbxCloud.py b/cloudinit/sources/DataSourceRbxCloud.py -index 9214f1b..14880ec 100644 ---- a/cloudinit/sources/DataSourceRbxCloud.py -+++ b/cloudinit/sources/DataSourceRbxCloud.py -@@ -60,7 +60,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", "cloudlinux", "rhel"]: - source_param = "-s" - for item in items: - try: +diff --git a/systemd/cloud-config.service.tmpl b/systemd/cloud-config.service.tmpl +index 76e50ae..047969a 100644 +--- a/systemd/cloud-config.service.tmpl ++++ b/systemd/cloud-config.service.tmpl +@@ -5,7 +5,7 @@ After=network-online.target cloud-config.target + After=snapd.seeded.service + Before=systemd-user-sessions.service + Wants=network-online.target cloud-config.target +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "cloudlinux", "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..4faef66 100644 +index 85f423a..578c7f4 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", "cloudlinux", "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 @@ -145,7 +115,7 @@ index 85f423a..4faef66 100644 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 6f3f9d8..493eaf1 100644 +index 6f3f9d8..3f56494 100644 --- a/systemd/cloud-init-local.service.tmpl +++ b/systemd/cloud-init-local.service.tmpl @@ -1,23 +1,23 @@ @@ -153,7 +123,7 @@ index 6f3f9d8..493eaf1 100644 [Unit] Description=Initial cloud-init job (pre-networking) -{% if variant in ["ubuntu", "unknown", "debian", "rhel" ] %} -+{% if variant in ["almalinux", "cloudlinux", "ubuntu", "unknown", "debian", "rhel" ] %} ++{% if variant in ["almalinux", "cloudlinux", "ubuntu", "unknown", "debian", "rhel"] %} DefaultDependencies=no {% endif %} Wants=network-pre.target @@ -176,7 +146,15 @@ index 6f3f9d8..493eaf1 100644 Before=firewalld.target Conflicts=shutdown.target {% endif %} -@@ -33,7 +33,7 @@ ConditionKernelCommandLine=!cloud-init=disabled +@@ -26,14 +26,14 @@ Before=sysinit.target + Conflicts=shutdown.target + {% endif %} + RequiresMountsFor=/var/lib/cloud +-{% if variant == "rhel" %} ++{% if variant in ["almalinux", "cloudlinux", "rhel"] %} + ConditionPathExists=!/etc/cloud/cloud-init.disabled + ConditionKernelCommandLine=!cloud-init=disabled + {% endif %} [Service] Type=oneshot @@ -323,7 +301,7 @@ index 0000000..43b1f5d +#log measurements statistics tracking diff --git a/templates/ntp.conf.almalinux.tmpl b/templates/ntp.conf.almalinux.tmpl new file mode 100644 -index 0000000..9884df5 +index 0000000..6d166aa --- /dev/null +++ b/templates/ntp.conf.almalinux.tmpl @@ -0,0 +1,64 @@ @@ -342,7 +320,7 @@ index 0000000..9884df5 +# Permit all access over the loopback interface. This could +# be tightened as well, but to do so would effect some of +# the administrative functions. -+restrict 127.0.0.1 ++restrict 127.0.0.1 +restrict -6 ::1 + +# Hosts on local network are less restricted. @@ -377,7 +355,7 @@ index 0000000..9884df5 +includefile /etc/ntp/crypto/pw + +# Key file containing the keys and key identifiers used when operating -+# with symmetric key cryptography. ++# with symmetric key cryptography. +keys /etc/ntp/keys + +# Specify the key identifiers which are trusted. @@ -393,7 +371,7 @@ index 0000000..9884df5 +#statistics clockstats cryptostats loopstats peerstats diff --git a/templates/ntp.conf.cloudlinux.tmpl b/templates/ntp.conf.cloudlinux.tmpl new file mode 100644 -index 0000000..9884df5 +index 0000000..6d166aa --- /dev/null +++ b/templates/ntp.conf.cloudlinux.tmpl @@ -0,0 +1,64 @@ @@ -412,7 +390,7 @@ index 0000000..9884df5 +# Permit all access over the loopback interface. This could +# be tightened as well, but to do so would effect some of +# the administrative functions. -+restrict 127.0.0.1 ++restrict 127.0.0.1 +restrict -6 ::1 + +# Hosts on local network are less restricted. @@ -447,7 +425,7 @@ index 0000000..9884df5 +includefile /etc/ntp/crypto/pw + +# Key file containing the keys and key identifiers used when operating -+# with symmetric key cryptography. ++# with symmetric key cryptography. +keys /etc/ntp/keys + +# Specify the key identifiers which are trusted. @@ -462,5 +440,5 @@ index 0000000..9884df5 +# Enable writing of statistics records. +#statistics clockstats cryptostats loopstats peerstats -- -2.43.5 +2.48.1 diff --git a/SPECS/cloud-init.spec b/SPECS/cloud-init.spec index 25dc8da..d74e6a1 100644 --- a/SPECS/cloud-init.spec +++ b/SPECS/cloud-init.spec @@ -275,7 +275,7 @@ fi %config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf %changelog -* Thu Mar 13 2025 Andrew Lukoshko - 23.4-7.el8_10.8.alma.2 +* Thu Mar 13 2025 Elkhan Mammadli - 23.4-7.el8_10.8.alma.2 - Update AlmaLinux patch to fix issue with disabling cloud-init service [albz#500] * Tue Sep 24 2024 Eduard Abdullin - 23.4-7.el8_10.8.alma.1 -- 2.43.5 From 34e8bdf19212158bc49b034c580e6f83968e6c28 Mon Sep 17 00:00:00 2001 From: Andrew Lukoshko Date: Thu, 13 Mar 2025 16:25:29 +0000 Subject: [PATCH 2/2] Bring back cc_resolv_conf.py and DataSourceRbxCloud.py modifications --- ...s-for-AlmaLinux-OS-and-CloudLinux-OS.patch | 61 ++++++++++++++----- 1 file changed, 45 insertions(+), 16 deletions(-) diff --git a/SOURCES/0001-Improvements-for-AlmaLinux-OS-and-CloudLinux-OS.patch b/SOURCES/0001-Improvements-for-AlmaLinux-OS-and-CloudLinux-OS.patch index 7fc24b7..0e690e9 100644 --- a/SOURCES/0001-Improvements-for-AlmaLinux-OS-and-CloudLinux-OS.patch +++ b/SOURCES/0001-Improvements-for-AlmaLinux-OS-and-CloudLinux-OS.patch @@ -1,26 +1,28 @@ -From 25dc8023e0bfb131e6e8171e78bb5939a29525e0 Mon Sep 17 00:00:00 2001 +From 4650b8c8819bd6b9f6163567f2b8f8e94ee5ee3c Mon Sep 17 00:00:00 2001 From: Elkhan Mammadli Date: Thu, 13 Mar 2025 18:23:03 +0400 -Subject: [PATCH] fix: fix and improve almalinux and cloudlinux support +Subject: [PATCH] Improvements for AlmaLinux OS and CloudLinux OS - Fix cc_ntp module. - Add support to cc_ca_certs module. - Improve support for systemd integration. -Signed-off-by: Elkhan Mammadli +Signed-off-by: Andrew Lukoshko --- - cloudinit/config/cc_ca_certs.py | 8 ++++ - cloudinit/config/cc_ntp.py | 3 ++ - cloudinit/settings.py | 2 +- - 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 +- - templates/chrony.conf.almalinux.tmpl | 51 +++++++++++++++++++++ - templates/chrony.conf.cloudlinux.tmpl | 51 +++++++++++++++++++++ - templates/ntp.conf.almalinux.tmpl | 64 +++++++++++++++++++++++++++ - templates/ntp.conf.cloudlinux.tmpl | 64 +++++++++++++++++++++++++++ - 11 files changed, 253 insertions(+), 12 deletions(-) + cloudinit/config/cc_ca_certs.py | 8 ++++ + cloudinit/config/cc_ntp.py | 3 ++ + cloudinit/config/cc_resolv_conf.py | 2 + + cloudinit/settings.py | 2 +- + cloudinit/sources/DataSourceRbxCloud.py | 2 +- + 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 +- + templates/chrony.conf.almalinux.tmpl | 51 ++++++++++++++++++++ + templates/chrony.conf.cloudlinux.tmpl | 51 ++++++++++++++++++++ + templates/ntp.conf.almalinux.tmpl | 64 +++++++++++++++++++++++++ + templates/ntp.conf.cloudlinux.tmpl | 64 +++++++++++++++++++++++++ + 13 files changed, 256 insertions(+), 13 deletions(-) create mode 100644 templates/chrony.conf.almalinux.tmpl create mode 100644 templates/chrony.conf.cloudlinux.tmpl create mode 100644 templates/ntp.conf.almalinux.tmpl @@ -66,6 +68,20 @@ index 9eef24f..653db7d 100644 # The schema definition for each cloud-config module is a strict contract for # describing supported configuration parameters for each cloud-config section. # It allows cloud-config to validate and alert users to invalid or ignored +diff --git a/cloudinit/config/cc_resolv_conf.py b/cloudinit/config/cc_resolv_conf.py +index aa88919..4eb1d76 100644 +--- a/cloudinit/config/cc_resolv_conf.py ++++ b/cloudinit/config/cc_resolv_conf.py +@@ -57,7 +57,9 @@ meta: MetaSchema = { + "title": "Configure resolv.conf", + "description": MODULE_DESCRIPTION, + "distros": [ ++ "almalinux", + "alpine", ++ "cloudlinux", + "fedora", + "mariner", + "opensuse", diff --git a/cloudinit/settings.py b/cloudinit/settings.py index 3a581e5..def6d4b 100644 --- a/cloudinit/settings.py @@ -79,6 +95,19 @@ index 3a581e5..def6d4b 100644 "network": {"renderers": None}, }, "vendor_data": {"enabled": True, "prefix": []}, +diff --git a/cloudinit/sources/DataSourceRbxCloud.py b/cloudinit/sources/DataSourceRbxCloud.py +index 9214f1b..14880ec 100644 +--- a/cloudinit/sources/DataSourceRbxCloud.py ++++ b/cloudinit/sources/DataSourceRbxCloud.py +@@ -60,7 +60,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", "cloudlinux", "rhel"]: + source_param = "-s" + for item in items: + try: diff --git a/systemd/cloud-config.service.tmpl b/systemd/cloud-config.service.tmpl index 76e50ae..047969a 100644 --- a/systemd/cloud-config.service.tmpl @@ -440,5 +469,5 @@ index 0000000..6d166aa +# Enable writing of statistics records. +#statistics clockstats cryptostats loopstats peerstats -- -2.48.1 +2.43.5 -- 2.43.5