HomeFreeBSD

nuageinit: Improvements for nuageinit

Description

nuageinit: Improvements for nuageinit

  • Fix 'pkg update' usage:
    • The function 'nuage:run_pkg_cmd(...)' adds the flag '-y', which does not make sense with some commands such as 'pkg update', causing an error when updating the repository catalogs.
  • Fix typo 'ssh-authorized-keys -> ssh_authorized_keys' in 'nuageinit(7)' man page.
  • Document 'ssh_authorized_keys' parameter.
  • Use device configuration ID when no 'match' rule is specified:
    • This is the default behavior of cloud-init when no match rule is specified, so the device is configured anyway (even if it does not exist). This greatly simplifies things, since in many cases 'if_vtnet(4)' is used, so there is no need to perform a comparison with the MAC address.
  • Document 'network' parameter:
    • Add example to 'EXAMPLES' section.
  • Set 'gateway[46]' only when 'addresses' is specified:
    • To comply with the cloud-init specification, 'gateway4' and 'gateway6' must only take effect when 'addresses' (or static configuration) is specified.
  • Use a separate function to check 'match' rules:
    • This way, we can easily add new logic to new types of rules.
  • Implement 'network.ethernets.{id}.match.name' parameter:
    • But unlike cloud-init, which works with glob expressions (although it depends on the network backend), this implementation takes advantage of Lua pattern-matching expressions.

      Also note that previously we were only concerned with one interface matching, however, to be cloud-init-compliant, we need to configure the matching interfaces (one or more).
  • Set default router only once.
  • Implement 'network.ethernets.{id}.wakeonlan' parameter.
  • Implement 'network.ethernets.{id}.set-name' parameter.
  • Implement 'network.ethernets.{id}.match.driver' parameter:
    • Rename 'get_ifaces(...)' function as 'get_ifaces_by_mac(...)'.
    • Add get_ifaces_by_driver(...) function.
  • Implement 'network.ethernets.{id}.mtu' parameter.
  • Implement 'nameservers' parameter.
  • Use 'resolvconf(8)' to manipulate 'resolv.conf(5)'.
  • Use 'tzsetup(8)' to set time zone.

Reviewed by: bapt@
Approved by: bapt@
Differential Revision: https://reviews.freebsd.org/D51643

(cherry picked from commit ba5df7a2d03cd5624b1825ca8d4c39dcaace7796)

Details

Provenance
dtxdfAuthored on Aug 22 2025, 6:14 PM
baptCommitted on Sep 17 2025, 7:39 PM
Differential Revision
D51643: nuageinit: Improvements for nuageinit
Parents
rG08e259e39236: timeout(1): add license header to unit test
Branches
Unknown
Tags
Unknown