How to contribute to cloud-init

Thank you for wanting to help us improve cloud-init! There are a variety of ways you can contribute to this project, including no-code and low-code options. This documentation will help orient you with our processes.

Please make sure that you read this guide before starting to contribute. It contains all the details you need to know to give your contribution the best chance of being accepted.

Cloud-init is hosted and managed on GitHub. If you’re not familiar with how GitHub works, their quickstart documentation provides an excellent introduction to all the tools and processes you’ll need to know.


Before you can begin, you will need to:

  • Read and agree to abide by our Code of Conduct.

  • Sign the Canonical contributor license agreement. This grants us your permission to use your contributions in the project.

  • Create (or have) a GitHub account. We will refer to your GitHub username as GH_USER.

Getting help

We use IRC and have a dedicated #cloud-init channel where you can contact us for help and guidance. This link will take you directly to our IRC channel on Libera.

Getting started


Pull request checklist

Before any pull request can be accepted, remember to do the following:

  • Make sure your GitHub username is added (alphabetically) to the in-repository list that we use to track CLA signatures: tools/.github-cla-signers.

  • Add or update any unit tests accordingly.

  • Add or update any Integration testing (if applicable).

  • Format code (using black and isort) with tox -e do_format.

  • Ensure unit tests and/or linting checks pass using tox.

  • Submit a PR against the main branch of the cloud-init repository.

Debugging and reporting