-
Notifications
You must be signed in to change notification settings - Fork 908
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add new distro 'azurelinux' for Microsoft Azure Linux.
- Loading branch information
1 parent
b538549
commit b1d692b
Showing
15 changed files
with
318 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -27,6 +27,7 @@ | |
|
||
distros = [ | ||
"almalinux", | ||
"azurelinux", | ||
"centos", | ||
"cloudlinux", | ||
"eurolinux", | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -68,6 +68,7 @@ | |
"redhat": [ | ||
"almalinux", | ||
"amazon", | ||
"azurelinux", | ||
"centos", | ||
"cloudlinux", | ||
"eurolinux", | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# Copyright (C) 2024 Microsoft Corporation | ||
# | ||
# Author: Dan Streetman <ddstreet@microsoft.com> | ||
# | ||
# This file is part of cloud-init. See LICENSE file for license information. | ||
|
||
import logging | ||
|
||
from cloudinit import subp, util | ||
from cloudinit.distros import rhel | ||
from cloudinit.net.netplan import CLOUDINIT_NETPLAN_FILE | ||
|
||
LOG = logging.getLogger(__name__) | ||
|
||
NETWORK_FILE_HEADER = """\ | ||
# This file is generated from information provided by the datasource. Changes | ||
# to it will not persist across an instance reboot. To disable cloud-init's | ||
# network configuration capabilities, write a file | ||
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: | ||
# network: {config: disabled} | ||
""" | ||
|
||
|
||
class Distro(rhel.Distro): | ||
def __init__(self, name, cfg, paths): | ||
super().__init__(name, cfg, paths) | ||
self.osfamily = "azurelinux" | ||
|
||
self.network_conf_dir = "/etc/systemd/network/" | ||
self.systemd_locale_conf_fn = "/etc/locale.conf" | ||
self.resolve_conf_fn = "/etc/systemd/resolved.conf" | ||
self.init_cmd = ["systemctl"] | ||
|
||
self.network_conf_fn = {"netplan": CLOUDINIT_NETPLAN_FILE} | ||
self.renderer_configs = { | ||
"networkd": { | ||
"resolv_conf_fn": self.resolve_conf_fn, | ||
"network_conf_dir": self.network_conf_dir, | ||
}, | ||
"netplan": { | ||
"netplan_path": self.network_conf_fn["netplan"], | ||
"netplan_header": NETWORK_FILE_HEADER, | ||
"postcmds": "True", | ||
}, | ||
} | ||
|
||
def package_command(self, command, args=None, pkgs=None): | ||
if pkgs is None: | ||
pkgs = [] | ||
|
||
if subp.which("dnf"): | ||
LOG.debug("Using DNF for package management") | ||
cmd = ["dnf"] | ||
else: | ||
LOG.debug("Using TDNF for package management") | ||
cmd = ["tdnf"] | ||
# Determines whether or not dnf/tdnf prompts for confirmation | ||
# of critical actions. We don't want to prompt... | ||
cmd.append("-y") | ||
|
||
if args and isinstance(args, str): | ||
cmd.append(args) | ||
elif args and isinstance(args, list): | ||
cmd.extend(args) | ||
|
||
cmd.append(command) | ||
|
||
pkglist = util.expand_package_list("%s-%s", pkgs) | ||
cmd.extend(pkglist) | ||
|
||
# Allow the output of this to flow outwards (ie not be captured) | ||
subp.subp(cmd, capture=False) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
## template:jinja | ||
{# | ||
This file /etc/cloud/templates/hosts.azurelinux.tmpl is only utilized | ||
if enabled in cloud-config. Specifically, in order to enable it | ||
you need to add the following to config: | ||
manage_etc_hosts: True | ||
-#} | ||
# Your system has configured 'manage_etc_hosts' as True. | ||
# As a result, if you wish for changes to this file to persist | ||
# then you will need to either | ||
# a.) make changes to the master file in /etc/cloud/templates/hosts.azurelinux.tmpl | ||
# b.) change or remove the value of 'manage_etc_hosts' in | ||
# /etc/cloud/cloud.cfg or cloud-config from user-data | ||
# | ||
# The following lines are desirable for IPv4 capable hosts | ||
127.0.0.1 {{fqdn}} {{hostname}} | ||
127.0.0.1 localhost.localdomain localhost | ||
127.0.0.1 localhost4.localdomain4 localhost4 | ||
|
||
# The following lines are desirable for IPv6 capable hosts | ||
::1 {{fqdn}} {{hostname}} | ||
::1 localhost6.localdomain6 localhost6 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# This file is part of cloud-init. See LICENSE file for license information. | ||
|
||
from tests.unittests.helpers import CiTestCase | ||
|
||
from . import _get_distro | ||
|
||
SYSTEM_INFO = { | ||
"paths": { | ||
"cloud_dir": "/var/lib/cloud/", | ||
"templates_dir": "/etc/cloud/templates/", | ||
}, | ||
"network": {"renderers": "networkd"}, | ||
} | ||
|
||
|
||
class TestAzurelinux(CiTestCase): | ||
with_logs = True | ||
distro = _get_distro("azurelinux", SYSTEM_INFO) | ||
expected_log_line = "Rely on Azure Linux default network config" | ||
|
||
def test_network_renderer(self): | ||
self.assertEqual(self.distro._cfg["network"]["renderers"], "networkd") | ||
|
||
def test_get_distro(self): | ||
self.assertEqual(self.distro.osfamily, "azurelinux") |
Oops, something went wrong.