Strip down README.md

Closes gh-140
pull/142/head
Vlastimil Holer 6 years ago
parent a4ebef8629
commit edbc1c5c98
No known key found for this signature in database
GPG Key ID: EB549BADEFD07C53

@ -1,29 +1,86 @@
# Linux VM Contextualization
# OpenNebula Linux VM Contextualization
These are the source of the contextualization packages used by VM to be
configured with the information generated by OpenNebula. This add-on is
compatible with OpenNebula >= 4.6.
## Description
## Get packages
This addon provides contextualization packages for the Linux (and, other
Unix-like) guest virtual machines running in the OpenNebula cloud. Based
on the provided contextualization parameters, the packages prepare the
networking in the running guest virt. machine, configure SSH keys, set
passwords, run custom start scripts, and many others.
## Download
Latest versions can be downloaded from the
[release page](https://github.com/OpenNebula/addon-context-linux/releases).
Check the supported OpenNebula versions for each release.
Documentation on packages installation and guest contextualization can
be found in the latest stable
[OpenNebula Operation Guide](http://docs.opennebula.org/stable/operation/vm_setup/context_overview.html).
For beta releases, refer to the latest
[development documentation](http://docs.opennebula.org/devel/operation/vm_setup/context_overview.html).
## Tested platforms
| Platform | Versions |
|-------------------------------------|----------------------------------------|
| CentOS | 6, 7 |
| Red Hat Enterprise Linux | 7 |
| Fedora | 28, 29 |
| openSUSE | 42.3, 15 |
| SUSE Linux Enterprise Server (SLES) | 12 SP3 |
| Debian | 8, 9, 10 |
| Devuan | 1, 2 |
| Ubuntu | 14.04, 16.04, 18.04, 18.10 |
| Alpine Linux | 3.6, 3.7, 3.8 |
| Amazon Linux | 2 |
| FreeBSD | 11.2, 12.0 |
List of tested platforms only:
| Platform | Versions |
|---------------------------------|----------------------------------------|
| Amazon Linux | 2 |
| CentOS | 6, 7 |
| Red Hat Enterprise Linux | 7 |
| Fedora | 28, 29 |
| openSUSE | 42.3, 15 |
| SUSE Linux Enterprise Server | 12 SP3 |
| Debian | 8, 9, 10 |
| Devuan | 1, 2 |
| Ubuntu | 14.04, 16.04, 18.04, 18.10 |
| Alpine Linux | 3.6, 3.7, 3.8 |
| FreeBSD | 11.2, 12.0 |
(the packages might work on other versions or flavours, but those aren't tested)
## Build own package
Packages for each release for supported guests are available in the
[release page](https://github.com/OpenNebula/addon-context-linux/releases).
Also, any version can be built by the scripts provided in this repository.
### Requirements
* **Linux host**
* **Ruby** >= 1.9
* gem **fpm** >= 1.10.0
* **dpkg utils** for deb package creation
* **rpm utils** for rpm package creation
### Steps
The script `generate.sh` is able to create all package types and can be
configured to include more files in the package or change some of
its parameters. Package type and content are configured by the env. variable
`TARGET`, the corresponding target must be defined in `target.sh`. Target
describes the package format, name, dependencies, and files. Files are
selected by the tags. Set of required tags is defined for the target
(in `targets.sh`), each file has a list of corresponding tags right in its
filename (divided by the regular name by 2 hashes `##`, dot-separated).
Package name or version can be overridden by env. variables `NAME` and `VERSION`.
Examples:
```
$ TARGET=deb ./generate.sh
$ TARGET=el7 NAME=my-one-context ./generate.sh
$ TARGET=alpine ./generate.sh
$ TARGET=freebsd VERSION=5.7.85 ./generate.sh
```
NOTE: The generator must be executed from the same directory it resides.
Check `generate.sh` for general package metadata and `targets.sh` for the list
of targets and their metadata. Most of the parameters can be overriden by
the appropriate environment variable.
## Development
@ -62,101 +119,16 @@ divided into following 2 parts:
All other scripts, which are not prefixed with `loc-` or `net-`, are
executed as a first during the post-networking contextualization stage.
## Build own package
Package contains following parts:
* main control scripts (`/usr/sbin/one-context*`)
* contextualization scripts (`/etc/one-context.d/*`)
* init scripts to start the contextualization
* OneGate scripts (`/usr/bin/one-gate*`)
* udev rules to trigger reconfiguration on NIC hotplug
Other actions include:
## License
* delete persistent cd and net rules from /etc/udev/rules.d
* delete network configuration files
### Requirements
* Ruby >= 1.8.7
* gem fpm >= 1.8.1
* dpkg utils for deb package creation
* rpm utils for rpm package creation
On Ubuntu/Debian you can install the package `rpm` and you will be able
to generate both rpm and deb packages.
### Steps
The script `generate.sh` is able to create both **deb** and **rpm** packages
and can be configured to include more files in the package or change some of
its parameters. Package type and content are configured by the env. variable
`TARGET`, the corresponding target must be defined in `target.sh`. Target
describes the package format, name, dependencies, and files. Files are
selected by the tags. Set of required tags is defined for the target
(in `targets.sh`), each file has a list of corresponding tags right in its
filename (divided by the regular name by 2 hashes `##`, dot-separated).
On start it creates a temporary directory and copies there:
* All files tagged with no, some (but only from TARGET set) or all tags.
* Any file or directory from the arguments.
The default parameters to create a package are as follows:
```
VERSION=1.0.1
RELEASE=1
MAINTAINER="OpenNebula Systems <support@opennebula.systems>"
LICENSE="Apache 2.0"
VENDOR="OpenNebula Systems"
DESCRIPTION="
This package prepares a VM image for OpenNebula:
* Disables udev net and cd persistent rules
* Deletes udev net and cd persistent rules
* Unconfigures the network
* Adds OpenNebula contextualization scripts to startup
To get support use the OpenNebula mailing list:
http://OpenNebula.org
"
URL=http://opennebula.org
```
A target contains following parameters, e.g. **el7** target:
```
NAME=one-context
RELSUFFIX=.el7
TYPE=rpm
TAGS="rpm systemd one"
DEPENDS="util-linux bind-utils cloud-utils-growpart ruby rubygem-json"
REPLACES="cloud-init"
POSTIN=postinstall.one
PREUN=preuninstall.one
```
You can change any parameter setting an environment variable with the same name.
For example, to generate an **el7 rpm** package with a different package name:
```
$ TARGET=el7 NAME=my-one-context ./generate.sh
```
You can also include new files. This is handy to include new scripts executed
to contextualize an image. For example, we can have a script that installs
a user ssh key. We will create the file hierarchy that will go inside
the package in a directory:
```
$ mkdir -p ssh/etc/one-context.d
$ cp <our-ssh-script> ssh/etc/one-context.d/loc-01-ssh-key
$ TARGET=el7 ./generate.sh ssh/etc
```
NOTE: The generator must be executed from the same directory it resides.
Copyright 2002-2019, OpenNebula Project, OpenNebula Systems (formerly C12G Labs)
## Authors
Licensed under the Apache License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may obtain
a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
* Leader: Javier Fontan (jfontan@opennebula.org)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Loading…
Cancel
Save