Go to file
2014-03-12 16:52:32 -07:00
cloudinit feat(serialization): Add #cloud-config header 2014-03-12 16:52:32 -07:00
src bump(github.com/coreos/go-systemd/dbus): 57eb061b918b793c3ec3939c69a632fc4dfac8c9 2014-03-05 10:54:51 -08:00
.gitignore initial import 2014-03-04 16:36:05 -08:00
build initial import 2014-03-04 16:36:05 -08:00
coreos-cloudinit.go chore(release): Bump version to v0.1.1+git 2014-03-05 14:53:02 -08:00
README.md feat(unit): Provide units on boot 2014-03-12 16:30:35 -07:00
test feat(test): Add unittest runner 2014-03-04 16:50:54 -08:00

coreos-cloudinit

coreos-cloudinit allows a user to customize CoreOS machines by providing either an executable script or a cloud-config document as instance user-data. See below to learn how to use these features.

cloud-config

Only a subset of cloud-config functionality is implemented. A set of custom parameters were added to the cloud-config format that are specific to CoreOS.

Supported cloud-config Parameters

ssh_authorized_keys

Provided public SSH keys will be authorized for the core user.

The keys will be named "coreos-cloudinit" by default. Override this with the --ssh-key-name flag when calling coreos-cloudinit.

Custom cloud-config Parameters

coreos.etcd.discovery_url

The value of coreos.etcd.discovery_url will be used to discover the instance's etcd peers using the etcd discovery protocol. Usage of the public discovery service is encouraged.

coreos.units

Arbitrary systemd units may be provided in the coreos.units attribute. coreos.units is a list of objects with the following fields:

  • name: string representing unit's name
  • runtime: boolean indicating whether or not to persist the unit across reboots. This is analagous to the --runtime flag to systemd enable.
  • content: plaintext string representing entire unit file

See docker example below.

user-data Script

Simply set your user-data to a script where the first line is a shebang:

#!/bin/bash

echo 'Hello, world!'

Examples

Inject an SSH key, bootstrap etcd, and start fleet

#cloud-config

coreos:
	etcd:
		discovery_url: https://discovery.etcd.io/827c73219eeb2fa5530027c37bf18877
    fleet:
        autostart: yes
ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0g+ZTxC7weoIJLUafOgrm+h...

Start a docker container on boot

#cloud-config

coreos:
    units:
      - name: docker-redis.service
        content: |
          [Unit]
          Description=Redis container
          Author=Me
          After=docker.service

          [Service]
          Restart=always
          ExecStart=/usr/bin/docker start -a redis_server
          ExecStop=/usr/bin/docker stop -t 2 redis_server
          
          [Install]
          WantedBy=local.target