Write a user-data config file that installs Nginx and creates a deploy user with your SSH key every time you launch a new AWS EC2 instance.
Create a portable server configuration that works identically across AWS, Azure, and GCP without changing any settings.
Automate setting up a development environment on a fresh VM by writing a cloud-init script that installs packages and clones your repo.
Contribute a new feature or fix a bug in the industry-standard first-boot configuration tool used by most major Linux distributions.
| canonical/cloud-init | williamleif/graphsage | boris-code/feapder | |
|---|---|---|---|
| Stars | 3,687 | 3,687 | 3,686 |
| Language | Python | Python | Python |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 3/5 | 4/5 | 3/5 |
| Audience | ops devops | researcher | developer |
Figures from each repo's GitHub metadata at analysis time.
Most useful in a cloud environment, testing locally requires a VM or cloud instance, though the project provides test tooling.
Cloud-init is a tool that runs automatically the first time a virtual machine or cloud server starts up. Its job is to configure the new machine based on instructions provided at launch, so the system arrives in a usable state without a human logging in and doing it manually. When a server boots on a cloud platform like AWS, Azure, or Google Cloud, cloud-init reads setup instructions from two sources. The first is metadata provided by the cloud platform itself, such as the hostname or network configuration. The second is optional user data, which is a script or configuration file you supply when launching the instance. Cloud-init processes these instructions and carries out tasks like setting up network interfaces, configuring storage, installing packages, creating user accounts, and placing SSH keys so you can log in securely. The tool is described as the industry-standard approach for this kind of first-boot setup. It ships by default in most major Linux distributions and is supported by virtually all public cloud providers as well as private cloud systems. Because it speaks a common format, the same user-data configuration file can work across different cloud platforms and Linux distributions without modification. The project is maintained by Canonical, the company behind Ubuntu, but it is not Ubuntu-specific. The README links to documentation covering supported clouds, supported distributions, and a contributing guide for developers who want to help with the code. The README itself is brief, as most of the detail lives in the external documentation site at docs.cloud-init.io.
Cloud-init automatically configures a new cloud server on first boot, setting up users, SSH keys, packages, and networking, so it arrives ready to use without manual setup.
Mainly Python. The stack also includes Python, YAML, Bash.
Apache 2.0 and GPL v3, free to use and modify, check the license file for the exact terms per component.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly ops devops.
This repo across BitVibe Labs
Verify against the repo before relying on details.