Continue adding datasource docs.
Add a base set for ec2 and datasource none.
This commit is contained in:
parent
147776bd98
commit
dde992ce0a
@ -20,32 +20,52 @@ The current interface that a datasource object must provide is the following:
|
|||||||
|
|
||||||
.. sourcecode:: python
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
# returns a mime multipart message that contains
|
||||||
|
# all the various fully-expanded components that
|
||||||
|
# were found from processing the raw userdata string
|
||||||
|
# - when filtering only the mime messages targeting
|
||||||
|
# this instance id will be returned (or messages with
|
||||||
|
# no instance id)
|
||||||
def get_userdata(self, apply_filter=False)
|
def get_userdata(self, apply_filter=False)
|
||||||
|
|
||||||
|
# returns the raw userdata string (or none)
|
||||||
|
def get_userdata_raw(self)
|
||||||
|
|
||||||
|
# returns a integer (or none) which can be used to identify
|
||||||
|
# this instance in a group of instances which are typically
|
||||||
|
# created from a single command, thus allowing programatic
|
||||||
|
# filtering on this launch index (or other selective actions)
|
||||||
@property
|
@property
|
||||||
def launch_index(self)
|
def launch_index(self)
|
||||||
|
|
||||||
@property
|
|
||||||
def is_disconnected(self)
|
|
||||||
|
|
||||||
def get_userdata_raw(self)
|
|
||||||
|
|
||||||
# the data sources' config_obj is a cloud-config formated
|
# the data sources' config_obj is a cloud-config formated
|
||||||
# object that came to it from ways other than cloud-config
|
# object that came to it from ways other than cloud-config
|
||||||
# because cloud-config content would be handled elsewhere
|
# because cloud-config content would be handled elsewhere
|
||||||
def get_config_obj(self)
|
def get_config_obj(self)
|
||||||
|
|
||||||
|
#returns a list of public ssh keys
|
||||||
def get_public_ssh_keys(self)
|
def get_public_ssh_keys(self)
|
||||||
|
|
||||||
|
# translates a device 'short' name into the actual physical device
|
||||||
|
# fully qualified name (or none if said physical device is not attached
|
||||||
|
# or does not exist)
|
||||||
def device_name_to_device(self, name)
|
def device_name_to_device(self, name)
|
||||||
|
|
||||||
|
# gets the locale string this instance should be applying
|
||||||
|
# which typically used to adjust the instances locale settings files
|
||||||
def get_locale(self)
|
def get_locale(self)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def availability_zone(self)
|
def availability_zone(self)
|
||||||
|
|
||||||
|
# gets the instance id that was assigned to this instance by the
|
||||||
|
# cloud provider or when said instance id does not exist in the backing
|
||||||
|
# metadata this will return 'iid-datasource'
|
||||||
def get_instance_id(self)
|
def get_instance_id(self)
|
||||||
|
|
||||||
|
# gets the fully qualified domain name that this host should be using
|
||||||
|
# when configuring network or hostname releated settings, typically
|
||||||
|
# assigned either by the cloud provider or the user creating the vm
|
||||||
def get_hostname(self, fqdn=False)
|
def get_hostname(self, fqdn=False)
|
||||||
|
|
||||||
def get_package_mirror_info(self)
|
def get_package_mirror_info(self)
|
||||||
@ -54,7 +74,65 @@ The current interface that a datasource object must provide is the following:
|
|||||||
EC2
|
EC2
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
TBD
|
The EC2 datasource is the oldest and most widely used datasource that cloud-init
|
||||||
|
supports. This datasource interacts with a *magic* ip that is provided to the
|
||||||
|
instance by the cloud provider. Typically this ip is ``169.254.169.254`` of which
|
||||||
|
at this ip a http server is provided to the instance so that the instance can make
|
||||||
|
calls to get instance userdata and instance metadata.
|
||||||
|
|
||||||
|
Metadata is accessible via the following URL:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
GET http://169.254.169.254/2009-04-04/meta-data/
|
||||||
|
ami-id
|
||||||
|
ami-launch-index
|
||||||
|
ami-manifest-path
|
||||||
|
block-device-mapping/
|
||||||
|
hostname
|
||||||
|
instance-id
|
||||||
|
instance-type
|
||||||
|
local-hostname
|
||||||
|
local-ipv4
|
||||||
|
placement/
|
||||||
|
public-hostname
|
||||||
|
public-ipv4
|
||||||
|
public-keys/
|
||||||
|
reservation-id
|
||||||
|
security-groups
|
||||||
|
|
||||||
|
Userdata is accessible via the following URL:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
GET http://169.254.169.254/2009-04-04/user-data
|
||||||
|
1234,fred,reboot,true | 4512,jimbo, | 173,,,
|
||||||
|
|
||||||
|
Note that there are multiple versions of this data provided, cloud-init
|
||||||
|
by default uses **2009-04-04** but newer versions can be supported with
|
||||||
|
relative ease (newer versions have more data exposed, while maintaining
|
||||||
|
backward compatibility with the previous versions).
|
||||||
|
|
||||||
|
To see which versions are supported from your cloud provider use the following URL:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
GET http://169.254.169.254/
|
||||||
|
1.0
|
||||||
|
2007-01-19
|
||||||
|
2007-03-01
|
||||||
|
2007-08-29
|
||||||
|
2007-10-10
|
||||||
|
2007-12-15
|
||||||
|
2008-02-01
|
||||||
|
2008-09-01
|
||||||
|
2009-04-04
|
||||||
|
...
|
||||||
|
latest
|
||||||
|
|
||||||
|
**Note:** internally in cloudinit the `boto`_ library used to fetch the instance
|
||||||
|
userdata and instance metadata, feel free to check that library out, it provides
|
||||||
|
many other useful EC2 functionality.
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
Config Drive
|
Config Drive
|
||||||
@ -78,22 +156,37 @@ No cloud
|
|||||||
MAAS
|
MAAS
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
TBD
|
*TODO*
|
||||||
|
|
||||||
|
For now see: http://maas.ubuntu.com/
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
CloudStack
|
CloudStack
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
TBD
|
*TODO*
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
OVF
|
OVF
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
See: https://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/files/head:/doc/sources/ovf/
|
*TODO*
|
||||||
|
|
||||||
|
For now see: https://bazaar.launchpad.net/~cloud-init-dev/cloud-init/trunk/files/head:/doc/sources/ovf/
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
Fallback/None
|
Fallback/None
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
TBD
|
This is the fallback datasource when no other datasource can be selected. It is
|
||||||
|
the equivalent of a *empty* datasource in that it provides a empty string as userdata
|
||||||
|
and a empty dictionary as metadata. It is useful for testing as well as for when
|
||||||
|
you do not have a need to have an actual datasource to meet your instance
|
||||||
|
requirements (ie you just want to run modules that are not concerned with any
|
||||||
|
external data). It is typically put at the end of the datasource search list
|
||||||
|
so that if all other datasources are not matched, then this one will be so that
|
||||||
|
the user is not left with an inaccessible instance.
|
||||||
|
|
||||||
|
**Note:** the instance id that this datasource provides is ``iid-datasource-none``.
|
||||||
|
|
||||||
|
.. _boto: http://docs.pythonboto.org/en/latest/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user