cloudstack-setup-agent: mask libvirt non-monolithic services (#7114)

This masks sockets such as virtqemud.socket virtqemud-ro.socket
virtqemud-admin.socket, and services virtqemud virtnetworkd virtstoraged
that block libvirtd to be used a monolithic service. Useful for both EL9
and existing Ubuntu 22.04, and newer distros.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
Co-authored-by: dahn <daan.hoogland@gmail.com>
This commit is contained in:
Rohit Yadav 2023-01-24 19:55:38 +05:30 committed by GitHub
parent e7b7efe117
commit 833d1b4523
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 65 additions and 42 deletions

View File

@ -617,11 +617,20 @@ class libvirtConfigRedhat(serviceCfgBase):
cfo.addEntry("LIBVIRTD_ARGS", "-l")
cfo.save()
if os.path.exists("/lib/systemd/system/libvirtd.socket"):
bash("/bin/systemctl mask libvirtd.socket");
bash("/bin/systemctl mask libvirtd-ro.socket");
bash("/bin/systemctl mask libvirtd-admin.socket");
bash("/bin/systemctl mask libvirtd-tls.socket");
bash("/bin/systemctl mask libvirtd-tcp.socket");
bash("/bin/systemctl mask \
libvirtd.socket \
libvirtd-ro.socket \
libvirtd-admin.socket \
libvirtd-tls.socket \
libvirtd-tcp.socket");
if os.path.exists("/lib/systemd/system/virtqemud.socket"):
bash("/bin/systemctl mask \
virtqemud.socket \
virtqemud-ro.socket \
virtqemud-admin.socket \
virtqemud \
virtnetworkd \
virtstoraged");
filename = "/etc/libvirt/qemu.conf"
@ -650,11 +659,12 @@ class libvirtConfigSUSE(serviceCfgBase):
configureLibvirtConfig(self.syscfg.env.secure, self)
if os.path.exists("/usr/lib/systemd/system/libvirtd.socket"):
bash("/bin/systemctl mask libvirtd.socket");
bash("/bin/systemctl mask libvirtd-ro.socket");
bash("/bin/systemctl mask libvirtd-admin.socket");
bash("/bin/systemctl mask libvirtd-tls.socket");
bash("/bin/systemctl mask libvirtd-tcp.socket");
bash("/bin/systemctl mask \
libvirtd.socket \
libvirtd-ro.socket \
libvirtd-admin.socket \
libvirtd-tls.socket \
libvirtd-tcp.socket");
cfo = configFileOps("/etc/sysconfig/libvirtd", self)
cfo.addEntry("LIBVIRTD_ARGS", "-l")
@ -694,11 +704,20 @@ class libvirtConfigUbuntu(serviceCfgBase):
cfo = configFileOps("/etc/default/libvirtd", self)
cfo.replace_or_add_line("libvirtd_opts=","libvirtd_opts='-l'")
if os.path.exists("/lib/systemd/system/libvirtd.socket"):
bash("/bin/systemctl mask libvirtd.socket");
bash("/bin/systemctl mask libvirtd-ro.socket");
bash("/bin/systemctl mask libvirtd-admin.socket");
bash("/bin/systemctl mask libvirtd-tls.socket");
bash("/bin/systemctl mask libvirtd-tcp.socket");
bash("/bin/systemctl mask \
libvirtd.socket \
libvirtd-ro.socket \
libvirtd-admin.socket \
libvirtd-tls.socket \
libvirtd-tcp.socket");
if os.path.exists("/lib/systemd/system/virtqemud.socket"):
bash("/bin/systemctl mask \
virtqemud.socket \
virtqemud-ro.socket \
virtqemud-admin.socket \
virtqemud \
virtnetworkd \
virtstoraged");
def config(self):
try:

View File

@ -37,14 +37,14 @@ class sysConfigAgentFactory:
distribution = glbEnv.distribution.getVersion()
if distribution == "Ubuntu":
return sysConfigAgentUbuntu(glbEnv)
elif distribution == "Fedora" or distribution == "RHEL6":
return sysConfigRedhat6(glbEnv)
elif distribution == "CentOS" or distribution == "RHEL5":
return sysConfigRedhat5(glbEnv)
return sysConfigEL5(glbEnv)
elif distribution == "Fedora" or distribution == "RHEL6":
return sysConfigEL6(glbEnv)
elif distribution == "RHEL7":
return sysConfigRedhat7(glbEnv)
elif distribution == "RHEL8":
return sysConfigRedhat8(glbEnv)
return sysConfigEL7(glbEnv)
elif distribution in ["RHEL8", "RHEL9"]:
return sysConfigEL(glbEnv)
elif distribution == "SUSE":
return sysConfigSUSE(glbEnv)
else:
@ -151,10 +151,10 @@ class sysConfigAgentRedhat7Base(sysConfigAgent):
self.svo = serviceOpsRedhat7Later()
super(sysConfigAgentRedhat7Base, self).__init__(env)
class sysConfigAgentRedhat8Base(sysConfigAgent):
class sysConfigAgentELBase(sysConfigAgent):
def __init__(self, env):
self.svo = serviceOpsRedhat7Later()
super(sysConfigAgentRedhat8Base, self).__init__(env)
super(sysConfigAgentELBase, self).__init__(env)
class sysConfigAgentSUSE(sysConfigAgent):
def __init__(self, env):
@ -174,10 +174,21 @@ class sysConfigAgentUbuntu(sysConfigAgent):
nfsConfig(self),
cloudAgentConfig(self)]
#it covers RHEL6/Fedora13/Fedora14
class sysConfigRedhat6(sysConfigAgentRedhatBase):
#It covers RHEL5/CentOS5, the mainly difference is that there is no cgroup
class sysConfigEL5(sysConfigAgentRedhatBase):
def __init__(self, glbEnv):
super(sysConfigRedhat6, self).__init__(glbEnv)
super(sysConfigEL5, self).__init__(glbEnv)
self.services = [hostConfig(self),
securityPolicyConfigRedhat(self),
networkConfigRedhat(self),
libvirtConfigRedhat(self),
firewallConfigAgent(self),
cloudAgentConfig(self)]
#it covers RHEL6/Fedora13/Fedora14
class sysConfigEL6(sysConfigAgentRedhatBase):
def __init__(self, glbEnv):
super(sysConfigEL6, self).__init__(glbEnv)
self.services = [hostConfig(self),
cgroupConfig(self),
securityPolicyConfigRedhat(self),
@ -187,21 +198,10 @@ class sysConfigRedhat6(sysConfigAgentRedhatBase):
nfsConfig(self),
cloudAgentConfig(self)]
#It covers RHEL5/CentOS5, the mainly difference is that there is no cgroup
class sysConfigRedhat5(sysConfigAgentRedhatBase):
def __init__(self, glbEnv):
super(sysConfigRedhat5, self).__init__(glbEnv)
self.services = [hostConfig(self),
securityPolicyConfigRedhat(self),
networkConfigRedhat(self),
libvirtConfigRedhat(self),
firewallConfigAgent(self),
cloudAgentConfig(self)]
#it covers RHEL7
class sysConfigRedhat7(sysConfigAgentRedhat7Base):
class sysConfigEL7(sysConfigAgentRedhat7Base):
def __init__(self, glbEnv):
super(sysConfigRedhat7, self).__init__(glbEnv)
super(sysConfigEL7, self).__init__(glbEnv)
self.services = [hostConfig(self),
securityPolicyConfigRedhat(self),
networkConfigRedhat(self),
@ -210,10 +210,10 @@ class sysConfigRedhat7(sysConfigAgentRedhat7Base):
nfsConfig(self),
cloudAgentConfig(self)]
#it covers RHEL8
class sysConfigRedhat8(sysConfigAgentRedhat8Base):
#it covers RHEL8 and later
class sysConfigEL(sysConfigAgentELBase):
def __init__(self, glbEnv):
super(sysConfigRedhat8, self).__init__(glbEnv)
super(sysConfigEL, self).__init__(glbEnv)
self.services = [hostConfig(self),
securityPolicyConfigRedhat(self),
networkConfigRedhat(self),

View File

@ -120,6 +120,10 @@ class Distribution:
version.find("CentOS Linux release 8") != -1 or version.find("CentOS release 8.") != -1 or
version.find("Linux release 8") != -1):
self.distro = "RHEL8"
elif (version.find("Red Hat Enterprise Linux Server release 9") != -1 or version.find("Scientific Linux release 9") != -1 or
version.find("Red Hat Enterprise Linux release 9") != -1 or version.find("Linux release 9.") != -1 or
version.find("Linux release 9") != -1):
self.distro = "RHEL9"
elif version.find("CentOS") != -1:
self.distro = "CentOS"
else: