/var/lib/cloud has the following structure: - scripts/ per-instance/ per-boot/ per-once/ files in these directories will be run by 'run-parts' once per instance, once per boot, and once per *ever*. - seed/ / sys-user-data user-data meta-data The 'seed/' directory allows you to seed a specific datasource For example, to seed the 'nocloud' datasource you would need to populate seed/nocloud/user-data seed/nocloud/meta-data - instance -> instances/i-abcde This is a symlink to the current instance/ directory created/updated on boot - instances/ i-abcdefgh/ scripts/ # all scripts in scripts are per-instance sem/ config-puppet config-ssh set-hostname cloud-config.txt user-data.txt user-data.txt.i obj.pkl handlers/ - sem/ scripts.once These are the cloud-specific semaphores. The only thing that would go here are files to mark that a "per-once" script has run. - handlers/ "persistent" handlers (not per-instance). Same as handlers from user-data, just will be cross-instance id to clear out the current instance's data as if to force a "new run" on reboot do: ( cd /var/lib/cloud/instance && sudo rm -Rf * )