Go to file
Michael Marineau 26b54534d6 fix(configdrive): Always run after OEM and ec2 metadata.
A workaround for https://github.com/coreos/coreos-cloudinit/issues/86

Longer term cloudinit needs to be fixed to not corrupt the system when
multiple config sources are being used. We've pretty much gotten this
far without this coming up because most configs don't conflict so badly.
2014-04-23 14:38:54 -07:00
datasource refactor(*): Break apart packages 2014-03-18 09:14:11 -07:00
Documentation docs(cloud-config): correct headers 2014-04-21 17:56:35 -07:00
initialize fix(userdata): Strip \r when checking header 2014-04-21 13:40:26 -07:00
src/github.com/coreos refactor(deps): Manage deps with goven 2014-03-12 19:49:02 -07:00
system refactor(unit): Separate UnitDestination from PlaceUnit 2014-04-15 09:00:53 -07:00
third_party bump(github.com/coreos/go-systemd/dbus): 4fbc5060a317b142e6c7bfbedb65596d5f0ab99b 2014-03-25 19:37:05 -07:00
units fix(configdrive): Always run after OEM and ec2 metadata. 2014-04-23 14:38:54 -07: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 fix(userdata): Strip \r when checking header 2014-04-21 13:40:26 -07:00
README.md doc(fields): Document field substitution 2014-03-21 14:36:12 -07:00
test refactor(*): Break apart packages 2014-03-18 09:14:11 -07:00

coreos-cloudinit

coreos-cloudinit enables a user to customize CoreOS machines by providing either a cloud-config document or an executable script through user-data.

Configuration with cloud-config

A subset of the official cloud-config spec is implemented by coreos-cloudinit. Additionally, several CoreOS-specific options have been implemented to support interacting with unit files, bootstrapping etcd clusters, and more. All supported cloud-config parameters are documented here.

The following is an example cloud-config document:

#cloud-config

coreos:
    units:
      - name: etcd.service
        command: start

users:
  - name: core
    passwd: $1$allJZawX$00S5T756I5PGdQga5qhqv1

write_files:
  - path: /etc/resolv.conf
    content: |
        nameserver 192.0.2.2
        nameserver 192.0.2.3

Executing a Script

coreos-cloudinit supports executing user-data as a script instead of parsing it as a cloud-config document. Make sure the first line of your user-data is a shebang and coreos-cloudinit will attempt to execute it:

#!/bin/bash

echo 'Hello, world!'

user-data Field Substitution

coreos-cloudinit will replace the following set of tokens in your user-data with system-generated values.

Token Description
$public_ipv4 Public IPv4 address of machine
$private_ipv4 Private IPv4 address of machine

These values are determined by CoreOS based on the given provider on which your machine is running. Read more about provider-specific functionality in the CoreOS OEM documentation.

For example, submitting the following user-data...

#cloud-config
coreos:
    etcd:
        addr: $public_ipv4:4001
        peer-addr: $private_ipv4:7001

...will result in this cloud-config document being executed:

#cloud-config
coreos:
    etcd:
        addr: 203.0.113.29:4001
        peer-addr: 192.0.2.13:7001