diff --git a/appliances/LithopsService/01076f79-94be-4c8f-b57f-dec96d5d15a4.yaml b/appliances/LithopsService/01076f79-94be-4c8f-b57f-dec96d5d15a4.yaml new file mode 100644 index 0000000..60cca43 --- /dev/null +++ b/appliances/LithopsService/01076f79-94be-4c8f-b57f-dec96d5d15a4.yaml @@ -0,0 +1,73 @@ +--- +name: Lithops Service - Client +version: 6.10.0-2-20241018 +publisher: OpenNebula Systems +description: |- + Appliance with preinstalled [Lithops](https://lithops-cloud.github.io/docs/). + + See the dedicated [documentation](https://github.com/OpenNebula/marketplace-community/wiki/lithops_intro). +short_description: Appliance with preinstalled Lithops for KVM hosts +tags: +- lithops +- big-data +- analytics +- ubuntu +- service +type: VMTEMPLATE +format: qcow2 +creation_time: 1734631373 +os-id: Ubuntu +os-release: '22.04 LTS' +os-arch: x86_64 +hypervisor: KVM +opennebula_version: 6.8, 6.10 +opennebula_template: + context: + fallback_dns: '$FALLBACK_DNS' + fallback_gw: '$FALLBACK_GW' + network: 'YES' + oneapp_lithops_backend: '$ONEAPP_LITHOPS_BACKEND' + oneapp_lithops_standalone: 'NO' + oneapp_lithops_storage: '$ONEAPP_LITHOPS_STORAGE' + oneapp_minio_access_key_id: '$ONEAPP_MINIO_ACCESS_KEY_ID"' + oneapp_minio_bucket: '$ONEAPP_MINIO_BUCKET' + oneapp_minio_endpoint: '$ONEAPP_MINIO_ENDPOINT' + oneapp_minio_endpoint_cert: '$ONEAPP_MINIO_ENDPOINT_CERT' + oneapp_minio_secret_access_key: '$ONEAPP_MINIO_SECRET_ACCESS_KEY' + oneapp_onebe_autoscale: '$ONEAPP_ONEBE_AUTOSCALE' + oneapp_onebe_docker_password: '$ONEAPP_ONEBE_DOCKER_PASSWORD' + oneapp_onebe_docker_user: '$ONEAPP_ONEBE_DOCKER_USER' + oneapp_onebe_jupyter_password: '$ONEAPP_ONEBE_JUPYTER_PASSWORD' + oneapp_onebe_kubecfg_path: '$ONEAPP_ONEBE_KUBECFG_PATH' + oneapp_onebe_runtime_cpu: '$ONEAPP_ONEBE_RUNTIME_CPU' + oneapp_onebe_runtime_memory: '$ONEAPP_ONEBE_RUNTIME_MEMORY' + report_ready: 'YES' + start_script_base64: "bWtkaXIgL21udC9jb250ZXh0Cm1vdW50IC9kZXYvY2Ryb20gL21udC9jb250ZXh0" + ssh_public_key: "$USER[SSH_PUBLIC_KEY]" + token: 'YES' + 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,ONEAPP_ONEBE_KUBECFG_PATH,ONEAPP_ONEBE_DOCKER_USER,ONEAPP_ONEBE_DOCKER_PASSWORD,ONEAPP_ONEBE_JUPYTER_PASSWORD,ONEAPP_ONEBE_AUTOSCALE + memory: '768' + os: + arch: x86_64 + logo: images/logos/lithops.png + 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| |" + oneapp_onebe_docker_user: "M|text|Docker user for Lithops||" + oneapp_onebe_docker_password: "M|password|Docker user password for Lithops||" + oneapp_onebe_kubecfg_path: "O|text|Path where kubeconfig file will be stored||" + oneapp_onebe_jupyter_password: "M|password|Password for Jupyter access||" + oneapp_onebe_autoscale: "0|text|Lithops backend autoscale option||all" +logo: lithops.png +disks: +- "Service Lithops" diff --git a/appliances/LithopsService/32450c33-3e40-41a3-a9df-03a3f0a614c1.yaml b/appliances/LithopsService/32450c33-3e40-41a3-a9df-03a3f0a614c1.yaml new file mode 100644 index 0000000..e1f16bb --- /dev/null +++ b/appliances/LithopsService/32450c33-3e40-41a3-a9df-03a3f0a614c1.yaml @@ -0,0 +1,70 @@ +--- +name: Lithops Service - MinIO +version: 6.10.0-2-20241018 +publisher: OpenNebula Systems +description: |- + Appliance with preinstalled [MinIO](https://min.io/docs/minio/linux/index.html). + + See the dedicated [documentation](https://github.com/OpenNebula/one-apps/wiki/minio_quick). +short_description: Appliance with preinstalled MinIO server for KVM hosts +tags: +- minio +- storage +- ubuntu +- service +format: qcow2 +creation_time: 1734631373 +os-id: Ubuntu +os-release: 22.04 LTS +os-arch: x86_64 +hypervisor: KVM +opennebula_version: 6.4, 6.8, 6.10 +opennebula_template: + context: + fallback_gw: "$FALLBACK_GW" + fallback_dns: "$FALLBACK_DNS" + network: 'YES' + oneapp_minio_hostname: "$ONEAPP_MINIO_HOSTNAME" + oneapp_minio_multi: "YES" + oneapp_minio_opts: "$ONEAPP_MINIO_OPTS" + oneapp_minio_root_password: "$ONEAPP_MINIO_ROOT_PASSWORD" + oneapp_minio_root_user: "$ONEAPP_MINIO_ROOT_USER" + oneapp_minio_tls_enabled: "$ONEAPP_MINIO_TLS_ENABLED" + oneapp_minio_tls_cert: "$ONEAPP_MINIO_TLS_CERT" + oneapp_minio_tls_key: "$ONEAPP_MINIO_TLS_KEY" + report_ready: "YES" + ssh_public_key: "$USER[SSH_PUBLIC_KEY]" + cpu: '1' + graphics: + listen: 0.0.0.0 + type: vnc + inputs_order: >- + ONEAPP_MINIO_HOSTNAME,ONEAPP_MINIO_ROOT_USER,ONEAPP_MINIO_ROOT_PASSWORD,ONEAPP_MINIO_OPTS,ONEAPP_MINIO_TLS_ENABLED,ONEAPP_MINIO_TLS_CERT,ONEAPP_MINIO_TLS_KEY + memory: '2048' + os: + arch: x86_64 + logo: images/logos/minio.png + user_inputs: + oneapp_minio_hostname: >- + O|text|MinIO hostname for TLS certificate| |localhost,minio-*.example.net + oneapp_minio_opts: >- + O|text|Additional commandline options for MinIO server| |--console-address + :9001 + oneapp_minio_root_password: O|password|Mv binIO root user password for + MinIO server + oneapp_minio_root_user: O|text|MinIO root user for MinIO server| |myminioadmin + oneapp_minio_tls_enabled: "M|boolean|Enable TLS configuration| |YES" + oneapp_minio_tls_cert: O|text64|MinIO TLS certificate (.crt)| | + oneapp_minio_tls_key: O|text64|MinIO TLS key (.key)| | +logo: minio.png +images: +- name: service_MinIO + url: >- + https://d24fmfybwxpuhu.cloudfront.net/service_MinIO-6.10.0-3-20241018.qcow2 + type: OS + dev_prefix: vd + driver: qcow2 + size: 2361393152 + checksum: + md5: 300fc063bc34bebe682acd9267db5354 + sha256: ab9434a7fe55cb7255f450b8e5b754978f5e747859de2e67713eb89b34c0f2fb diff --git a/appliances/LithopsService/651415b2-b890-4339-9ed6-ecd6c595321c.yaml b/appliances/LithopsService/651415b2-b890-4339-9ed6-ecd6c595321c.yaml new file mode 100644 index 0000000..3560733 --- /dev/null +++ b/appliances/LithopsService/651415b2-b890-4339-9ed6-ecd6c595321c.yaml @@ -0,0 +1,233 @@ +--- +name: Lithops Service Template +version: 6.10.0-2-20241018 +publisher: OpenNebula Systems +description: |- + Lithops Service deployment using OneKE as compute backend and MinIO as storage backend, orchestrated by + [OneFlow](https://docs.opennebula.io/stable/management_and_operations/multivm_service_management/appflow_elasticity.html) + + Requires + [OneFlow](https://docs.opennebula.io/stable/management_and_operations/multivm_service_management/overview.html) + and + [OneGate](https://docs.opennebula.io/stable/management_and_operations/multivm_service_management/onegate_usage.html) + OpenNebula components. + + See the dedicated [documentation](https://github.com/OpenNebula/marketplace-community/wiki/lithops-service). + + Based on VM templates + - [Lithops-Service](/appliance/01076f79-94be-4c8f-b57f-dec96d5d15a4) + - [MinIO Multi-Node](32450c33-3e40-41a3-a9df-03a3f0a614c1) + - [OneKE 1.29 VNF](https://marketplace.opennebula.io/appliance/883d974f-f30e-4fc8-aa06-e1af2a020e49) + - [OneKE 1.29](https://marketplace.opennebula.io/appliance/d6278d1b-66a4-4188-acd0-e2628296046e) +short_description: Multi-Node MinIO deployment for KVM hosts, orchestrated by OneFlow +tags: +- lithops +- computing +- big-data +- analytics +- ubuntu +- service +creation_time: 1734631373 +os-id: Ubuntu +os-release: '22.04 LTS' +os-arch: x86_64 +hypervisor: KVM +opennebula_version: 6.8, 6.10 +type: 'SERVICE_TEMPLATE' +roles: + vnf: 'OneKE 1.29 VNF' + master: 'OneKE 1.29' + worker: 'OneKE 1.29' + minio: 'Lithops Service - MinIO' + lithops: 'Lithops Service - Client' +opennebula_template: + name: Service Lithops + deployment: straight + description: '' + roles: + - name: vnf + cardinality: 1 + min_vms: 1 + vm_template_contents: | + NIC = [ + NAME = "NIC0", + NETWORK_ID = "$Public" + ] + NIC = [ + NAME = "NIC1", + NETWORK_ID = "$Private" + ] + ONEAPP_VROUTER_ETH0_VIP0 = "$ONEAPP_VROUTER_ETH0_VIP0" + ONEAPP_VROUTER_ETH1_VIP0 = "$ONEAPP_VROUTER_ETH1_VIP0" + ONEAPP_VNF_HAPROXY_INTERFACES = "$ONEAPP_VNF_HAPROXY_INTERFACES" + ONEAPP_VNF_HAPROXY_REFRESH_RATE = "$ONEAPP_VNF_HAPROXY_REFRESH_RATE" + ONEAPP_VNF_HAPROXY_LB0_IP = "" + ONEAPP_VNF_HAPROXY_LB0_PORT = "$ONEAPP_VNF_HAPROXY_LB0_PORT" + ONEAPP_VNF_HAPROXY_LB1_IP = "" + ONEAPP_VNF_HAPROXY_LB1_PORT = "$ONEAPP_VNF_HAPROXY_LB1_PORT" + ONEAPP_VNF_HAPROXY_LB2_IP = "" + ONEAPP_VNF_HAPROXY_LB2_PORT = "$ONEAPP_VNF_HAPROXY_LB2_PORT" + ONEAPP_VNF_HAPROXY_LB3_IP = "" + ONEAPP_VNF_HAPROXY_LB3_PORT = "$ONEAPP_VNF_HAPROXY_LB3_PORT" + ONEAPP_VNF_DNS_ENABLED = "$ONEAPP_VNF_DNS_ENABLED" + ONEAPP_VNF_DNS_INTERFACES = "$ONEAPP_VNF_DNS_INTERFACES" + ONEAPP_VNF_DNS_NAMESERVERS = "$ONEAPP_VNF_DNS_NAMESERVERS" + ONEAPP_VNF_NAT4_ENABLED = "$ONEAPP_VNF_NAT4_ENABLED" + ONEAPP_VNF_NAT4_INTERFACES_OUT = "$ONEAPP_VNF_NAT4_INTERFACES_OUT" + ONEAPP_VNF_ROUTER4_ENABLED = "$ONEAPP_VNF_ROUTER4_ENABLED" + ONEAPP_VNF_ROUTER4_INTERFACES = "$ONEAPP_VNF_ROUTER4_INTERFACES"" + cooldown: 120 + elasticity_policies: [] + scheduled_policies: [] + - name: master + parents": + - vnf + cardinality: 1 + min_vms: 1 + vm_template_contents: | + NIC = [ + NAME = "NIC0", + NETWORK_ID = "$Private" + ] + FALLBACK_GW = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}" + FALLBACK_DNS = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}" + ONEAPP_VROUTER_ETH0_VIP0 = "$ONEAPP_VROUTER_ETH0_VIP0" + ONEAPP_VROUTER_ETH1_VIP0 = "$ONEAPP_VROUTER_ETH1_VIP0" + ONEAPP_RKE2_SUPERVISOR_EP = "$ONEAPP_RKE2_SUPERVISOR_EP" + ONEAPP_K8S_CONTROL_PLANE_EP = "$ONEAPP_K8S_CONTROL_PLANE_EP" + ONEAPP_K8S_EXTRA_SANS = "$ONEAPP_K8S_EXTRA_SANS" + ONEAPP_K8S_MULTUS_ENABLED = "$ONEAPP_K8S_MULTUS_ENABLED" + ONEAPP_K8S_MULTUS_CONFIG = "$ONEAPP_K8S_MULTUS_CONFIG" + ONEAPP_K8S_CNI_PLUGIN = "$ONEAPP_K8S_CNI_PLUGIN" + ONEAPP_K8S_CNI_CONFIG = "$ONEAPP_K8S_CNI_CONFIG" + ONEAPP_K8S_CILIUM_RANGE = "$ONEAPP_K8S_CILIUM_RANGE" + ONEAPP_K8S_LONGHORN_ENABLED = "$ONEAPP_K8S_LONGHORN_ENABLED" + ONEAPP_K8S_METALLB_ENABLED = "$ONEAPP_K8S_METALLB_ENABLED" + ONEAPP_K8S_METALLB_CONFIG = "$ONEAPP_K8S_METALLB_CONFIG" + ONEAPP_K8S_METALLB_RANGE = "$ONEAPP_K8S_METALLB_RANGE" + ONEAPP_K8S_TRAEFIK_ENABLED = "$ONEAPP_K8S_TRAEFIK_ENABLED" + ONEAPP_VNF_HAPROXY_LB0_IP = "" + ONEAPP_VNF_HAPROXY_LB0_PORT = "$ONEAPP_VNF_HAPROXY_LB0_PORT" + ONEAPP_VNF_HAPROXY_LB1_IP = "" + ONEAPP_VNF_HAPROXY_LB1_PORT = "$ONEAPP_VNF_HAPROXY_LB1_PORT" + ONEAPP_VNF_DNS_ENABLED = "$ONEAPP_VNF_DNS_ENABLED"" + cooldown: 120 + elasticity_policies: [] + scheduled_policies: [] + - name: worker + parents": + - vnf + cardinality: 1 + vm_template_contents: | + NIC = [ + NAME = "NIC0", + NETWORK_ID = "$Private" + ] + FALLBACK_GW = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}" + FALLBACK_DNS = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}" + ONEAPP_VROUTER_ETH0_VIP0 = "$ONEAPP_VROUTER_ETH0_VIP0" + ONEAPP_VROUTER_ETH1_VIP0 = "$ONEAPP_VROUTER_ETH1_VIP0" + ONEAPP_RKE2_SUPERVISOR_EP = "$ONEAPP_RKE2_SUPERVISOR_EP" + ONEAPP_K8S_CONTROL_PLANE_EP = "$ONEAPP_K8S_CONTROL_PLANE_EP" + ONEAPP_K8S_MULTUS_ENABLED = "$ONEAPP_K8S_MULTUS_ENABLED" + ONEAPP_K8S_CNI_PLUGIN = "$ONEAPP_K8S_CNI_PLUGIN" + ONEAPP_K8S_LONGHORN_ENABLED = "$ONEAPP_K8S_LONGHORN_ENABLED" + ONEAPP_K8S_METALLB_ENABLED = "$ONEAPP_K8S_METALLB_ENABLED" + ONEAPP_K8S_TRAEFIK_ENABLED = "$ONEAPP_K8S_TRAEFIK_ENABLED" + ONEAPP_VNF_HAPROXY_LB0_PORT = "$ONEAPP_VNF_HAPROXY_LB0_PORT" + ONEAPP_VNF_HAPROXY_LB1_PORT = "$ONEAPP_VNF_HAPROXY_LB1_PORT" + ONEAPP_VNF_HAPROXY_LB2_IP = "" + ONEAPP_VNF_HAPROXY_LB2_PORT = "$ONEAPP_VNF_HAPROXY_LB2_PORT" + ONEAPP_VNF_HAPROXY_LB3_IP = "" + ONEAPP_VNF_HAPROXY_LB3_PORT = "$ONEAPP_VNF_HAPROXY_LB3_PORT" + ONEAPP_VNF_DNS_ENABLED = "$ONEAPP_VNF_DNS_ENABLED"" + cooldown: 120 + elasticity_policies: [] + scheduled_policies: [] + - name: minio + parents": + - vnf + cardinality: 1 + vm_template_contents: | + NIC = [ + NAME = "NIC0", + NETWORK_ID = "$Private" + ] + FALLBACK_GW = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}" + FALLBACK_DNS = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}" + ONEAPP_MINIO_ROOT_USER="$ONEAPP_MINIO_ROOT_USER" + ONEAPP_MINIO_ROOT_PASSWORD="$ONEAPP_MINIO_ROOT_PASSWORD" + ONEAPP_MINIO_HOSTNAME="minio.opennebula.local" + ONEAPP_MINIO_TLS_ENABLED="NO"" + cooldown: 120 + elasticity_policies: [] + scheduled_policies: [] + - name: lithops + parents": + - vnf + master + minio + cardinality: 1 + vm_template_contents: | + NIC = [ + NAME = "NIC0", + NETWORK_ID = "$Private" + ] + FALLBACK_GW = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}" + FALLBACK_DNS = "${vnf.TEMPLATE.CONTEXT.ETH1_IP}" + ONEAPP_LITHOPS_BACKEND="one" + ONEAPP_LITHOPS_STORAGE="minio" + ONEAPP_MINIO_ENDPOINT="http://${minio.TEMPLATE.CONTEXT.ETH0_IP}:9000" + ONEAPP_MINIO_ACCESS_KEY_ID="$ONEAPP_MINIO_ROOT_USER" + ONEAPP_MINIO_SECRET_ACCESS_KEY="$ONEAPP_MINIO_ROOT_PASSWORD" + ONEAPP_ONEBE_DOCKER_USER="$ONEAPP_ONEBE_DOCKER_USER" + ONEAPP_ONEBE_DOCKER_PASSWORD="$ONEAPP_ONEBE_DOCKER_PASSWORD" + ONEAPP_ONEBE_AUTOSCALE="$ONEAPP_ONEBE_AUTOSCALE" + ONEAPP_ONEBE_RUNTIME_CPU="${worker.TEMPLATE.CPU}" + ONEAPP_ONEBE_RUNTIME_MEMORY="${worker.TEMPLATE.MEMORY}"" + cooldown: 120 + elasticity_policies: [] + scheduled_policies: [] + networks: + Public: 'M|network|Public| |id::' + Private: 'M|network|Private| |id::' + custom_attrs: + ONEAPP_VROUTER_ETH0_VIP0: '0|text|Control Plane Endpoint VIP (IPv4)||' + ONEAPP_VROUTER_ETH1_VIP0: '0|text|Default Gateway VIP (IPv4)||' + ONEAPP_RKE2_SUPERVISOR_EP: '0|text|RKE2 Supervisor endpoint||ep0.eth0.vr:9345' + ONEAPP_K8S_CONTROL_PLANE_EP: '0|text|Control Plane endpoint||ep0.eth0.vr:6443' + ONEAPP_K8S_EXTRA_SANS: '0|text|ApiServer extra certificate SANs||localhost,127.0.0.1,ep0.eth0.vr,${vnf.TEMPLATE.CONTEXT.ETH0_IP}' + ONEAPP_K8S_MULTUS_ENABLED: '0|boolean|Enable Multus||NO' + ONEAPP_K8S_MULTUS_CONFIG: '0|text64|Multus custom config (default none)||' + ONEAPP_K8S_CNI_PLUGIN: '0|list|CNI plugin supported by RKE2|canal,calico,cilium|cilium' + ONEAPP_K8S_CNI_CONFIG: '0|text64|CNI custom config (default none)||' + ONEAPP_K8S_CILIUM_RANGE: '0|text|Cilium LB IP CIDR (default none)||' + ONEAPP_K8S_METALLB_ENABLED: '0|boolean|Enable MetalLB||NO' + ONEAPP_K8S_METALLB_RANGE: '0|text|MetalLB IP range (default none)||' + ONEAPP_K8S_METALLB_CONFIG: '0|text64|MetalLB custom config (default none)||' + ONEAPP_K8S_LONGHORN_ENABLED: '0|boolean|Enable Longhorn||NO' + ONEAPP_STORAGE_DEVICE: '0|text|Storage device path||/dev/vdb' + ONEAPP_STORAGE_FILESYSTEM: '0|text|Storage device filesystem||xfs' + ONEAPP_K8S_TRAEFIK_ENABLED: '0|boolean|Enable Traefik||NO' + ONEAPP_VNF_HAPROXY_INTERFACES: '0|text|Interfaces to run Haproxy on||eth0' + ONEAPP_VNF_HAPROXY_REFRESH_RATE: '0|number|Haproxy refresh rate||30' + ONEAPP_VNF_HAPROXY_LB0_PORT: '0|number|HTTPS RKE2 Supervisor port||9345' + ONEAPP_VNF_HAPROXY_LB1_PORT: '0|number|HTTPS API Server port||6443' + ONEAPP_VNF_HAPROXY_LB2_PORT: '0|number|HTTPS ingress port||443' + ONEAPP_VNF_HAPROXY_LB3_PORT: '0|number|HTTP ingress port||80' + ONEAPP_VNF_DNS_ENABLED: '0|boolean|Enable DNS recursor||YES' + ONEAPP_VNF_DNS_INTERFACES: '0|text|DNS - Interfaces||eth1' + ONEAPP_VNF_DNS_NAMESERVERS: '0|text|DNS - Nameservers||1.1.1.1,8.8.8.8' + ONEAPP_VNF_NAT4_ENABLED: '0|boolean|Enable NAT||YES' + ONEAPP_VNF_NAT4_INTERFACES_OUT: '0|text|NAT - Outgoing Interfaces||eth0' + ONEAPP_VNF_ROUTER4_ENABLED: '0|boolean|Enable Router||YES' + ONEAPP_VNF_ROUTER4_INTERFACES: '0|text|Router - Interfaces||eth0,eth1' + ONEAPP_MINIO_ROOT_USER: 'M|text|MinIO Root User||minioadmin' + ONEAPP_MINIO_ROOT_PASSWORD: 'M|password|MinIO Root User Password||' + ONEAPP_ONEBE_DOCKER_USER: 'M|text|Docker user for Lithops||' + ONEAPP_ONEBE_DOCKER_PASSWORD: 'M|password|Docker user password for Lithops||' + ONEAPP_ONEBE_JUPYTER_PASSWORD: 'M|password|Password for Jupyter access||' + ONEAPP_ONEBE_AUTOSCALE: '0|text|Lithops backend autoscale option||all' + ready_status_gate: true +logo: lithops.png +images: []