Exported errors¶
Cloud-init makes internal errors available to users for debugging. These errors map to logged errors and may be useful for understanding what happens when cloud-init doesn’t do what you expect.
Aggregated errors¶
When a recoverable error occurs, the internal
cloud-init state information is made visible under a top level aggregate key
recoverable_errors
with errors sorted by error level:
$ cloud-init status --format json
{
"boot_status_code": "enabled-by-generator",
"config": {...},
"datasource": "",
"detail": "Cloud-init enabled by systemd cloud-init-generator",
"errors": [],
"extended_status": "degraded done",
"init": {...},
"last_update": "",
"recoverable_errors":
{
"WARNING": [
"Failed at merging in cloud config part from p-01: empty cloud config",
"No template found in /etc/cloud/templates for template source.deb822",
"No template found in /etc/cloud/templates for template sources.list",
"No template found, not rendering /etc/apt/soures.list.d/ubuntu.source"
]
},
"status": "done"
}
Reported recoverable error messages are grouped by the level at which they are logged. Complete list of levels in order of increasing criticality:
WARNING
DEPRECATED
ERROR
CRITICAL
Each message has a single level. In cloud-init’s log files,
the level at which logs are reported is configurable. These messages are
exported via the 'recoverable_errors'
key regardless of which level of
logging is configured.
Per-stage errors¶
The keys errors
and recoverable_errors
are also exported for each
stage to allow identifying when recoverable and non-recoverable errors
occurred.
$ cloud-init status --format json
{
"boot_status_code": "enabled-by-generator",
"config":
{
"WARNING": [
"No template found in /etc/cloud/templates for template source.deb822",
"No template found in /etc/cloud/templates for template sources.list",
"No template found, not rendering /etc/apt/soures.list.d/ubuntu.source"
]
},
"datasource": "",
"detail": "Cloud-init enabled by systemd cloud-init-generator",
"errors": [],
"extended_status": "degraded done",
"init":
{
"WARNING": [
"Failed at merging in cloud config part from p-01: empty cloud config",
]
},
"last_update": "",
"recoverable_errors":
{
"WARNING": [
"Failed at merging in cloud config part from p-01: empty cloud config",
"No template found in /etc/cloud/templates for template source.deb822",
"No template found in /etc/cloud/templates for template sources.list",
"No template found, not rendering /etc/apt/soures.list.d/ubuntu.source"
]
},
"status": "done"
}
Note
Only completed cloud-init stages are listed in the output of
cloud-init status --format json
.
The JSON representation of cloud-init boot stages (in run order) is:
"init-local"
"init"
"modules-config"
"modules-final"
Limitations of exported errors¶
Exported recoverable errors represent logged messages, which are not guaranteed to be stable between releases. The contents of the
'errors'
and'recoverable_errors'
keys are not guaranteed to have stable output.Exported errors and recoverable errors may occur at different stages since users may reorder configuration modules to run at different stages via
cloud.cfg
.
Where to next?¶
See here for a detailed guide to debugging cloud-init.