Home

Awesome

cloud-provision

Get cloud instances with your favourite software pre-loaded

This Golang package can be used to provision cloud hosts using a simple CRUD-style API along with a cloud-init user-data script. It could be used to automate anything from k3s clusters, to blogs, or CI runners. We use it to create the cheapest possible hosts in the cloud with a public IP address.

provision.go

type Provisioner interface {
	Provision(BasicHost) (*ProvisionedHost, error)
	Status(id string) (*ProvisionedHost, error)
	Delete(HostDeleteRequest) error
}

Where is this package used?

Feel free to send a PR to add your project

This package is used by:

Try an example program

The tester app takes in a cloud-config file and provisions a host with Nginx - polling until it is ready for access.

#cloud-config
packages:
  - nginx
runcmd:
  - systemctl enable nginx
  - systemctl start nginx

See the example here: Tester app

Rules for adding a new provisioner

The first rule about the provision package is that we don't do SSH. Key management and statefulness are out of scope. Cheap servers should be treated like cattle, not pets. ssh may well be enabled by default, but is out of scope for management. For instance, with DigitalOcean, you can get a root password if you need to log in. Configure as much as you can via cloud-init / user-data.

Finally please add an example to the documentation for your provider in the inlets/docs repo.

If you would like to add a provider please propose it with an Issue, to make sure that the community are happy to accept the change, and to maintain the code on an ongoing basis.

Maintainers for each provider