git: 7af8b75201b7 - main - nuageinit: config2_network support dns service cfg
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 06 Jan 2026 08:25:27 UTC
The branch main has been updated by bapt:
URL: https://cgit.FreeBSD.org/src/commit/?id=7af8b75201b7af353fa74c8feb937b52f5ccf9bb
commit 7af8b75201b7af353fa74c8feb937b52f5ccf9bb
Author: Gonéri Le Bouder <goneri@lebouder.net>
AuthorDate: 2026-01-03 02:11:55 +0000
Commit: Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2026-01-06 08:25:14 +0000
nuageinit: config2_network support dns service cfg
This change enhances `config2_network()` to honor the DNS
configuration, when it's defined through the `services` section.
The `network_data.json` file can hold DNS configuration at two different
places:
- within a network configuration entry
- or `dns` entry in the `services` section, in this case the configuration is global.
An example of such configuration:
{"links": [{"id": "interface0", "type": "phy",
"ethernet_mac_address": "52:54:00:01:59:03"}], "networks": [{"id": "private-ipv4-0", "type": "ipv4", "link": "interface0",
"ip_address": "192.168.123.5", "netmask": "255.255.255.0", "routes": [{"network": "0.0.0.0", "netmask": "0.0.0.0", "gateway":
"192.168.123.1"}], "network_id": "9e5b1ed9-f5e6-4941-a90f-2e06bab858de", "dns_nameservers": ["192.168.123.1"], "services": [{"type":
"dns", "address": "192.168.123.1"}]}], "services": [{"type": "dns", "address": "192.168.123.1"}]}
See: https://docs.openstack.org/nova/latest/user/metadata.html
MFC After: 1 week
Signed-off-by: Gonéri Le Bouder <goneri@lebouder.net>
Pull Request: https://github.com/freebsd/freebsd-src/pull/1941
---
libexec/nuageinit/nuageinit | 25 ++++++++++++++++++++++++-
libexec/nuageinit/nuageinit.7 | 2 ++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/libexec/nuageinit/nuageinit b/libexec/nuageinit/nuageinit
index a5411c60b410..9aaec1b87a6a 100755
--- a/libexec/nuageinit/nuageinit
+++ b/libexec/nuageinit/nuageinit
@@ -236,9 +236,16 @@ local function nameservers(interface, obj)
resolv_conf_handler:close()
end
- if not os.execute("resolvconf -a " .. interface .. " < " .. resolv_conf) then
+ -- Only call resolvconf with interface if interface is provided
+ if interface then
+ resolvconf_command = "resolvconf -a " .. interface .. " < " .. resolv_conf
+ else
+ resolvconf_command = "resolvconf -u"
+ end
+ if not os.execute(resolvconf_command) then
nuage.warn("Failed to execute resolvconf(8)")
end
+
end
local function install_packages(packages)
@@ -572,6 +579,22 @@ local function config2_network(p)
--end
end
end
+
+ -- Handle global nameservers from services section
+ if obj["services"] then
+ local dns_servers = {}
+ for _, service in pairs(obj["services"]) do
+ if service["type"] == "dns" then
+ table.insert(dns_servers, service["address"])
+ end
+ end
+ if #dns_servers > 0 then
+ -- Use nameservers() function for global services
+ local nameserver_config = {addresses = dns_servers}
+ nameservers(nil, nameserver_config)
+ end
+ end
+
if #ipv4 > 0 then
routing:write('static_routes="')
routing:write(table.concat(ipv4, " ") .. '"\n')
diff --git a/libexec/nuageinit/nuageinit.7 b/libexec/nuageinit/nuageinit.7
index 445902ccf2c0..4f6b6e269867 100644
--- a/libexec/nuageinit/nuageinit.7
+++ b/libexec/nuageinit/nuageinit.7
@@ -117,6 +117,8 @@ file supports the following keys:
Array of network interfaces to be configured.
.It Ic networks
Array of network configurations to be set.
+.It Ic services
+Array of service configurations to be set (e.g: DNS).
.El
.El
.Pp