ucd
===

micro-config-drive(1) – Configure a cloud instance using config-drive
data

SYNOPSIS
--------

``/usr/bin/ucd``

``ucd`` [OPTIONS…]

DESCRIPTION
-----------

``ucd`` runs at boot time with the purpose of configuring a cloud
instance for use of the end user.

ucd can perform any of the following (optional) tasks:

-  create a default account with sudo privileges
-  lock root and default account, the only way to login is using ssh
   keys (security feature)
-  maintain the cloud instance in a right state (resize/fix partitions
   and filesystem)
-  get and process userdata and metadata from an attached config-drive
   block device

Userdata formats supported:

-  ``cloud-config``: begins with ``#cloud-config`` and is used to
   execute certain tasks in a human friendly format
-  ``shell-script``: begins with ``#!`` and is used to execute a shell
   script

Metadata formats supported:

-  ``openstack``

OPENSTACK DATASOURCES
---------------------

Datasources are used to retrive instance-specific data in order to
configure a new cloud instance. Openstack attaches two datasources to
the cloud instance when it boots.

-  ``config-drive``: is a disk formatted with vfat or iso9660 and have a
   label of config-2
-  ``metadata service``: instances can access to it at
   http://169.254.169.254 ``[NOT SUPPORTED]``

more information about openstack datasources can be found in:

-  http://docs.openstack.org/user-guide/cli_config_drive.html
-  http://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service

WORKFLOW
--------

::

   `|` Parse options
   `|` Init openstack datasource
   `|->` if config-drive is found then define it as datasource otherwise exit
   `|` Start openstack datasource
   `|->` Get userdata and metadata from datasource
   `|` Run async tasks
   `|->` resize disk
   `|->` resize filesystem
   `|` If a datasource was found
   `|->` if VM first boot was detected
   `|   |->` Run async tasks
   `|   |   |->` lock root account
   `|   |   |->` Create sudoers file for default user account
   `|   |->` Create default user account
   `|->` Process openstack metadata
   `|->` Process openstack userdata
   `|` Join async tasks
   `|` Finish openstack datasource (free resources)

OPTIONS
-------

The following options are understood:

-  ``-h``, ``--help``:

   Prints a help message.

-  ``-u`` FILE, ``--user-data-file`` FILE:

   Path to a cloud-config user data file&. If omitted, ``ucd`` will
   attempt to fetch user-data from the openstack link-local connected
   data service URL.

-  ``--openstack-metadata-file`` FILE:

   Path to an openstack metadata file. more information:
   http://docs.openstack.org/user-guide/cli_config_drive.html#openstack-metadata-format

-  ``--openstack-config-drive`` PATH:

   Path to openstack config drive (iso9660 or vfat filesystem), it will
   be used to process metadata and userdata. more information:
   http://docs.openstack.org/user-guide/cli_config_drive.html#configuration-drive-contents

-  ``--user-data``:

   Get and process user data from data sources.

-  ``--user-data-once``:

   Only on first boot get and process user data from data sources. Note
   this option is ignored if ``--user-data`` is enabled.

-  ``--metadata``:

   Get and process metadata from data sources.

-  ``--fix-disk``:

   Fix disk and filesystem if it is needed.

-  ``-v``, ``--version``:

   Prints version information.

-  ``--first-boot-setup``:

   Setup the instance in its first boot. When first boot of the instance
   is detected, ``ucd`` will perform the following tasks: create a
   default user account, create sudoers file for default user account,
   lock the root account.

EXIT STATUS
-----------

On success, 0 is returned, a non-zero failure code otherwise.

COPYRIGHT
---------

-  Copyright (C) 2017 Intel Corporation, License: CC-BY-SA-3.0

SEE ALSO
--------

This project is a limited-functionality implementation of the cloud-init
specification. The full documentation of the generic implementation is
available online and can be referenced here:

``https://cloudinit.readthedocs.org/en/latest/``

The cloud-config format that `ucd(1) <ucd.1.html>`__ supports is documented in
`cloud-config(5) <cloud-config.5.html>`__. This lists the options that are supported, their
structure and function.

NOTES
-----

Creative Commons Attribution-ShareAlike 3.0 Unported

-  http://creativecommons.org/licenses/by-sa/3.0/
