257 lines
8.3 KiB
Diff
257 lines
8.3 KiB
Diff
|
From 8e599c618ba33f7ed572f752fc9201ca44e41868 Mon Sep 17 00:00:00 2001
|
||
|
From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
|
||
|
Date: Wed, 18 May 2022 16:21:45 +0200
|
||
|
Subject: [PATCH 4/5] Align rhel custom files with upstream (#1431)
|
||
|
|
||
|
RH-Author: Emanuele Giuseppe Esposito <eesposit@redhat.com>
|
||
|
RH-MergeRequest: 26: Align rhel custom files with upstream (#1431)
|
||
|
RH-Commit: [1/2] edac80c4fa3a11d093ee0e7260796566a7eb141e (eesposit/cloud-init-centos-)
|
||
|
RH-Bugzilla: 2088448
|
||
|
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||
|
|
||
|
commit 9624758f91b61f4711e8d7b5c83075b5d23e0c43
|
||
|
Author: Emanuele Giuseppe Esposito <eesposit@redhat.com>
|
||
|
Date: Wed May 18 15:18:04 2022 +0200
|
||
|
|
||
|
Align rhel custom files with upstream (#1431)
|
||
|
|
||
|
So far RHEL had its own custom .service and cloud.cfg files,
|
||
|
that diverged from upstream. We always replaced the generated files
|
||
|
with the ones we had.
|
||
|
|
||
|
This caused only confusion and made it harder to rebase and backport
|
||
|
patches targeting these files.
|
||
|
At the same time, we are going to delete our custom downstream-only files
|
||
|
and use the ones generated by .tmpl.
|
||
|
|
||
|
The mapping is:
|
||
|
config/cloud.cfg.tmpl -> rhel/cloud.cfg
|
||
|
systemd/* -> rhel/systemd/*
|
||
|
|
||
|
Such rhel-specific files are open and available in the Centos repo:
|
||
|
https://gitlab.com/redhat/centos-stream/src/cloud-init
|
||
|
|
||
|
With this commit, we are also introducing modules in cloud.cfg that
|
||
|
were not in the default rhel cfg file, even though they should already
|
||
|
have been there with previous rebases and releases.
|
||
|
Anyways such modules support rhel as distro, and
|
||
|
therefore should cause no harm.
|
||
|
|
||
|
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
|
||
|
|
||
|
RHBZ: 2082071
|
||
|
|
||
|
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
|
||
|
---
|
||
|
config/cloud.cfg.tmpl | 23 +++++++++++++++++++++++
|
||
|
systemd/cloud-config.service.tmpl | 4 ++++
|
||
|
systemd/cloud-final.service.tmpl | 13 +++++++++++++
|
||
|
systemd/cloud-init-local.service.tmpl | 22 +++++++++++++++++++++-
|
||
|
systemd/cloud-init.service.tmpl | 6 +++++-
|
||
|
tests/unittests/test_render_cloudcfg.py | 1 +
|
||
|
6 files changed, 67 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/config/cloud.cfg.tmpl b/config/cloud.cfg.tmpl
|
||
|
index 86beee3c..f4d2fd14 100644
|
||
|
--- a/config/cloud.cfg.tmpl
|
||
|
+++ b/config/cloud.cfg.tmpl
|
||
|
@@ -34,7 +34,11 @@ disable_root: true
|
||
|
|
||
|
{% if variant in ["almalinux", "alpine", "amazon", "centos", "cloudlinux", "eurolinux",
|
||
|
"fedora", "miraclelinux", "openEuler", "rhel", "rocky", "virtuozzo"] %}
|
||
|
+{% if variant == "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']
|
||
|
+{% endif %}
|
||
|
{% if variant == "amazon" %}
|
||
|
resize_rootfs: noblock
|
||
|
{% endif %}
|
||
|
@@ -66,6 +70,14 @@ network:
|
||
|
config: disabled
|
||
|
{% endif %}
|
||
|
|
||
|
+{% if variant == "rhel" %}
|
||
|
+# Default redhat settings:
|
||
|
+ssh_deletekeys: true
|
||
|
+ssh_genkeytypes: ['rsa', 'ecdsa', 'ed25519']
|
||
|
+syslog_fix_perms: ~
|
||
|
+disable_vmware_customization: false
|
||
|
+{% endif %}
|
||
|
+
|
||
|
# The modules that run in the 'init' stage
|
||
|
cloud_init_modules:
|
||
|
- migrator
|
||
|
@@ -107,10 +119,15 @@ cloud_config_modules:
|
||
|
{% endif %}
|
||
|
{% if variant not in ["photon"] %}
|
||
|
- ssh-import-id
|
||
|
+{% if variant not in ["rhel"] %}
|
||
|
- keyboard
|
||
|
+{% endif %}
|
||
|
- locale
|
||
|
{% endif %}
|
||
|
- set-passwords
|
||
|
+{% if variant in ["rhel"] %}
|
||
|
+ - rh_subscription
|
||
|
+{% endif %}
|
||
|
{% if variant in ["rhel", "fedora", "photon"] %}
|
||
|
{% if variant not in ["photon"] %}
|
||
|
- spacewalk
|
||
|
@@ -239,6 +256,10 @@ system_info:
|
||
|
name: ec2-user
|
||
|
lock_passwd: True
|
||
|
gecos: EC2 Default User
|
||
|
+{% elif variant == "rhel" %}
|
||
|
+ name: cloud-user
|
||
|
+ lock_passwd: true
|
||
|
+ gecos: Cloud User
|
||
|
{% else %}
|
||
|
name: {{ variant }}
|
||
|
lock_passwd: True
|
||
|
@@ -254,6 +275,8 @@ system_info:
|
||
|
groups: [adm, sudo]
|
||
|
{% elif variant == "arch" %}
|
||
|
groups: [wheel, users]
|
||
|
+{% elif variant == "rhel" %}
|
||
|
+ groups: [adm, systemd-journal]
|
||
|
{% else %}
|
||
|
groups: [wheel, adm, systemd-journal]
|
||
|
{% endif %}
|
||
|
diff --git a/systemd/cloud-config.service.tmpl b/systemd/cloud-config.service.tmpl
|
||
|
index 9d928ca2..d5568a6e 100644
|
||
|
--- a/systemd/cloud-config.service.tmpl
|
||
|
+++ b/systemd/cloud-config.service.tmpl
|
||
|
@@ -4,6 +4,10 @@ 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" %}
|
||
|
+ConditionPathExists=!/etc/cloud/cloud-init.disabled
|
||
|
+ConditionKernelCommandLine=!cloud-init=disabled
|
||
|
+{% endif %}
|
||
|
|
||
|
[Service]
|
||
|
Type=oneshot
|
||
|
diff --git a/systemd/cloud-final.service.tmpl b/systemd/cloud-final.service.tmpl
|
||
|
index 8207b18c..85f423ac 100644
|
||
|
--- a/systemd/cloud-final.service.tmpl
|
||
|
+++ b/systemd/cloud-final.service.tmpl
|
||
|
@@ -7,6 +7,10 @@ After=multi-user.target
|
||
|
Before=apt-daily.service
|
||
|
{% endif %}
|
||
|
Wants=network-online.target cloud-config.service
|
||
|
+{% if variant == "rhel" %}
|
||
|
+ConditionPathExists=!/etc/cloud/cloud-init.disabled
|
||
|
+ConditionKernelCommandLine=!cloud-init=disabled
|
||
|
+{% endif %}
|
||
|
|
||
|
|
||
|
[Service]
|
||
|
@@ -15,7 +19,16 @@ ExecStart=/usr/bin/cloud-init modules --mode=final
|
||
|
RemainAfterExit=yes
|
||
|
TimeoutSec=0
|
||
|
KillMode=process
|
||
|
+{% if variant == "rhel" %}
|
||
|
+# Restart NetworkManager if it is present and running.
|
||
|
+ExecStartPost=/bin/sh -c 'u=NetworkManager.service; \
|
||
|
+ out=$(systemctl show --property=SubState $u) || exit; \
|
||
|
+ [ "$out" = "SubState=running" ] || exit 0; \
|
||
|
+ systemctl reload-or-try-restart $u'
|
||
|
+{% else %}
|
||
|
TasksMax=infinity
|
||
|
+{% endif %}
|
||
|
+
|
||
|
|
||
|
# Output needs to appear in instance console output
|
||
|
StandardOutput=journal+console
|
||
|
diff --git a/systemd/cloud-init-local.service.tmpl b/systemd/cloud-init-local.service.tmpl
|
||
|
index 7166f640..a6b82650 100644
|
||
|
--- a/systemd/cloud-init-local.service.tmpl
|
||
|
+++ b/systemd/cloud-init-local.service.tmpl
|
||
|
@@ -1,23 +1,43 @@
|
||
|
## template:jinja
|
||
|
[Unit]
|
||
|
Description=Initial cloud-init job (pre-networking)
|
||
|
-{% if variant in ["ubuntu", "unknown", "debian"] %}
|
||
|
+{% if variant in ["ubuntu", "unknown", "debian", "rhel" ] %}
|
||
|
DefaultDependencies=no
|
||
|
{% endif %}
|
||
|
Wants=network-pre.target
|
||
|
After=hv_kvp_daemon.service
|
||
|
After=systemd-remount-fs.service
|
||
|
+{% if variant == "rhel" %}
|
||
|
+Requires=dbus.socket
|
||
|
+After=dbus.socket
|
||
|
+{% endif %}
|
||
|
Before=NetworkManager.service
|
||
|
+{% if variant == "rhel" %}
|
||
|
+Before=network.service
|
||
|
+{% endif %}
|
||
|
Before=network-pre.target
|
||
|
Before=shutdown.target
|
||
|
+{% if variant == "rhel" %}
|
||
|
+Before=firewalld.target
|
||
|
+Conflicts=shutdown.target
|
||
|
+{% endif %}
|
||
|
{% if variant in ["ubuntu", "unknown", "debian"] %}
|
||
|
Before=sysinit.target
|
||
|
Conflicts=shutdown.target
|
||
|
{% endif %}
|
||
|
RequiresMountsFor=/var/lib/cloud
|
||
|
+{% if variant == "rhel" %}
|
||
|
+ConditionPathExists=!/etc/cloud/cloud-init.disabled
|
||
|
+ConditionKernelCommandLine=!cloud-init=disabled
|
||
|
+{% endif %}
|
||
|
|
||
|
[Service]
|
||
|
Type=oneshot
|
||
|
+{% if variant == "rhel" %}
|
||
|
+ExecStartPre=/bin/mkdir -p /run/cloud-init
|
||
|
+ExecStartPre=/sbin/restorecon /run/cloud-init
|
||
|
+ExecStartPre=/usr/bin/touch /run/cloud-init/enabled
|
||
|
+{% endif %}
|
||
|
ExecStart=/usr/bin/cloud-init init --local
|
||
|
ExecStart=/bin/touch /run/cloud-init/network-config-ready
|
||
|
RemainAfterExit=yes
|
||
|
diff --git a/systemd/cloud-init.service.tmpl b/systemd/cloud-init.service.tmpl
|
||
|
index e71e5679..c170aef7 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"] %}
|
||
|
+{% if variant not in ["photon", "rhel"] %}
|
||
|
DefaultDependencies=no
|
||
|
{% endif %}
|
||
|
Wants=cloud-init-local.service
|
||
|
@@ -36,6 +36,10 @@ Before=shutdown.target
|
||
|
Conflicts=shutdown.target
|
||
|
{% endif %}
|
||
|
Before=systemd-user-sessions.service
|
||
|
+{% if variant == "rhel" %}
|
||
|
+ConditionPathExists=!/etc/cloud/cloud-init.disabled
|
||
|
+ConditionKernelCommandLine=!cloud-init=disabled
|
||
|
+{% endif %}
|
||
|
|
||
|
[Service]
|
||
|
Type=oneshot
|
||
|
diff --git a/tests/unittests/test_render_cloudcfg.py b/tests/unittests/test_render_cloudcfg.py
|
||
|
index 30fbd1a4..9f95d448 100644
|
||
|
--- a/tests/unittests/test_render_cloudcfg.py
|
||
|
+++ b/tests/unittests/test_render_cloudcfg.py
|
||
|
@@ -68,6 +68,7 @@ class TestRenderCloudCfg:
|
||
|
default_user_exceptions = {
|
||
|
"amazon": "ec2-user",
|
||
|
"debian": "ubuntu",
|
||
|
+ "rhel": "cloud-user",
|
||
|
"unknown": "ubuntu",
|
||
|
}
|
||
|
default_user = system_cfg["system_info"]["default_user"]["name"]
|
||
|
--
|
||
|
2.31.1
|
||
|
|