Cloud-Init is a tool that initializes virtual machines on first boot. It retrieves metadata from CloudStack like SSH keys and VM details. User-data can be passed to Cloud-Init to run scripts or configure VMs like deploying RabbitMQ. There are some issues with CloudStack and Cloud-Init around password/key changes not being detected on reboot. Alternatives include custom init scripts.