Cloud config is a tool that "handles early initialization of a cloud instance."

Its an incredibly powerful tool when combined with LXD profiles to provision the creation of machines.

You can read more about it here

Creating a cloud-config file

LXDMosaic makes an effort to keep a history of your cloud-config files, It keeps:

  • A namespace
  • Details about the image this cloud-config is targeted with
  • A full copy of exactly what you put into the editor displayed on the screen

this is not git, svn or any attempt to mimic any vcs.


Currently you can use 1 level of namespacing for storing cloud-configs, this means that you could have:

  • webservers/My_Clients_Site
  • webservers/My_Personal_Site

And/Or - database/My_Clients_Site - database/My_Personal_Site

This makes it easier to:

  • Browse your cloud-configs
  • Write a CLI program that can interprit different namespaces

We may support depper nesting in the future

The Image

Cloud-config files can be written to target all kinds off operating systems, so the decision to link a cloud-config file to an image may appear odd, especially as at the time of writing only the ubuntu images come with cloud-config enabled

The reason LXDMosaic stores is the image with the file is:

  • You have to fill out less on forms (deploying cloud-config & deployments)
  • If a CLI program is written you wont have to specify the image

The config itself

This documentation couldn't cover 1% of what the official documentation does, so please go and read it here

The example deployment config that comes with LXDMosaic looks like this


# Apply updates using apt
package_update: true
package_upgrade: true

# Install packages
 - nodejs
 - npm

 - git clone /root/nodeExample
 - cd /root/nodeExample && npm install
 - npm -g install pm2
 - pm2 start /root/nodeExample/index.js
 - pm2 startup
 - pm2 save