Skip to content

Commit

Permalink
Merge pull request #1 from Aletibazo/lithops-appliance
Browse files Browse the repository at this point in the history
Lithops appliance
  • Loading branch information
tinova authored Jun 10, 2024
2 parents 712357c + 50de43d commit 7a734f1
Show file tree
Hide file tree
Showing 5 changed files with 343 additions and 2 deletions.
15 changes: 15 additions & 0 deletions .github/workflows/yamllint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: 'YAML Linting'

on: [push, pull_request]

jobs:
lintAllDocuments:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: yaml-lint
uses: ibiqlik/action-yamllint@v3
with:
file_or_dir: appliances
config_file: .yamllint.yml
8 changes: 8 additions & 0 deletions .yamllint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---

extends: default

rules:
line-length: disable
indentation:
indent-sequences: whatever
262 changes: 260 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,260 @@
# marketplace-community
Community Marketplace metadata and appliance code
# Public OpenNebula Community Marketplace Appliances

This is a repository with YAML metadata of the appliances available in the
official public [OpenNebula Community Marketplace](http://community-marketplace.opennebula.io/),
to be used with the [simple Marketplace](https://github.com/OpenNebula/appmarket-simple)
server implementation. All appliances here are built and certified by the OpenNebula Systems.

---
⚠️ Please report any bug or feature request [in the OpenNebula main repository using label "Category: Marketplace"](https://github.com/OpenNebula/one/issues/new/choose) 🙏

⚠️ Important when **updating** existing appliance:

- bump `version`, so that OpenNebula clients are force to update their cached metadata
- update `creation_time` to current epoch time
- image metadata (size, checksums) must be current

## New appliance (internal steps)

Filename must be a unique UUID with `.yaml` suffix (subdirectory within `appliances/` is not important, but should reflect the nature of appliance). Use `uuidgen` or `uuid` to generate a new one. Following appliance types can be created

- **Image** - Virtual Machine Image with optional Template
- **Service** - Template for OneFlow Service
- **Virtual Machine Template** - Virtual Machine Template with images taken from other Appliances

### Image (with optional VM Template)

Example of an appliance that you can be used as a basis for a new one.

```yaml
---
name: Name of the appliance
version: Version of this specific appliance
publisher: Company name
description: |-
Description of this appliance. The format is *Markdown* so you'll be able
to [link](https://guides.github.com/features/mastering-markdown/) or
add bullet lists:
* one
* two
* I am **bold**
short_description: This is a short description that appears in apps list

# Assorted list of tags, you can add version of OpenNebula where it was
# tested and things like OS or application
tags:
- debian
- router
- dhcp server

# Informative Image format, options: qcow2, raw, vmdk
format: qcow2

# Time in epoch format and UTC. You can get it executing "date +%s"
creation_time: 1443105849

# Informative OS, version, arch., and hypervisor
os-id: Debian
os-release: '8.4'
os-arch: x86_64
hypervisor: KVM

# Compatibility with OpenNebula releases. Appliance will be
# offered only to OpenNebula clients with matching version!!
opennebula_version: 4.8, 4.10, 4.12, 4.14, 5.0, 5.2, 5.4

# The template for the appliance without disks and in YAML format
opennebula_template:
context:
network: 'YES'
ssh_public_key: "$USER[SSH_PUBLIC_KEY]"
cpu: '1'
graphics:
listen: 0.0.0.0
type: vnc
memory: '768'
os:
arch: x86_64
logo: images/logos/debian.png

# Logo to display in the web interface. You can check the available logos in
# "logos" dir in this repository. You can also submit a new logos using pull
# requests
logo: debian.png

# Array with all images related to this app
images:
- name: Debian-8.4
url: https://s3-eu-west-1.amazonaws.com/opennebula-marketplace/debian8-5.0.1-fix.qcow2c
type: OS
dev_prefix: vd
driver: qcow2
# Size in bytes of the image, not the file. You can use `qemu-img info` command
# to retrieve the virtual size.
size: 2147483648
checksum:
md5: a661b9101d0e7427a9495967292f7285
sha256: 3f84c3e90b488c476d516d40863c69b534079843851b2b3b2476a29484a275a9
```
Skip the `opennebula_template:` for **image-only** appliances.

### Service (since ONE 6.0+)

Example of an appliance that you can be used as a basis for OneFlow Service:

```yaml
---
name: Name of the appliance
version: Version of this specific appliance
publisher: Company name
description: |-
Description of this appliance. The format is *Markdown* so you'll be able
to [link](https://guides.github.com/features/mastering-markdown/) or
add bullet lists:
* one
* two
* I am **bold**
short_description: This is a short description that appears in apps list
# Assorted list of tags, you can add version of OpenNebula where it was
# tested and things like OS or application
tags:
- debian
- router
- dhcp server
# Informative Image format, options: qcow2, raw, vmdk
format: qcow2
# Time in epoch format and UTC. You can get it executing "date +%s"
creation_time: 1443105849
# Informative OS, version, arch., and hypervisor
os-id: Debian
os-release: '8.4'
os-arch: x86_64
hypervisor: KVM
# Compatibility with OpenNebula releases. Appliance will be
# offered only to OpenNebula clients with matching version!!
# NOTE: OneFlow Marketplace appliances are supported since 6.0!
opennebula_version: 6.0
# Appliance type, **MUST** be set to SERVICE_TEMPLATE
type: 'SERVICE_TEMPLATE'
# Structure with OneFlow roles and Marketplace Appliances used to run them.
# The referred Appliances are going to be exported to client OpenNebulas
# automatically alongside with the export of this OneFlow Appliance.
roles:
master: 'Service Kubernetes 1.18 - KVM'
worker: 'Service Kubernetes 1.18 - KVM'
# OneFlow Template, needs to be a JSON encoded in a string!
# Role names must correspond to names listead above.
opennebula_template: '{
"name": "Kubernetes",
"deployment": "straight",
"description: "",
"roles": [
{
"name": "master",
"cardinality": 1,
...
},
...
],
"networks": {
...
},
"ready_status_gate": true
}'
# Logo to display in the web interface. You can check the available logos in
# "logos" dir in this repository. You can also submit a new logos using pull
# requests
logo: debian.png
# No images are bundled with OneFlow service,
# but the images structure must exist and be empty.
images: []
```

### Virtual Machine Template (since ONE 6.0+)

Example of an appliance, which doesn't come with any disks, but imports other appliances (referenced in `disks`) and uses their images as own:

```yaml
---
name: Name of the appliance
version: Version of this specific appliance
publisher: Company name
description: |-
Description of this appliance. The format is *Markdown* so you'll be able
to [link](https://guides.github.com/features/mastering-markdown/) or
add bullet lists:
* one
* two
* I am **bold**
short_description: This is a short description that appears in apps list
# Assorted list of tags, you can add version of OpenNebula where it was
# tested and things like OS or application
tags:
- debian
- router
- dhcp server
# Informative Image format, options: qcow2, raw, vmdk
format: qcow2
# Time in epoch format and UTC. You can get it executing "date +%s"
creation_time: 1443105849
# Informative OS, version, arch., and hypervisor
os-id: Debian
os-release: '8.4'
os-arch: x86_64
hypervisor: KVM
# Compatibility with OpenNebula releases. Appliance will be
# offered only to OpenNebula clients with matching version!!
# NOTE: VM Template Marketplace appliances are supported since 6.0!
opennebula_version: 6.0
# Appliance type, **MUST** be set to VMTEMPLATE
type: 'VMTEMPLATE'
# List of other Marketplace Appliances, which will be imported alongside
# with this appliance, and their images used as disks of current appliance.
disks:
- 'Ubuntu 20.04'
- 'Empty disk'
# The template for the appliance without disks and in YAML format
opennebula_template:
context:
network: 'YES'
ssh_public_key: "$USER[SSH_PUBLIC_KEY]"
cpu: '1'
graphics:
listen: 0.0.0.0
type: vnc
memory: '768'
os:
arch: x86_64
logo: images/logos/debian.png
# Logo to display in the web interface. You can check the available logos in
# "logos" dir in this repository. You can also submit a new logos using pull
# requests
logo: debian.png
# No images are bundled with this appliance type,
# but the images structure must exist and be empty.
images: []
```
60 changes: 60 additions & 0 deletions appliances/service/695ab19e-23dc-11ef-a2b8-59beec9fdf86.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
name: Service Lithops
version: 6.10.0-1-20240606
publisher: OpenNebula Systems
description: |-
Appliance with preinstalled [Lithops](https://lithops-cloud.github.io/docs/) and Docker for k8s backend.
See the dedicated [documentation](https://github.com/OpenNebula/one-apps/wiki/lithops_quick).
short_description: Appliance with preinstalled Lithops for KVM hosts
tags:
- lithops
- ubuntu
- service
format: qcow2
creation_time: 1717672311
os-id: Ubuntu
os-release: '22.04 LTS'
os-arch: x86_64
hypervisor: KVM
opennebula_version: >-
6.2, 6.3, 6.4, 6.6, 6.8, 6.10
opennebula_template:
context:
network: 'YES'
oneapp_lithops_backend: "$ONEAPP_LITHOPS_BACKEND"
oneapp_lithops_storage: "$ONEAPP_LITHOPS_STORAGE"
oneapp_minio_endpoint: "$ONEAPP_MINIO_ENDPOINT"
oneapp_minio_access_key_id: "$ONEAPP_MINIO_ACCESS_KEY_ID"
oneapp_minio_secret_access_key: "$ONEAPP_MINIO_SECRET_ACCESS_KEY"
oneapp_minio_bucket: "$ONEAPP_MINIO_BUCKET"
oneapp_minio_endpoint_cert: "$ONEAPP_MINIO_ENDPOINT_CERT"
ssh_public_key: "$USER[SSH_PUBLIC_KEY]"
cpu: '1'
graphics:
listen: 0.0.0.0
type: vnc
inputs_order: >-
ONEAPP_LITHOPS_BACKEND,ONEAPP_LITHOPS_STORAGE,ONEAPP_MINIO_ENDPOINT,ONEAPP_MINIO_ACCESS_KEY_ID,ONEAPP_MINIO_SECRET_ACCESS_KEY,ONEAPP_MINIO_BUCKET,ONEAPP_MINIO_ENDPOINT_CERT
memory: '768'
os:
arch: x86_64
user_inputs:
oneapp_lithops_backend: "O|text|Compute backend| |localhost"
oneapp_lithops_storage: "O|text|Storage backend| |localhost"
oneapp_minio_endpoint: "O|text|MinIO endpoint URL| |"
oneapp_minio_access_key_id: "O|text|MinIO account user access key| |"
oneapp_minio_secret_access_key: "O|text|MinIO account user secret access key| |"
oneapp_minio_bucket: "O|text|MinIO bucket name| |"
oneapp_minio_endpoint_cert: "O|text64|CA certificate for MinIO connection| |"
logo: lithops.png
images:
- name: service_Lithops
url: https://d24fmfybwxpuhu.cloudfront.net/service_Lithops-6.10.0-1-20240606.qcow2
type: OS
dev_prefix: vd
driver: qcow2
size: 778502144
checksum:
md5: 9f91dc02538d80ed37ec378e98439ef3
sha256: 6b2a2e1b01470ed642d9936a6e03cb31095e8dd677741e7e3e4a52f4ed42a64b
Binary file added logos/lithops.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 7a734f1

Please sign in to comment.