Support cloud-init's network-config.

This commit is contained in:
Michael Lipp 2024-02-21 16:14:37 +01:00
parent eccc35d0bf
commit 413f8f76dc
4 changed files with 16 additions and 1 deletions

View file

@ -34,9 +34,12 @@
# ...
# "userData":
# ...
# "networkConfig":
# ...
#
# If .metaData.instance-id is missing, an id is generated from the
# config file's modification timestamp.
# config file's modification timestamp. .userData and .networkConfig
# are optional.
# Define the VM (required)
"vm":

View file

@ -88,6 +88,8 @@ public class Configuration implements Dto {
public Map<String, Object> metaData;
@SuppressWarnings("PMD.UseConcurrentHashMap")
public Map<String, Object> userData;
@SuppressWarnings("PMD.UseConcurrentHashMap")
public Map<String, Object> networkConfig;
}
/**

View file

@ -503,6 +503,13 @@ public class Runner extends Component {
config.cloudInit.userData);
}
userOut.close();
if (config.cloudInit.networkConfig != null) {
var networkConfig = Files.newBufferedWriter(
cloudInitDir.resolve("network-config"));
yamlMapper.writer().writeValue(networkConfig,
config.cloudInit.networkConfig);
networkConfig.close();
}
startProcess(cloudInitImgDefinition);
} catch (IOException e) {
logger.log(Level.SEVERE, e,

View file

@ -23,6 +23,9 @@
mformat -C -f 1440 -v CIDATA -i ${ runtimeDir }/cloud-init.img
&& mcopy -i ${ runtimeDir }/cloud-init.img
${ dataDir }/cloud-init/meta-data ${ dataDir }/cloud-init/user-data ::
&& if [ -r ${ dataDir }/cloud-init/network-config ]; then
mcopy -i ${ runtimeDir }/cloud-init.img
${ dataDir }/cloud-init/network-config :: ; fi
"qemu":
# Candidate paths for the executable