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
This commit is contained in:
@@ -451,6 +451,23 @@ local function chpasswd(obj)
|
||||
end
|
||||
end
|
||||
|
||||
local function settimezone(timezone)
|
||||
if timezone == nil then
|
||||
return
|
||||
end
|
||||
local root = os.getenv("NUAGE_FAKE_ROOTDIR")
|
||||
if not root then
|
||||
root = "/"
|
||||
end
|
||||
|
||||
f, _, rc = os.execute("tzsetup -s -C " .. root .. " " .. timezone)
|
||||
|
||||
if not f then
|
||||
warnmsg("Impossible to configure time zone ( rc = " .. rc .. " )")
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local function pkg_bootstrap()
|
||||
if os.getenv("NUAGE_RUN_TESTS") then
|
||||
return true
|
||||
@@ -480,7 +497,7 @@ local function install_package(package)
|
||||
end
|
||||
|
||||
local function run_pkg_cmd(subcmd)
|
||||
local cmd = "pkg " .. subcmd .. " -y"
|
||||
local cmd = "env ASSUME_ALWAYS_YES=yes pkg " .. subcmd
|
||||
if os.getenv("NUAGE_RUN_TESTS") then
|
||||
print(cmd)
|
||||
return true
|
||||
@@ -556,6 +573,7 @@ local n = {
|
||||
dirname = dirname,
|
||||
mkdir_p = mkdir_p,
|
||||
sethostname = sethostname,
|
||||
settimezone = settimezone,
|
||||
adduser = adduser,
|
||||
addgroup = addgroup,
|
||||
addsshkey = addsshkey,
|
||||
|
||||
Reference in New Issue
Block a user