<commit_before>min-cloud-agent
===============

In contrast to cloud-init, the vision of this project is to be an
ultra-small bootstrapping stage that one can use to start other
management tools.

At present, it implements a very small subset of the AWS EC2 metadata API.
The list of requests implemented is:

 * `/2009-04-04/user-data`: Execute arbitrary script (must start with #!)
 * `/2009-04-04/meta-data/public-keys/0/openssh-key`: Provision a single ssh key to the `root` account

In contrast to cloud-init, the user-data must be an interpreted
program; it can not be the YAML cloud-config, have includes, or
anything like that.

For example, suppose you want to add a user to the system.  Rather
than using cloud init's "users" attribute in the cloud-config YAML,
you should simply invoke the operating system native tool,
e.g. `/usr/sbin/useradd` directly in a shell script.

It's strongly recommended that all operating system vendors shipping
min-cloud-agent include the `curl` utility.  This will allow user-data
script authors to download further code from a URL, or perform a POST
to registration/state server announcing that the system is online.

Another very useful thing to do in user-data is to call into the
system software management (e.g. yum/apt-get/rpm-ostree) to perform
upgrades or install further applications (such as Docker) or higher
level configuration management tools (such as Puppet).

min-cloud-agent will never grow an abstraction layer for any of these
things; if you are scripting multiple operating systems or versions,
your userdata scripts must carry the abstractions.

Dependencies
------------

 * GLib: https://git.gnome.org/browse/glib/
 * libgsystem: https://git.gnome.org/browse/libgsystem/

Planned features<commit_msg>README.md: Clarify request semantics more<commit_after>min-cloud-agent
===============

In contrast to cloud-init, the vision of this project is to be an
ultra-small bootstrapping stage that one can use to start other
management tools.

At present, it implements a very small subset of the AWS EC2 metadata
API (which is also provided by the OpenStack hypervisor).

The list of requests implemented is:

 * `/2009-04-04/user-data`:

    Execute arbitrary script (must start with #!, e.g. #!/bin/bash).  The
    best practice is for this script to be idempotent, but min-cloud-agent
    will make a best effort to ensure this script runs exactly once when
    the system is first booted.

 * `/2009-04-04/meta-data/public-keys/0/openssh-key`:

    Provision a single ssh key to the `root` account's `.ssh/authorized_keys` file.
    If the file already exists, it will not be modified.

In contrast to cloud-init, the user-data must be an interpreted
program; it can not be the YAML cloud-config, have includes, or
anything like that.

For example, suppose you want to add a user to the system.  Rather
than using cloud init's "users" attribute in the cloud-config YAML,
you should simply invoke the operating system native tool,
e.g. `/usr/sbin/useradd` directly in a shell script.

It's strongly recommended that all operating system vendors shipping
min-cloud-agent include the `curl` utility.  This will allow user-data
script authors to download further code from a URL, or perform a POST
to registration/state server announcing that the system is online.

Another very useful thing to do in user-data is to call into the
system software management (e.g. yum/apt-get/rpm-ostree) to perform
upgrades or install further applications (such as Docker) or higher
level configuration management tools (such as Puppet).

min-cloud-agent will never grow an abstraction layer for any of these
things; if you are scripting multiple operating systems or versions,
your userdata scripts must carry the abstractions.

Dependencies
------------

 * GLib: https://git.gnome.org/browse/glib/
 * libgsystem: https://git.gnome.org/browse/libgsystem/

Planned features
{'fraction_non_alphanumeric': 0.07808114314876244, 'fraction_numerical': 0.009186016841030875, 'mean_word_length': 4.071151358344114, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1230203', 'n_tokens_mistral': 1122, 'n_tokens_neox': 1042, 'n_words': 531}