Go to file
Janne Paenkaelae 2f954dcdc2 AWS: Eucalyptus 4.x compatibility fix
For Eucalyptus 4.0.1 requesting metadata seem to work differently as with EC2.

In Euca:
> curl http://169.254.169.254/2009-04-04
<?xml version="1.0"?><Response><Errors><Error><Code>404 Not Found</Code><Message>unknown</Message></Error></Errors><RequestID>unknown</RequestID></Response>core@localhost ~ $

> curl http://169.254.169.254/2009-04-04/
dynamic
meta-data
user-data

In AWS EC2
> curl http://169.254.169.254/2009-04-04
"" (zero bytes)

> curl http://169.254.169.254/2009-04-04/
dynamic
meta-data
user-data

As the isAvailable() function in metadata.go tests only for errorcode
it fails in Euca.
2014-09-24 20:33:29 +03:00
config cloudconfig: refactor config 2014-09-23 17:59:32 -07:00
datasource AWS: Eucalyptus 4.x compatibility fix 2014-09-24 20:33:29 +03:00
Documentation docs: fix documentation of coreos.units.command 2014-09-23 11:32:15 -07:00
initialize cloudconfig: refactor config 2014-09-23 17:59:32 -07:00
network network: add support for CIDR addresses Debian routes 2014-09-16 17:36:34 -07:00
pkg metadata: Refactor metadata service into ec2 metadata 2014-08-05 17:19:43 -07:00
system user: move User into config package 2014-09-23 17:59:19 -07:00
third_party third_party: sync third_party/gopkg.in/yaml.v1 2014-09-08 13:23:50 -07:00
units units: update dependencies 2014-06-27 14:29:59 -07:00
.gitignore style(httpbackoff -> pkg): Adjusts package name to follow convention 2014-05-22 14:37:19 -04:00
.travis.yml travis: enable testing under go 1.3 2014-08-25 12:21:07 -07:00
build style(httpbackoff -> pkg): Adjusts package name to follow convention 2014-05-22 14:37:19 -04:00
CONTRIBUTING.md docs: Update maintainers and contribution guide 2014-09-08 12:55:17 -07:00
coreos-cloudinit_test.go cloudconfig: refactor config 2014-09-23 17:59:32 -07:00
coreos-cloudinit.go cloudconfig: refactor config 2014-09-23 17:59:32 -07:00
cover feat(tests): add cover script 2014-05-10 01:42:57 -07:00
DCO chore(contributing): clean up CONTRIBUTING.md and split out DCO 2014-04-04 10:40:37 -07:00
LICENSE feat(*): initial commit 2014-01-19 12:25:11 -08:00
MAINTAINERS docs: Update maintainers and contribution guide 2014-09-08 12:55:17 -07:00
NOTICE feat(*): initial commit 2014-01-19 12:25:11 -08:00
README.md chore(travis): Adds travis yaml file and badge in README 2014-05-16 17:09:59 -04:00
test update: refactor config 2014-09-23 17:57:43 -07:00

coreos-cloudinit Build Status

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