Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cgwalters/min-cloud-agent
Minimal client implementation of AWS/OpenStack metadata API
https://github.com/cgwalters/min-cloud-agent
Last synced: 26 days ago
JSON representation
Minimal client implementation of AWS/OpenStack metadata API
- Host: GitHub
- URL: https://github.com/cgwalters/min-cloud-agent
- Owner: cgwalters
- License: other
- Created: 2014-02-06T14:43:52.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-01-12T20:57:08.000Z (almost 10 years ago)
- Last Synced: 2023-03-11T22:42:21.599Z (over 1 year ago)
- Language: C
- Homepage:
- Size: 307 KB
- Stars: 10
- Watchers: 7
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
Currently not actively developed
--------------------------------Note: this repository is not under active development; the author
is working instead on https://cloudinit.readthedocs.org/en/latest/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
----------------* user-data
* configurable account for ssh keys
* hostnameWhy create this instead of just using `cloud-init`?
---------------------------------------------------cloud-init is a very featureful program - it has many data providers
and backends. This leads to a fuzzy line between what it does and
what other operating system management and configuration tools like
Puppet should do. It means cloud-init is likely to keep growing.Beyond simply being a large program in itself, cloud-init is written
Python, and this agent is targeted at small host operating systems
that don't necessarily include Python by default.Contributing
------------Use Github pull requests. You can discuss this program on the Fedora
cloud list: https://admin.fedoraproject.org/mailman/listinfo/cloudLicense
-------min-cloud-agent is licensed under the LGPLv2+. See the COPYING
file for more information.