summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandr Kravchenko <sasha121196@mail.ru>2021-09-01 22:01:09 +0300
committerGitHub <noreply@github.com>2021-09-01 14:01:09 -0500
commitf6c71fd758a3589ac5f62fd251d60b00edf5bb1c (patch)
treef1c176794a4c700ea8b6a0e745360c493e373050
parentdb72c841c2ec0d94d366df7fa623e82e91e2201c (diff)
downloadvyos-cloud-init-f6c71fd758a3589ac5f62fd251d60b00edf5bb1c.tar.gz
vyos-cloud-init-f6c71fd758a3589ac5f62fd251d60b00edf5bb1c.zip
Add CloudLinux OS support (#1003)
https://www.cloudlinux.com/
-rw-r--r--README.md2
-rw-r--r--cloudinit/config/cc_ntp.py6
-rw-r--r--cloudinit/config/cc_yum_add_repo.py8
-rwxr-xr-xcloudinit/distros/__init__.py4
-rw-r--r--cloudinit/distros/cloudlinux.py9
-rw-r--r--cloudinit/net/sysconfig.py4
-rw-r--r--cloudinit/tests/test_util.py33
-rw-r--r--cloudinit/util.py5
-rw-r--r--config/cloud.cfg.tmpl6
-rw-r--r--systemd/cloud-init-generator.tmpl2
-rw-r--r--systemd/cloud-init.service.tmpl2
-rw-r--r--tests/unittests/test_cli.py6
-rw-r--r--tools/.github-cla-signers1
-rwxr-xr-xtools/render-cloudcfg2
14 files changed, 66 insertions, 24 deletions
diff --git a/README.md b/README.md
index 5828c2fa..b705a065 100644
--- a/README.md
+++ b/README.md
@@ -39,7 +39,7 @@ get in contact with that distribution and send them our way!
| Supported OSes | Supported Public Clouds | Supported Private Clouds |
| --- | --- | --- |
-| Alpine Linux<br />ArchLinux<br />Debian<br />DragonFlyBSD<br />Fedora<br />FreeBSD<br />Gentoo Linux<br />NetBSD<br />OpenBSD<br />RHEL/CentOS/AlmaLinux/Rocky/PhotonOS/Virtuozzo/EuroLinux<br />SLES/openSUSE<br />Ubuntu<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> | Amazon Web Services<br />Microsoft Azure<br />Google Cloud Platform<br />Oracle Cloud Infrastructure<br />Softlayer<br />Rackspace Public Cloud<br />IBM Cloud<br />DigitalOcean<br />Bigstep<br />Hetzner<br />Joyent<br />CloudSigma<br />Alibaba Cloud<br />OVH<br />OpenNebula<br />Exoscale<br />Scaleway<br />CloudStack<br />AltCloud<br />SmartOS<br />HyperOne<br />Vultr<br />Rootbox<br /> | Bare metal installs<br />OpenStack<br />LXD<br />KVM<br />Metal-as-a-Service (MAAS)<br />VMware<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />|
+| Alpine Linux<br />ArchLinux<br />Debian<br />DragonFlyBSD<br />Fedora<br />FreeBSD<br />Gentoo Linux<br />NetBSD<br />OpenBSD<br />RHEL/CentOS/AlmaLinux/Rocky/PhotonOS/Virtuozzo/EuroLinux/CloudLinux<br />SLES/openSUSE<br />Ubuntu<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> | Amazon Web Services<br />Microsoft Azure<br />Google Cloud Platform<br />Oracle Cloud Infrastructure<br />Softlayer<br />Rackspace Public Cloud<br />IBM Cloud<br />DigitalOcean<br />Bigstep<br />Hetzner<br />Joyent<br />CloudSigma<br />Alibaba Cloud<br />OVH<br />OpenNebula<br />Exoscale<br />Scaleway<br />CloudStack<br />AltCloud<br />SmartOS<br />HyperOne<br />Vultr<br />Rootbox<br /> | Bare metal installs<br />OpenStack<br />LXD<br />KVM<br />Metal-as-a-Service (MAAS)<br />VMware<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />|
## To start developing cloud-init
diff --git a/cloudinit/config/cc_ntp.py b/cloudinit/config/cc_ntp.py
index 7c371a49..e2231cbb 100644
--- a/cloudinit/config/cc_ntp.py
+++ b/cloudinit/config/cc_ntp.py
@@ -24,9 +24,9 @@ LOG = logging.getLogger(__name__)
frequency = PER_INSTANCE
NTP_CONF = '/etc/ntp.conf'
NR_POOL_SERVERS = 4
-distros = ['almalinux', 'alpine', 'centos', 'debian', 'eurolinux', 'fedora',
- 'opensuse', 'photon', 'rhel', 'rocky', 'sles', 'ubuntu',
- 'virtuozzo']
+distros = ['almalinux', 'alpine', 'centos', 'cloudlinux', 'debian',
+ 'eurolinux', 'fedora', 'opensuse', 'photon', 'rhel', 'rocky',
+ 'sles', 'ubuntu', 'virtuozzo']
NTP_CLIENT_CONFIG = {
'chrony': {
diff --git a/cloudinit/config/cc_yum_add_repo.py b/cloudinit/config/cc_yum_add_repo.py
index b7a48dcc..899cb082 100644
--- a/cloudinit/config/cc_yum_add_repo.py
+++ b/cloudinit/config/cc_yum_add_repo.py
@@ -18,8 +18,8 @@ entry, the config entry will be skipped.
**Module frequency:** per always
-**Supported distros:** almalinux, centos, eurolinux, fedora, photon, rhel,
- rocky, virtuozzo
+**Supported distros:** almalinux, centos, cloudlinux, eurolinux, fedora,
+ photon, rhel, rocky, virtuozzo
**Config keys**::
@@ -37,8 +37,8 @@ from configparser import ConfigParser
from cloudinit import util
-distros = ['almalinux', 'centos', 'eurolinux', 'fedora', 'photon', 'rhel',
- 'rocky', 'virtuozzo']
+distros = ['almalinux', 'centos', 'cloudlinux', 'eurolinux', 'fedora',
+ 'photon', 'rhel', 'rocky', 'virtuozzo']
def _canonicalize_id(repo_id):
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py
index 2e629143..a0526948 100755
--- a/cloudinit/distros/__init__.py
+++ b/cloudinit/distros/__init__.py
@@ -49,8 +49,8 @@ OSFAMILIES = {
'debian': ['debian', 'ubuntu'],
'freebsd': ['freebsd'],
'gentoo': ['gentoo'],
- 'redhat': ['almalinux', 'amazon', 'centos', 'eurolinux', 'fedora',
- 'photon', 'rhel', 'rocky', 'virtuozzo'],
+ 'redhat': ['almalinux', 'amazon', 'centos', 'cloudlinux', 'eurolinux',
+ 'fedora', 'photon', 'rhel', 'rocky', 'virtuozzo'],
'suse': ['opensuse', 'sles'],
}
diff --git a/cloudinit/distros/cloudlinux.py b/cloudinit/distros/cloudlinux.py
new file mode 100644
index 00000000..edb3165d
--- /dev/null
+++ b/cloudinit/distros/cloudlinux.py
@@ -0,0 +1,9 @@
+# This file is part of cloud-init. See LICENSE file for license information.
+
+from cloudinit.distros import rhel
+
+
+class Distro(rhel.Distro):
+ pass
+
+# vi: ts=4 expandtab
diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
index 06f7255e..7b8e4da7 100644
--- a/cloudinit/net/sysconfig.py
+++ b/cloudinit/net/sysconfig.py
@@ -18,8 +18,8 @@ from .network_state import (
is_ipv6_addr, net_prefix_to_ipv4_mask, subnet_is_ipv6, IPV6_DYNAMIC_TYPES)
LOG = logging.getLogger(__name__)
-KNOWN_DISTROS = ['almalinux', 'centos', 'eurolinux', 'fedora', 'rhel', 'rocky',
- 'suse', 'virtuozzo']
+KNOWN_DISTROS = ['almalinux', 'centos', 'cloudlinux', 'eurolinux', 'fedora',
+ 'rhel', 'rocky', 'suse', 'virtuozzo']
NM_CFG_FILE = "/etc/NetworkManager/NetworkManager.conf"
diff --git a/cloudinit/tests/test_util.py b/cloudinit/tests/test_util.py
index 9dd01158..f11cfb27 100644
--- a/cloudinit/tests/test_util.py
+++ b/cloudinit/tests/test_util.py
@@ -186,6 +186,20 @@ OS_RELEASE_VIRTUOZZO_8 = dedent("""\
BUG_REPORT_URL="https://bugs.openvz.org"
""")
+OS_RELEASE_CLOUDLINUX_8 = dedent("""\
+ NAME="CloudLinux"
+ VERSION="8.4 (Valery Rozhdestvensky)"
+ ID="cloudlinux"
+ ID_LIKE="rhel fedora centos"
+ VERSION_ID="8.4"
+ PLATFORM_ID="platform:el8"
+ PRETTY_NAME="CloudLinux 8.4 (Valery Rozhdestvensky)"
+ ANSI_COLOR="0;31"
+ CPE_NAME="cpe:/o:cloudlinux:cloudlinux:8.4:GA:server"
+ HOME_URL="https://www.cloudlinux.com/"
+ BUG_REPORT_URL="https://www.cloudlinux.com/support"
+""")
+
REDHAT_RELEASE_CENTOS_6 = "CentOS release 6.10 (Final)"
REDHAT_RELEASE_CENTOS_7 = "CentOS Linux release 7.5.1804 (Core)"
REDHAT_RELEASE_REDHAT_6 = (
@@ -200,7 +214,8 @@ REDHAT_RELEASE_ROCKY_8 = (
"Rocky Linux release 8.3 (Green Obsidian)")
REDHAT_RELEASE_VIRTUOZZO_8 = (
"Virtuozzo Linux release 8")
-
+REDHAT_RELEASE_CLOUDLINUX_8 = (
+ "CloudLinux release 8.4 (Valery Rozhdestvensky)")
OS_RELEASE_DEBIAN = dedent("""\
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
@@ -680,6 +695,22 @@ class TestGetLinuxDistro(CiTestCase):
self.assertEqual(('virtuozzo', '8', 'Virtuozzo Linux'), dist)
@mock.patch('cloudinit.util.load_file')
+ def test_get_linux_cloud8_rhrelease(self, m_os_release, m_path_exists):
+ """Verify cloudlinux 8 read from redhat-release."""
+ m_os_release.return_value = REDHAT_RELEASE_CLOUDLINUX_8
+ m_path_exists.side_effect = TestGetLinuxDistro.redhat_release_exists
+ dist = util.get_linux_distro()
+ self.assertEqual(('cloudlinux', '8.4', 'Valery Rozhdestvensky'), dist)
+
+ @mock.patch('cloudinit.util.load_file')
+ def test_get_linux_cloud8_osrelease(self, m_os_release, m_path_exists):
+ """Verify cloudlinux 8 read from os-release."""
+ m_os_release.return_value = OS_RELEASE_CLOUDLINUX_8
+ m_path_exists.side_effect = TestGetLinuxDistro.os_release_exists
+ dist = util.get_linux_distro()
+ self.assertEqual(('cloudlinux', '8.4', 'Valery Rozhdestvensky'), dist)
+
+ @mock.patch('cloudinit.util.load_file')
def test_get_linux_debian(self, m_os_release, m_path_exists):
"""Verify we get the correct name and release name on Debian."""
m_os_release.return_value = OS_RELEASE_DEBIAN
diff --git a/cloudinit/util.py b/cloudinit/util.py
index c53f6453..894245bf 100644
--- a/cloudinit/util.py
+++ b/cloudinit/util.py
@@ -548,8 +548,9 @@ def system_info():
if system == "linux":
linux_dist = info['dist'][0].lower()
if linux_dist in (
- 'almalinux', 'alpine', 'arch', 'centos', 'debian', 'eurolinux',
- 'fedora', 'photon', 'rhel', 'rocky', 'suse', 'virtuozzo'):
+ 'almalinux', 'alpine', 'arch', 'centos', 'cloudlinux',
+ 'debian', 'eurolinux', 'fedora', 'photon', 'rhel', 'rocky',
+ 'suse', 'virtuozzo'):
var = linux_dist
elif linux_dist in ('ubuntu', 'linuxmint', 'mint'):
var = 'ubuntu'
diff --git a/config/cloud.cfg.tmpl b/config/cloud.cfg.tmpl
index 825deff4..e5fbc10b 100644
--- a/config/cloud.cfg.tmpl
+++ b/config/cloud.cfg.tmpl
@@ -32,7 +32,7 @@ disable_root: false
disable_root: true
{% endif %}
-{% if variant in ["almalinux", "alpine", "amazon", "centos", "eurolinux",
+{% if variant in ["almalinux", "alpine", "amazon", "centos", "cloudlinux", "eurolinux",
"fedora", "rhel", "rocky", "virtuozzo"] %}
mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
{% if variant == "amazon" %}
@@ -173,7 +173,7 @@ cloud_final_modules:
# (not accessible to handlers/transforms)
system_info:
# This will affect which distro class gets used
-{% if variant in ["almalinux", "alpine", "amazon", "arch", "centos", "debian",
+{% if variant in ["almalinux", "alpine", "amazon", "arch", "centos", "cloudlinux", "debian",
"eurolinux", "fedora", "freebsd", "netbsd", "openbsd",
"photon", "rhel", "rocky", "suse", "ubuntu", "virtuozzo"] %}
distro: {{ variant }}
@@ -228,7 +228,7 @@ system_info:
primary: http://ports.ubuntu.com/ubuntu-ports
security: http://ports.ubuntu.com/ubuntu-ports
ssh_svcname: ssh
-{% elif variant in ["almalinux", "alpine", "amazon", "arch", "centos", "eurolinux",
+{% elif variant in ["almalinux", "alpine", "amazon", "arch", "centos", "cloudlinux", "eurolinux",
"fedora", "rhel", "rocky", "suse", "virtuozzo"] %}
# Default user name + that default users groups (if added/used)
default_user:
diff --git a/systemd/cloud-init-generator.tmpl b/systemd/cloud-init-generator.tmpl
index 3dbe5947..7fe009ec 100644
--- a/systemd/cloud-init-generator.tmpl
+++ b/systemd/cloud-init-generator.tmpl
@@ -83,7 +83,7 @@ default() {
check_for_datasource() {
local ds_rc=""
-{% if variant in ["almalinux", "centos", "eurolinux", "fedora", "rhel",
+{% if variant in ["almalinux", "centos", "cloudlinux", "eurolinux", "fedora", "rhel",
"rocky", "virtuozzo"] %}
local dsidentify="/usr/libexec/cloud-init/ds-identify"
{% else %}
diff --git a/systemd/cloud-init.service.tmpl b/systemd/cloud-init.service.tmpl
index 636f59be..6c3a8f20 100644
--- a/systemd/cloud-init.service.tmpl
+++ b/systemd/cloud-init.service.tmpl
@@ -12,7 +12,7 @@ After=systemd-networkd-wait-online.service
{% if variant in ["ubuntu", "unknown", "debian"] %}
After=networking.service
{% endif %}
-{% if variant in ["almalinux", "centos", "eurolinux", "fedora", "rhel",
+{% if variant in ["almalinux", "centos", "cloudlinux", "eurolinux", "fedora", "rhel",
"rocky", "virtuozzo"] %}
After=network.service
After=NetworkManager.service
diff --git a/tests/unittests/test_cli.py b/tests/unittests/test_cli.py
index a39e1d0c..b8ae9e47 100644
--- a/tests/unittests/test_cli.py
+++ b/tests/unittests/test_cli.py
@@ -224,9 +224,9 @@ class TestCLI(test_helpers.FilesystemMockingTestCase):
self._call_main(['cloud-init', 'devel', 'schema', '--docs', 'all'])
expected_doc_sections = [
'**Supported distros:** all',
- ('**Supported distros:** almalinux, alpine, centos, debian, '
- 'eurolinux, fedora, opensuse, photon, rhel, rocky, sles, ubuntu, '
- 'virtuozzo'),
+ ('**Supported distros:** almalinux, alpine, centos, cloudlinux, '
+ 'debian, eurolinux, fedora, opensuse, photon, rhel, rocky, '
+ 'sles, ubuntu, virtuozzo'),
'**Config schema**:\n **resize_rootfs:** (true/false/noblock)',
'**Examples**::\n\n runcmd:\n - [ ls, -l, / ]\n'
]
diff --git a/tools/.github-cla-signers b/tools/.github-cla-signers
index 4fa108aa..ba0c6d79 100644
--- a/tools/.github-cla-signers
+++ b/tools/.github-cla-signers
@@ -28,6 +28,7 @@ hamalq
impl
irishgordo
izzyleung
+JohnKepplers
johnsonshi
jordimassaguerpla
jqueuniet
diff --git a/tools/render-cloudcfg b/tools/render-cloudcfg
index 30f82521..78a48c30 100755
--- a/tools/render-cloudcfg
+++ b/tools/render-cloudcfg
@@ -4,7 +4,7 @@ import argparse
import os
import sys
-VARIANTS = ["almalinux", "alpine", "amazon", "arch", "centos", "debian",
+VARIANTS = ["almalinux", "alpine", "amazon", "arch", "centos", "cloudlinux", "debian",
"eurolinux", "fedora", "freebsd", "netbsd", "openbsd", "photon",
"rhel", "suse","rocky", "ubuntu", "unknown", "virtuozzo"]