nuageinit: Allow the use of network parameters from network-config

To better comply with the cloud-init specification, we need to
support the configuration of network-related parameters from
the network-config file, which is common in most deployments.

Reviewed by:            bapt@
Approved by:            bapt@
Differential Revision:  https://reviews.freebsd.org/D52419
This commit is contained in:
Jesús Daniel Colmenares Oviedo
2025-09-11 12:52:30 -04:00
parent a5cc9b7b96
commit 95230b248f
2 changed files with 37 additions and 1 deletions
+30 -1
View File
@@ -582,6 +582,26 @@ local function config2_network(p)
routing:close()
end
local function parse_network_config()
local nc_file = ni_path .. "/network-config"
local nc_file_attr = lfs.attributes(nc_file)
if nc_file_attr == nil then
return
end
local f, err = io.open(nc_file)
if err then
nuage.err("error parsing nocloud network-config: " .. err)
end
local obj = yaml.load(f:read("*a"))
f:close()
if not obj then
nuage.err("error parsing nocloud network-config")
end
local netobj = {}
netobj["network"] = obj
return netobj
end
if citype == "config-2" then
local parser = ucl.parser()
local res, err = parser:parse_file(ni_path .. "/meta_data.json")
@@ -678,7 +698,16 @@ if line == "#cloud-config" then
end
for i = 1, #calls_table do
calls_table[i](obj)
if citype == "nocloud" and calls_table[i] == network_config then
netobj = parse_network_config()
if netobj == nil then
network_config(obj)
else
network_config(netobj)
end
else
calls_table[i](obj)
end
end
elseif line:sub(1, 2) == "#!" then
-- delay for execution at rc.local time --
+7
View File
@@ -182,6 +182,13 @@ configuration in
.Pa /etc/ssh/sshd_config
.It Ic network
Network configuration parameters.
.Pp
Specifying the following parameters from a file named
.Pa network-config
takes precedence over their specification from the
.Ic network
parameter of
.Pa user-data Ns .
.Bl -tag -width "ethernets"
.It Ic ethernets
Mapping representing a generic configuration for existing network interfaces.