From 412287741b70b536458d84972257eda0b3c18d9f Mon Sep 17 00:00:00 2001 From: zsdc Date: Tue, 6 Feb 2024 16:09:36 +0200 Subject: cc_vyos: T6007: Run config migrations before Cloud-init Configuration in `vyos_config_commands` is expected to use a syntax from the target VyOS version. But, if Cloud-init applies configuration commands to a default file, all the migrations (from the 0 version to the latest) will still be executed on top of it. This process can break proper config, for example, if the current syntax variant partially repeats one of the older ones, which will trigger a migration without need. --- cloudinit/config/cc_vyos.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'cloudinit') diff --git a/cloudinit/config/cc_vyos.py b/cloudinit/config/cc_vyos.py index 550811b7..eaa873d6 100644 --- a/cloudinit/config/cc_vyos.py +++ b/cloudinit/config/cc_vyos.py @@ -1081,6 +1081,10 @@ def handle(name, cfg, cloud, log, _args): file_name = cfg_file_name logger.debug("Using configuration file: {}".format(file_name)) + # We must run all migrations on the config before Cloud-init will modify it + # Otherwise, regardless of proper syntax for the current version, migrations will be re-run with unpredictable result + logger.debug("Running migrations for: {}".format(file_name)) + run(['/usr/libexec/vyos/run-config-migration.py', file_name]) with open(file_name, 'r') as f: config_file = f.read() config = ConfigTree(config_file) -- cgit v1.2.3