82 lines
2.2 KiB
Markdown
82 lines
2.2 KiB
Markdown
# vms
|
|
|
|
Virtual machine image builder (based on EOLE3 builder)
|
|
|
|
## What do we have here ?
|
|
|
|
### The "build" tool
|
|
|
|
This is a simple wrapper to help you build and publish images with "packer" and "one-templates"
|
|
|
|
### The "publisher" tool called "tools/one-templates"
|
|
|
|
This is a simple script to create and manage OpenNebula "Templates", all kinds of templates:
|
|
* VMs
|
|
* Networks
|
|
* Images
|
|
* Services
|
|
|
|
With this tool you can publish all the images and the necessary templates to actually use what you build in OpenNebula.
|
|
|
|
## What you need ?
|
|
|
|
* Packer >= 1.6.0
|
|
* virt-sparsify (optional)
|
|
* Ruby
|
|
* These ruby gems:
|
|
* opennebula
|
|
* opennebula-cli
|
|
* opennebula-oca
|
|
* webrick
|
|
* An OpenNebula server or cluster >= 5.6 (with OpenNebula Flow and OneGate enabled)
|
|
* An account with the proper ACL on the OpenNebula server/cluster to:
|
|
* create/manage images
|
|
* create/manage vm templates
|
|
* create/manage services templates
|
|
* create/manage network templates
|
|
|
|
## How to use the "build" tool ?
|
|
|
|
First you need to create the "publisher" "tools/one-templates" configuration.
|
|
This configuration is located in "./tools/.one-templates.conf".
|
|
Note that you can use a different configuration file setting the TEMPLATER_CONFIG environment file before starting the build script.
|
|
|
|
```
|
|
$ cat ./tools/one-templates.conf
|
|
user: myOpenNebulaUser
|
|
token: myVerySecretOpenNebulaTemporaryToken
|
|
builder_addr: IP Address of the building machine (often your own local IP address)
|
|
endpoint: http://myOpenNebulaServerAddress...
|
|
flow_endpoint: http://myOpenNEbulaServerAddress/oneflow
|
|
datastore_id: TheDataStoreIDForMyImages
|
|
```
|
|
|
|
When this configuration is done you can use the "build" tool.
|
|
|
|
The recipes are organised by OS, version and flavor, one OS contains various versions and flavors.
|
|
You can list the available OS and versions with this command:
|
|
|
|
```
|
|
$ ./build list
|
|
You can build :
|
|
* alpine :
|
|
- 3.16
|
|
```
|
|
To build all the flavors of a version you can run this command:
|
|
|
|
```
|
|
$ ./build start alpine 3.16
|
|
```
|
|
|
|
To build only one flavor for one version you can run this command:
|
|
|
|
```
|
|
$ ./build run alpine 3.16 k3s
|
|
```
|
|
|
|
`!!! Make sure the "base" flavor is build before trying to build another flavor. !!!`
|
|
|
|
```
|
|
$ ./build run alpine 3.16 base
|
|
```
|