Snippets

Азат Курбанов Cloud init metadata

Created by Azat Kurbanov last modified
from bottle import route, run, response


def ec2_format(func):
    def inner(*args, **kwargs):
        iterable = func(*args, **kwargs)
        response.content_type = 'text/plain'
        return '\n'.join(iterable)
    return inner


@route('/')
@ec2_format
def versions():
    return [
        '1.0',
        '2007-01-19',
        '2007-03-01',
        '2007-08-29',
        '2007-10-10',
        '2007-12-15',
        '2007-02-01',
        '2007-09-01',
        '2007-04-04',
        '2011-01-01',
        '2011-05-01',
        '2011-01-12',
        '2012-02-25',
        'latest',
    ]

@route('/<version>')
@route('/<version>/')
@ec2_format
def list_contents(version):
    return [
        'meta-data/',
        'user-data',
    ]


@route('/<version>/meta-data')
@route('/<version>/meta-data/')
@ec2_format
def metadata(version):
    return [
        'instance-id',
        'hostname',
        'public-hostname',
        'local-hostname',
        'local-ipv4',
        'public-ipv4',
        'public-keys/',
    ]


@route('/<version>/meta-data/instance-id')
@route('/<version>/meta-data/instance-id/')
@ec2_format
def instance_id(version):
    return ['i-42']


@route('/<version>/meta-data/hostname')
@route('/<version>/meta-data/hostname/')
@route('/<version>/meta-data/public-hostname')
@route('/<version>/meta-data/public-hostname/')
@route('/<version>/meta-data/local-hostname')
@route('/<version>/meta-data/local-hostname/')
@ec2_format
def hostname(version):
    return ['cdistex']


@route('/<version>/meta-data/local-ipv4')
@route('/<version>/meta-data/local-ipv4/')
@route('/<version>/meta-data/public-ipv4')
@route('/<version>/meta-data/public-ipv4/')
def ip_address(version):
    return ['192.168.122.121']


@route('/<version>/meta-data/public-keys')
@route('/<version>/meta-data/public-keys/')
@ec2_format
def public_keys(version):
    return ['0=my-public-key']


@route('/<version>/meta-data/public-keys/0')
@route('/<version>/meta-data/public-keys/0/')
@ec2_format
def first_public_key(version):
    return ['openssh-key']


@route('/<version>/meta-data/public-keys/0/openssh-key')
@route('/<version>/meta-data/public-keys/0/openssh-key/')
@ec2_format
def first_public_key_contents(version):
    return ['ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/jiZrVxSSh8caGaOZD1KSLHZKh/mmbEkwDymls8dV03313zYHhdea71pdnt/ldbDfo/NBqoBPmOul7uNpYT0uSWsS657HOBXimuJhmHC09JUlsEOYOdwbwVR1IFKrANA7J1DgtRKvmeqPPXOSXcDzMKCs6jzEDxFiPDgkt48wLNxB/yKkT0IK9GnKTfvondZzBkHqQvDep+px72dCdObRXpiY9v/kJ0itRBJ+L52EUOTlpe52H3c46/1RqjU9IhRNxRw4WRx5dFcwswofnbmDXj6cM5k6cPccDBSYIMwBglAApAckcbt8JQybtfQ10saHVbJHuBARsuciIucO/COT198tmI30NlomB2saz8b/xL5Pz77ATDYUC/92Re4Q5Pli/oCjq4tUARFwyknH8Ai+rDl0JDgU/+uejHv02nsq1KuaNajZlx6ATPMKJ8/751oGlTrgo8NSu1/j+Q3J35gcO6tCSUZGueWu7/bx61d3/xJLtHzB8kBHksIIcNDjRBnMu490VEOcWsq6P67c2lEuUJmMDOIonvXOW9SYhNNyEXEUTtXq+3xe5AeyXZgidqeKNVtHyK/6LzT4zpG56OBSJc87C8MiQ8KQYua/NWAurdcb8XZFqfj/Yh8ZUH1vRG8XpIgKshhDxyE0L7a81x5oti8AzZ79NCwMdeRwpcUmTw== cordalace@crdgen.local']


@route('/<version>/user-data')
@route('/<version>/user-data/')
def user_data(version):
    response.content_type = 'text/cloud-config'
    return (
        '#cloud-config\n'
        '\n'
        'users:\n'
        '  - default\n'
        '  - name: ubuntu\n'
        # openssl passwd -1 "strong_password"
        '  - passwd: $1$.I.MHI0K$46DmbKESe56EyRyJykep20\n'
        '  - groups: wheel\n'
        '\n'
        'manage-resolv-conf: true\n'
        '\n'
        'resolv_conf:\n'
        "  - nameservers: ['8.8.8.8', '8.8.4.4']\n"
    )

run(host='169.254.169.254', port='80', debug=True)

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.