14

Wondering if anyone knows of a validator that can validate cloud-init config similar to this. We tried it and it gives a bunch of errors that are not applicable e.g., it does not recognize package_update which is a standard keyword that can be found here in the official documentation for example. So we are looking for a validator that works and recognizes the keywords in the official documentation.

enter image description here

morpheus
  • 18,676
  • 24
  • 96
  • 159

2 Answers2

25

I hit this one recently too and found a nice way to do it.

In Ubuntu you can use the follwoing to validate the file parses correctly.

cloud-init schema --config-file bob.txt

This will give you the following notice if the files are valid or invalid

:~$ sudo cloud-init schema --config-file bob.txt
Valid cloud-config file bob.txt

$ nano bob.txt #edited the yaml to make it invalid
:~$ sudo cloud-init schema --config-file bob.txt
Cloud config schema errors: format-l2.c1: File bob.txt is not valid yaml. while parsing a block mapping
  in "<byte string>", line 2, column 1:
    package_upgrade: true
    ^
expected <block end>, but found '-'
  in "<byte string>", line 6, column 1:
    - 'curl -fsSL https://get.docker ... 
    ^

While your working with cloud init files cloud-init status --wait and many of the other commands on the cli are super useful.

Community
  • 1
  • 1
lawrencegripper
  • 597
  • 5
  • 12
  • This errors on `v22.2-0ubuntu1~20.04.3`: `/usr/bin/cloud-init devel: error: argument subcommand: invalid choice: 'schema' (choose from 'hotplug-hook', 'net-convert', 'render', 'make-mime')` – weberc2 Oct 12 '22 at 19:57
  • 1
    Is there any convenient way to install it locally on MacOS? Don't see it on brew. – Vladislav Rastrusny Dec 21 '22 at 09:39
7

Starting from version 22.2, the cloud-init command to validate config file is now:

cloud-init schema --config-file conf.yaml
qaziqarta
  • 1,782
  • 1
  • 4
  • 11