Search code examples
cloud-init

Cloud-init validator


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


Solution

  • 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.