Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Rocky Linux support to cloud-init #906

Merged
merged 5 commits into from
May 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 />Fedora<br />FreeBSD<br />Gentoo Linux<br />NetBSD<br />OpenBSD<br />RHEL/CentOS/AlmaLinux<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 />Digital Ocean<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 /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />|
| Alpine Linux<br />ArchLinux<br />Debian<br />Fedora<br />FreeBSD<br />Gentoo Linux<br />NetBSD<br />OpenBSD<br />RHEL/CentOS/AlmaLinux/Rocky<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 />Digital Ocean<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 /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />|

## To start developing cloud-init

Expand Down
2 changes: 1 addition & 1 deletion cloudinit/config/cc_ntp.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
NTP_CONF = '/etc/ntp.conf'
NR_POOL_SERVERS = 4
distros = ['almalinux', 'alpine', 'centos', 'debian', 'fedora', 'opensuse',
'rhel', 'sles', 'ubuntu']
'rhel', 'rocky', 'sles', 'ubuntu']

NTP_CLIENT_CONFIG = {
'chrony': {
Expand Down
4 changes: 2 additions & 2 deletions cloudinit/config/cc_yum_add_repo.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

**Module frequency:** per always

**Supported distros:** almalinux, centos, fedora, rhel
**Supported distros:** almalinux, centos, fedora, rhel, rocky

**Config keys**::

Expand All @@ -36,7 +36,7 @@

from cloudinit import util

distros = ['almalinux', 'centos', 'fedora', 'rhel']
distros = ['almalinux', 'centos', 'fedora', 'rhel', 'rocky']


def _canonicalize_id(repo_id):
Expand Down
2 changes: 1 addition & 1 deletion cloudinit/distros/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
'debian': ['debian', 'ubuntu'],
'freebsd': ['freebsd'],
'gentoo': ['gentoo'],
'redhat': ['almalinux', 'amazon', 'centos', 'fedora', 'rhel'],
'redhat': ['almalinux', 'amazon', 'centos', 'fedora', 'rhel', 'rocky'],
'suse': ['opensuse', 'sles'],
}

Expand Down
9 changes: 9 additions & 0 deletions cloudinit/distros/rocky.py
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion cloudinit/net/sysconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

LOG = logging.getLogger(__name__)
NM_CFG_FILE = "/etc/NetworkManager/NetworkManager.conf"
KNOWN_DISTROS = ['almalinux', 'centos', 'fedora', 'rhel', 'suse']
KNOWN_DISTROS = ['almalinux', 'centos', 'fedora', 'rhel', 'rocky', 'suse']


def _make_header(sep='#'):
Expand Down
Binary file added cloudinit/tests/.test_util.py.swp
Binary file not shown.
35 changes: 34 additions & 1 deletion cloudinit/tests/test_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,22 @@
ALMALINUX_MANTISBT_PROJECT_VERSION="8.3"
""")

OS_RELEASE_ROCKY_8 = dedent("""\
NAME="Rocky Linux"
VERSION="8.3 (Green Obsidian)"
ID="rocky"
ID_LIKE="rhel fedora"
VERSION_ID="8.3"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Rocky Linux 8.3 (Green Obsidian)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:rocky:rocky:8"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
ROCKY_SUPPORT_PRODUCT="Rocky Linux"
ROCKY_SUPPORT_PRODUCT_VERSION="8"
""")

REDHAT_RELEASE_CENTOS_6 = "CentOS release 6.10 (Final)"
REDHAT_RELEASE_CENTOS_7 = "CentOS Linux release 7.5.1804 (Core)"
REDHAT_RELEASE_REDHAT_6 = (
Expand All @@ -132,7 +148,8 @@
"Red Hat Enterprise Linux Server release 7.5 (Maipo)")
REDHAT_RELEASE_ALMALINUX_8 = (
"AlmaLinux release 8.3 (Purple Manul)")

REDHAT_RELEASE_ROCKY_8 = (
"Rocky Linux release 8.3 (Green Obsidian)")

OS_RELEASE_DEBIAN = dedent("""\
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
Expand Down Expand Up @@ -537,6 +554,22 @@ def test_get_linux_almalinux8_osrelease(self, m_os_release, m_path_exists):
dist = util.get_linux_distro()
self.assertEqual(('almalinux', '8.3', 'Purple Manul'), dist)

@mock.patch('cloudinit.util.load_file')
def test_get_linux_rocky8_rhrelease(self, m_os_release, m_path_exists):
"""Verify rocky linux 8 read from redhat-release."""
m_os_release.return_value = REDHAT_RELEASE_ROCKY_8
m_path_exists.side_effect = TestGetLinuxDistro.redhat_release_exists
dist = util.get_linux_distro()
self.assertEqual(('rocky', '8.3', 'Green Obsidian'), dist)

@mock.patch('cloudinit.util.load_file')
def test_get_linux_rocky8_osrelease(self, m_os_release, m_path_exists):
"""Verify rocky linux 8 read from os-release."""
m_os_release.return_value = OS_RELEASE_ROCKY_8
m_path_exists.side_effect = TestGetLinuxDistro.os_release_exists
dist = util.get_linux_distro()
self.assertEqual(('rocky', '8.3', 'Green Obsidian'), 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."""
Expand Down
2 changes: 1 addition & 1 deletion cloudinit/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ def system_info():
linux_dist = info['dist'][0].lower()
if linux_dist in (
'almalinux', 'alpine', 'arch', 'centos', 'debian', 'fedora',
'rhel', 'suse'):
'rhel', 'rocky', 'suse'):
var = linux_dist
elif linux_dist in ('ubuntu', 'linuxmint', 'mint'):
var = 'ubuntu'
Expand Down
7 changes: 4 additions & 3 deletions config/cloud.cfg.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ disable_root: false
disable_root: true
{% endif %}

{% if variant in ["almalinux", "alpine", "amazon", "centos", "fedora", "rhel"] %}
{% if variant in ["almalinux", "alpine", "amazon", "centos", "fedora",
"rhel", "rocky"] %}
mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
{% if variant == "amazon" %}
resize_rootfs: noblock
Expand Down Expand Up @@ -154,7 +155,7 @@ cloud_final_modules:
system_info:
# This will affect which distro class gets used
{% if variant in ["almalinux", "alpine", "amazon", "arch", "centos", "debian",
"fedora", "freebsd", "netbsd", "openbsd", "rhel",
"fedora", "freebsd", "netbsd", "openbsd", "rhel", "rocky",
"suse", "ubuntu"] %}
distro: {{ variant }}
{% else %}
Expand Down Expand Up @@ -207,7 +208,7 @@ system_info:
security: http://ports.ubuntu.com/ubuntu-ports
ssh_svcname: ssh
{% elif variant in ["almalinux", "alpine", "amazon", "arch", "centos", "fedora",
"rhel", "suse"] %}
"rhel", "rocky", "suse"] %}
# Default user name + that default users groups (if added/used)
default_user:
{% if variant == "amazon" %}
Expand Down
2 changes: 1 addition & 1 deletion systemd/cloud-init-generator.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ default() {

check_for_datasource() {
local ds_rc=""
{% if variant in ["almalinux", "rhel", "fedora", "centos"] %}
{% if variant in ["almalinux", "rhel", "fedora", "centos", "rocky"] %}
local dsidentify="/usr/libexec/cloud-init/ds-identify"
{% else %}
local dsidentify="/usr/lib/cloud-init/ds-identify"
Expand Down
2 changes: 1 addition & 1 deletion systemd/cloud-init.service.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ After=systemd-networkd-wait-online.service
{% if variant in ["ubuntu", "unknown", "debian"] %}
After=networking.service
{% endif %}
{% if variant in ["almalinux", "centos", "fedora", "rhel"] %}
{% if variant in ["almalinux", "centos", "fedora", "rhel", "rocky"] %}
After=network.service
After=NetworkManager.service
{% endif %}
Expand Down
3 changes: 2 additions & 1 deletion tests/unittests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,8 @@ def test_wb_devel_schema_subcommand_doc_content(self):
self._call_main(['cloud-init', 'devel', 'schema', '--docs', 'all'])
expected_doc_sections = [
'**Supported distros:** all',
'**Supported distros:** almalinux, alpine, centos, debian, fedora',
('**Supported distros:** almalinux, alpine, centos, debian, '
'fedora, opensuse, rhel, rocky, sles, ubuntu'),
'**Config schema**:\n **resize_rootfs:** (true/false/noblock)',
'**Examples**::\n\n runcmd:\n - [ ls, -l, / ]\n'
]
Expand Down
1 change: 1 addition & 0 deletions tools/.github-cla-signers
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ manuelisimo
marlluslustosa
matthewruffell
mitechie
nazunalika
nicolasbock
nishigori
olivierlemasle
Expand Down
4 changes: 2 additions & 2 deletions tools/render-cloudcfg
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import os
import sys

VARIANTS = ["almalinux", "alpine", "amazon", "arch", "centos", "debian",
"fedora", "freebsd", "netbsd", "openbsd", "rhel", "suse", "ubuntu",
"unknown"]
"fedora", "freebsd", "netbsd", "openbsd", "rhel", "suse", "rocky",
"ubuntu", "unknown"]


if "avoid-pep8-E402-import-not-top-of-file":
Expand Down