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 AlmaLinux OS support #872

Merged
merged 4 commits into from May 7, 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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
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<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<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
4 changes: 2 additions & 2 deletions cloudinit/config/cc_ntp.py
Expand Up @@ -24,8 +24,8 @@
frequency = PER_INSTANCE
NTP_CONF = '/etc/ntp.conf'
NR_POOL_SERVERS = 4
distros = ['alpine', 'centos', 'debian', 'fedora', 'opensuse', 'rhel',
'sles', 'ubuntu']
distros = ['almalinux', 'alpine', 'centos', 'debian', 'fedora', 'opensuse',
'rhel', 'sles', 'ubuntu']

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

**Module frequency:** per always

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

**Config keys**::

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

from cloudinit import util

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


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

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

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


def _make_header(sep='#'):
Expand Down
35 changes: 35 additions & 0 deletions cloudinit/tests/test_util.py
Expand Up @@ -107,12 +107,31 @@
REDHAT_SUPPORT_PRODUCT_VERSION="7.5"
""")

OS_RELEASE_ALMALINUX_8 = dedent("""\
NAME="AlmaLinux"
VERSION="8.3 (Purple Manul)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.3"
PLATFORM_ID="platform:el8"
PRETTY_NAME="AlmaLinux 8.3 (Purple Manul)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:almalinux:almalinux:8.3:GA"
HOME_URL="https://almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"

ALMALINUX_MANTISBT_PROJECT="AlmaLinux-8"
ALMALINUX_MANTISBT_PROJECT_VERSION="8.3"
""")

REDHAT_RELEASE_CENTOS_6 = "CentOS release 6.10 (Final)"
REDHAT_RELEASE_CENTOS_7 = "CentOS Linux release 7.5.1804 (Core)"
REDHAT_RELEASE_REDHAT_6 = (
"Red Hat Enterprise Linux Server release 6.10 (Santiago)")
REDHAT_RELEASE_REDHAT_7 = (
"Red Hat Enterprise Linux Server release 7.5 (Maipo)")
REDHAT_RELEASE_ALMALINUX_8 = (
"AlmaLinux release 8.3 (Purple Manul)")


OS_RELEASE_DEBIAN = dedent("""\
Expand Down Expand Up @@ -502,6 +521,22 @@ def test_get_linux_copr_centos(self, m_os_release, m_path_exists):
dist = util.get_linux_distro()
self.assertEqual(('centos', '7', 'Core'), dist)

@mock.patch('cloudinit.util.load_file')
def test_get_linux_almalinux8_rhrelease(self, m_os_release, m_path_exists):
"""Verify almalinux 8 read from redhat-release."""
m_os_release.return_value = REDHAT_RELEASE_ALMALINUX_8
m_path_exists.side_effect = TestGetLinuxDistro.redhat_release_exists
dist = util.get_linux_distro()
self.assertEqual(('almalinux', '8.3', 'Purple Manul'), dist)

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

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

check_for_datasource() {
local ds_rc=""
{% if variant in ["rhel", "fedora", "centos"] %}
{% if variant in ["almalinux", "rhel", "fedora", "centos"] %}
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
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 ["centos", "fedora", "rhel"] %}
{% if variant in ["almalinux", "centos", "fedora", "rhel"] %}
After=network.service
After=NetworkManager.service
{% endif %}
Expand Down
2 changes: 1 addition & 1 deletion tests/unittests/test_cli.py
Expand Up @@ -224,7 +224,7 @@ 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:** alpine, centos, debian, fedora',
'**Supported distros:** almalinux, alpine, centos, debian, fedora',
'**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
Expand Up @@ -3,6 +3,7 @@ ajmyyra
AlexBaranowski
Aman306
andrewbogott
andrewlukoshko
antonyc
aswinrajamannar
beezly
Expand Down
4 changes: 2 additions & 2 deletions tools/render-cloudcfg
Expand Up @@ -4,8 +4,8 @@ import argparse
import os
import sys

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


Expand Down