Giter VIP home page Giter VIP logo

minione's Introduction

miniONE

miniONE is an easy to use deployment tool to build an evaluation OpenNebula cloud based on virtual machines (KVM). All necessary components to manage and run the virtual machines are installed and configured on your dedicated system with just a single command run.

Follow the detailed tutorial.

Requirements

You’ll need a server (physical or virtual) to try out OpenNebula. The provided Host should have a fresh default installation of the required operating system with the latest updates and without any customizations.

  • 4 GiB RAM
  • 20 GiB free space on disk
  • privileged user access (root)
  • openssh-server package installed
  • operating system: RHEL/AlmaLinux 8 or 9, Debian 10 or 11, Ubuntu 20.04 or 22.04
  • open ports: 22 (SSH), 80 (Sunstone), 2616 (FireEdge)

Quickstart

Download the latest release of the miniONE tool, run it and follow the instructions on the terminal.

Get Frontend Only

Run the following commands to deploy only the OpenNebula frontend:

wget 'https://github.com/OpenNebula/minione/releases/latest/download/minione'
sudo bash minione --frontend

For frontend only installation either a virtual machine or bare-metal host could be used. Afterwards, you can follow this tutorial to deploy edge clusters on-premises or on-cloud.

Get Frontend and KVM Node Cloud

Run the following commands to deploy an evaluation cloud with a front-end and a single KVM node:

wget 'https://github.com/OpenNebula/minione/releases/latest/download/minione'
sudo bash minione

This option is suitable for bare-metal hosts to utilize HW virtualization, however the deployment will fallback to emulation (QEMU) if running on virtual machine or CPU without the virt. capabilities.

License

Copyright 2002-2023, OpenNebula Systems (formerly C12G Labs)

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

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.

minione's People

Contributors

albert0marti avatar apecnascimento avatar dann1 avatar dkorzhevin avatar frousselet avatar imllorente avatar itev avatar jamilbk avatar kvakanet avatar mkutouski avatar rsmontero avatar seidior avatar skinoz avatar smart-tree avatar tinova avatar xorel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

minione's Issues

Error in network definition: expected mapping (check indentation)

tried to install opennebula on ubuntu 20 :

root@ziomario-I5:/home/ziomario/Scrivania# sudo bash minione

Checks & detection

Checking augeas is installed SKIP will try to install
Checking AppArmor SKIP will try to modify
Checking for present ssh key SKIP
Checking (iptables|netfilter)-persistent are installed SKIP will try to install

Main deployment steps:

Install OpenNebula frontend version 5.12
Configure bridge minionebr with IP 172.16.100.1/24
Enable NAT over enp3s0
Modify AppArmor
Install OpenNebula KVM node
Export appliance and update VM template
Install augeas-tools iptables-persistent netfilter-persistent

Do you agree? [yes/no]:
yes

Installation

Updating APT cache OK
Install augeas-tools iptables-persistent netfilter-persistent OK
Creating bridge interface minionebr OK
Bring bridge interfaces up FAILED

--- STDERR ---
/etc/netplan/01-network-manager-all.yaml:2:9: Error in network definition: expected mapping (check indentation)
network:
^

this is my 01-network-manager-all.yaml file :

Let NetworkManager manage all devices on this system

network:
version: 2
renderer: NetworkManager

#ethernets:
#eno1:
#dhcp4: no
#disable existing configuration for ethernet
#addresses: [10.0.0.30/24]
#gateway4: 10.0.0.1
#nameservers:
#addresses: [10.0.0.10]
#dhcp6: no

add configuration for bridge interface

#bridges:
#br0:
#interfaces: [eno1]
#dhcp4: no
#addresses: [10.0.0.30/24]
#gateway4: 10.0.0.1
#nameservers:
#addresses: [10.0.0.10]
#parameters:
#stp: false
#dhcp6: no

Wait until Marketplace image is imported

It happens, that the testing starts while image is still being imported as we don't wait until the image is ready in the OpenNebula:

minione/minione

Lines 1147 to 1153 in a2563ad

onemarketapp export "${ID}" "${MARKET_APP_NAME}" --datastore 1 > "$OUT"
IMG_LIST=$(oneimage list --csv)
if [ "$IMG_LIST" = "" ]; then
cat "$OUT" >&2
return 1
fi

Is there some documentation somewhere about setting up the networking for LXD

I had no problem installing MiniONE, running the default CentOS image was easy and updating it was no problem because it apparently already had its networking configured with a gateway through the host to the Internet and therefore to the CentOS repositories.

However, although I was able to download & install an Ubuntu 18.04 image/VM... once installed I found that I could not do:

sudo apt update

As there was no path to the Internet & thus to the Ubuntu repositories.

I then started trying to figure out exactly what I needed to configure do this. I soon realized that I wasn't having much luck.

So I am opening this "issue" to ask how its done for the images that come from the default LXD Image server?

Thanks
Brian

OneGate Misconfigurations

  1. In oned.conf, the ONEGATE_ENDPOINT must use double quotes. E.g., this is not valid:
ONEGATE_ENDPOINT = 'http://172.16.100.1:5030'
  1. Default oneadmin user doesn't have TOKEN_PASSWORD in his template. It's not possible to use OneGate as the OpenNebula fails when generating a token into the VM's context media:
Thu Jun 27 15:45:34 2019 [Z0][VMM][I]: Generating deployment file: /var/lib/one/vms/0/deployment.0
Thu Jun 27 15:45:34 2019 [Z0][VM][E]: Cannot generate OneGate token: TOKEN_PASSWORD not set in the user template.
Thu Jun 27 15:45:34 2019 [Z0][VMM][E]: Cannot set context disk to update it for VM 0
Thu Jun 27 15:45:34 2019 [Z0][VM][I]: New LCM state is BOOT_FAILURE
  1. NICE TO HAVE: It would be great if the default template comes with preconfigured OneGate token and reporting:
CONTEXT = [
...
  REPORT_READY = "YES",
  TOKEN = "YES" ]

It is possible to use Virtualbox or QEMU/Kvm virtual machines?

I've tried minione with both Virtualbox and QEMU/Kvm but unsuccessfully.
I installed ubuntu 18.04 and executed:

sudo bash minione --lxd

and got this:

### Checks & detection
Checking AppArmor  SKIP will try to modify

### Main deployment steps:
Configure bridge minionebr with IP 172.16.100.1/24
Enable NAT over ens3
Modify AppArmor
Install OpenNebula node version 5.8
Using ssh public key /home/marco/.ssh/id_rsa.pub
Install OpenNebula frontend version 5.8

Do you agree? [yes/no]:
yes

### Installation
Updating APT cache  OK
Creating bridge interface minionebr  OK
Restarting network  OK
Enabling IPv4 forward  OK
Configuring NAT using iptables  OK
Verify bridge by ping from it  FAILED
ping -W 3 -c 1 -I 172.16.100.1 8.8.8.8 -q
--- STDERR ---
bind: Cannot assign requested address
--------------

Install fails on Ubuntu 18.04 as Netplan is default

Minione fails to install on a standard Ubuntu 18.04 install that uses Netplan to install as minione attempts to use /etc/network and the networking service which do not exist.

### Main deployment steps:
Install bridge-utils
Configure bridge minionebr with IP 172.16.100.1/24
Enable NAT over eno1
Using ssh public key /home/lux/.ssh/id_rsa.pub
Install OpenNebula version 5.6
Modify AppArmor

Do you agree? [yes/no]:
yes

### Installation
Updating apt cache  OK
Install bridge-utils  OK
Creating bridge interface minionebr  OK
Restarting network  FAILED
lux@freyr:~$ cat /etc/network/interfaces
# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown
lux@freyr:~$ sudo service networking restart
Failed to restart networking.service: Unit networking.service not found.

Configure SSH to ignore host keys of VMs

In the evaluation environment, where the VMs are running just inside a single host, it would be good to avoid storing of any SSH host keys for the addresses from the VMs' private segment (applies for root+oneadmin users). This should improve the user experience when recycling the IPs for different VMs:

[root@minione1 ~]# ssh 172.16.100.2
The authenticity of host '172.16.100.2 (172.16.100.2)' can't be established.
ECDSA key fingerprint is SHA256:b238pG5f+bbWGC7m76JBGwFPeqs+AsNeHk3tSyyxylY.
ECDSA key fingerprint is MD5:88:59:0c:c8:0a:a5:8e:77:74:9c:ca:a1:d7:48:8e:27.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.100.2' (ECDSA) to the list of known hosts.
[root@localhost ~]# 
...
[root@minione1 ~]# ssh 172.16.100.2
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:X/lhffgheY4ADY0m7k2NZOEJITuNOCwWYKd1YJDPNgU.

not all requirements are listed

Minione has quite a few prereq checks.
There's also a documentation page lisiting requirements.

all things that will fail an installation attempt should be listed as requirements.
some are not mentioned at all.

the installation should not include multiple attempts.

my example would be this error:

[root@svc-centos74-661 ~]# bash minione --force

### Checks & detection
Checking cpu virtualization capabilities  SKIP QEMU will be used
Checking free disk space  IGNORE
Checking directories from previous installation  IGNORED will be cleaned
Checking user from previous installation  IGNORE
Checking minionebr interface is not present  IGNORED
retry 1 Checking virtual network 172.16.101.0/24 is not routed  FAILED
[root@svc-centos74-661 ~]# ip route show
default via zzz dev eth0 
zzzz dev eth0 proto kernel scope link src zzzz 
172.16.101.0/24 dev minionebr proto kernel scope link src 172.16.101.1 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 

ip forwarding was enabled, only modification I had to do was to change the subnet since it was used for my vpn. I don't really know what this check does but it would be good to just have a table showing all the things that are pre- or postchecks along with their causes.

Configurable Sunstone port

Sunstone listening port should be configurable and by default set to 80/tcp, so that the (new) users don't need to remember the specific URL.

short video to demo installing and using miniONE w LXD Hypervisor

Don't know if this is of value but I made a short video to demo how I installed & configured miniONE with LXD as the Hypervisor then create two LXD OpenNebula "VMs".

https://drive.google.com/file/d/1RGtCd2E7XmUSK1tWIkDa1IA4E6YBa0RM/view

I also posted this video on the LXD sub-reddit:

https://www.reddit.com/r/LXD/comments/bnqhx1/opennebula_cloud_orchestration_with_lxd_using/

and on the LXD User Forum in order to help others get started...

https://discuss.linuxcontainers.org/t/opennebula-cloud-orchestration-with-lxd-using-opennebulas-minione-one-being-opennebulas-acronym-for-opennebula-installs-in-just-a-few-minutes/4768/11

I also put it on youtube but image quality doesn't seem as good there for some reason.

Brian

"CentOS7 5.8" not in Ubuntu18.04 5.8

I try to install minione/openNebula inside LXD/LXC container.
Host system Ubuntu 18.04
Lxd/Lxc container centos 7
bash minione --lxd --force
error:
--- STDERR ---
"CentOS7 5.8" not in Ubuntu18.04 5.8

Do is any way to install OpenNebula/minione inside any HOST->container?

Minione and firewalld on CentOS/RHEL/Fedora or other firewalls

When mininone is installing both frontend and node it disables firewalld but it does not disable it when only frontend is installed and therefore sunstone is inaccessible.

Consider to support iptables/firewalld rules or just turn off firewalld always.

MiniONE does not auto-restart after its Server/Host/VM is shutdown/restarted

This may be the same problem as Issue #9 but that's been open since March and doesn't appear to have been fixed/closed.

I am using MiniONE okay but the problem is that MiniONE does not auto-restart when the Server/VM/Host it is running on is shutdown or restarted?

If I shutdown the VM/HOST and later restart it... how do I restart MiniONE so I don't have to just reinstall it and start all my work over again?

thanks
Brian

Are their any complete tutorial's for Operations? I see many fragmented or non-english ones.

Once MiniONE is installed its really tough trying to figure out how to do alot of things.

Documentation is terse & at times complex and without many examples.

Many of the Video's that exist (youtube or otherwise) are either fragments (ie covering 1 topic) or non-english.

Is there any beginning-to-end operations video covering what you do after logging into MiniONE:

  • how to start a VM with an Image from the LXD Image repository or linuxcontainers.org
  • how to configure that VM's template so a VM started with that "image" has internet connectivity which allows it to have its package updated/upgraded or new packages added
  • how to create/modify storage and assign that storage to a VM or Template
  • etc

Thanks
Brian

Multiple firecracker deployments can fail due to kernel and marketapp image names

Install firecracker locally:
./minione --firecracker --yes

then install on the edge:
./minione --node --firecracker --edge packet --edge-packet-token $TOKEN --edge-packet-project $PROJECT --edge-packet-facility ams1 --yes

I get the following error:

OK
Exporting [alpine] from dockerhub to local datastore  FAILED

--- STDERR ---
IMAGE
[one.image.allocate] Error allocating a new image. NAME is already taken by IMAGE 0.

If I use another market app,
./minione --node --firecracker --edge packet --edge-packet-token $TOKEN --edge-packet-project $PROJECT --edge-packet-facility ams1 --fc-marketapp-name nginx --yes

it fails due to the kernel name:

Exporting [nginx] from dockerhub to local datastore  OK
Exporting [Kernel 5.4 x86_64 - Firecracker] to local datastore  FAILED

--- STDERR ---
IMAGE
[one.image.allocate] Error allocating a new image. NAME is already taken by IMAGE 1.

qemu-kvm-ev not installed on C7

qemu-kvm-ev is not installed on CentOS 7, it's necessary to split the installation of repository definition package and qemu-kvm-ev into 2 steps:

minione/minione

Line 640 in 2e87738

install centos-release-qemu-ev qemu-kvm-ev || return 1

Until sshd.service could not be found in a fresh installation.

I tried to install ONE KVM evaluation in a fresh Ubuntu installation and receve the error message: "Unit sshd.service could not be found" in check and detection step. later a discover was because the "openssh-server" package wasn't present in my OS. I think this package should be in the list of common requirements in the README file to help new users to get the happiest first installation experience.

Have the limitations of LXD changed since the Web Page was published?

http://docs.opennebula.org/5.8/deployment/open_cloud_host_setup/lxd_driver.html#requirements
For the LXD Driver the above page lists the following "Considerations & Limitations Host issues"

There are a number of regular features that are not implemented yet:

  • snapshots
  • live migration
  • save/restore
  • live disk resize
  • LVM datastore
  • PCI Passthrough
  • volatile filesystems
  • offline disk resize:
  • not supported on multiple partition images
  •    only supported xfs and ext4 filesystems
    

OneFlow / OneGate services

Currently, the OneFlow service isn't running on fresh new deployment and user is greeted with an error message "Cannot connect to OneFlow server" when tries to manage the services in the Sunstone.

Also, OneGate isn't started as well. Note: oned.conf is already configured with ONEGATE_ENDPOINT, but the listen IP must be also changed in onegate-server.conf before starting.

OneGate not reachable for edge cloud VMs

In the oned.conf, OneGate endpoint is configured for local VMs. But, this is the private IP address unreachable for remote edge cloud VMs. E.g.,

ONEGATE_ENDPOINT = "http://172.16.100.1:5030"

Maybe we can have OneGate to listen on all interfaces (0.0.0.0) and simply use a primary host IP address of as universal endpoint. Not sure if it would work for both local and edge cloud VMs, hopefully yes.

minione: line 346: service: command not found

error in Minione on Debian 10.
Minione version 5.12

bash minione --firecracker --bridge-interface ztnfaozzob --nat-interface ens3 --force

### Checks & detection
Checking augeas is installed  SKIP will try to install
Checking free disk space  IGNORE
Checking sshd service is running  FAILED

--- STDERR ---
minione: line 346: service: command not found
--------------

No check for curl before attempting market checks

Currently MiniONE doesn't check that the system has curl installed before attempting to use it ending with a failed install at the store check for CentOS KVM.

lux@freyr:~$ sudo bash minione --verbose

### Checks & detection
Checking distribution and version [Ubuntu 18.04]  OK
Checking cpu virtualization capabilities  OK
Check free disk space  OK
Using local interface [eno1]  OK
Checking directories from previous installation  OK
Checking user from previous installation  OK
Checking sshd service is running  OK
Checking bridge-utils are installed  SKIP will try to install
Checking minionebr interface is not present  OK
Check given VN 172.16.100.0/24 is not routed  OK
Checking AppArmor  SKIP will try to modify
Checking for present ssh key  SKIP
Generating ssh keypair in /home/lux/.ssh/id_rsa  OK
Checking presence of the market app: "CentOS 7 - KVM"  FAILED
STDERR:
minione: line 198: curl: command not found
Not found

Code Linting

Enable Travis for code linting with ShellCheck (e.g., it would be great if the official Docker image with latest release could be used thre).

# shellcheck minione -f gcc | egrep 'warning|error'
minione:128:15: error: Argument mixes string and array. Use * or separate argument. [SC2145]
minione:208:11: warning: Declare and assign separately to avoid masking return values. [SC2155]
minione:315:29: warning: Quote this to prevent word splitting. [SC2046]
minione:348:32: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
minione:350:62: error: Double quote array expansions to avoid re-splitting elements. [SC2068]
minione:582:29: warning: Quote this to prevent word splitting. [SC2046]
minione:852:11: warning: Declare and assign separately to avoid masking return values. [SC2155]
minione:887:11: warning: Declare and assign separately to avoid masking return values. [SC2155]
minione:915:21: warning: This format string has 4 variables, but is passed 1 arguments. [SC2183]
minione:915:42: warning: Quote this to prevent word splitting. [SC2046]
minione:916:31: warning: Quote this to prevent word splitting. [SC2046]
minione:917:22: warning: This format string has 4 variables, but is passed 1 arguments. [SC2183]
minione:917:38: warning: Quote this to prevent word splitting. [SC2046]
minione:945:5: warning: I appears unused. Verify it or export it. [SC2034]
minione:967:11: warning: Declare and assign separately to avoid masking return values. [SC2155]

Script loops if provided on stdin

When script is provided on stdin, it only loops over the confirmation question:

# curl -s https://raw.githubusercontent.com/OpenNebula/minione/master/minione | bash

### Checks & detection
Checking bridge-utils are installed  SKIP will try to install

### Main deployment steps:
Install bridge-utils
Configure bridge minionebr with IP 172.16.100.1/24
Enable NAT over eth0
Using ssh public key /root/.ssh/id_rsa.pub
Install OpenNebula version 5.6

Do you agree? [yes/no]:
yes or no?
yes or no?
yes or no?
yes or no?
yes or no?
...

The question should be raised only if terminal is available.

installation fails on debian sid/bullseye due to $DISTVER

### Checks & detection
Checking distribution and version [Debian s 5.10]  FAILED

Even when $DISTVER variable is modified manually to continue installation, the apt repository installation fails due to broken url: deb https://downloads.opennebula.io/repo/5.10/Debian/s/

Installation fails - MTU

Hello,

there is an option to set manual the MTU on installation because my installation fails. The reason is the wrong MTU when minione create the Network.

Like:
sudo bash minione --lxd --mtu=1400

Review vnet parameters

Currently, there might be some confusion about following vnet values:

--vnet-gateway [172.16.100.1]       Virtual Network gateway (i.e. bridge IP)
--vnet-ar-ip-start [172.16.100.1]   Virtual Network AR start IP

... as default gateway parameter sames IP of the AR start.

If should be more:

  • vnet-gateway [172.16.100.1] - dedicated IP for minionebr and onevnet gateway
  • vnet-ar-ip-start [172.16.100.2] - non-clashing IP range for VMs

Wait until ONE is ready

In ONE<5.6, the systemd service scripts didn't wait until the OpenNebula is started. To successfully deploy some older version (e.g., 5.4) it's necessary to put a waiting loop for the command checking the availability of the OpenNebula:

minione/minione

Line 661 in 69dcd49

check "onehost list >/dev/null 2>&1" "Checking OpenNebula is working"

Front-end only deployment

While it's super useful to be able to deploy all-in-one evaluation environment, for the DDC scenario, it might be good to easily deploy only front-end and leave the hypervisor nodes on user or oneprovision tool.

Let's introduce parameter --frontend (or similar) to do only steps necessary to prepare a front-end (repositories, packages, install_gems, reconfiguration, initial user) and finish. No datastores, networks, image import, ...

Reconfiguration without a previous `minione --purge`

When minione installs OpenNebula it may lure someone into thinking to reconfigure the installation with few changed arguments from the previous run.

Minione with --force will try to comply but fails during the process.

Either forbid this even with --force argument or support proper reconfiguration (for example: new oneadmin's password, sunstone port etc.).

Examples:

$ bash minione --yes --lxd --frontend --version 5.11 --password badpass --sunstone-port 9869 # This runs OK
$ bash minione --yes --lxd --frontend --version 5.11 --password badpass123 --sunstone-port 80 --force # This does not do what was expected
…
Setting initial password for current user and oneadmin  FAILED

--- STDERR ---
minione: line 1254: /var/lib/one/.one/one_auth: No such file or directory
--------------

minione environment preparation failure due to unfinished install

minione failed to prepare environment because somehow it not able to install all packages, which led to error loop.

  1. Fail on package get/installation:
Installing OpenNebula node packages  FAILED
apt-get install -y opennebula-node
--- STDERR ---
E: Failed to fetch http://mirror.leaseweb.com/ubuntu/pool/main/u/usbredir/libusbredirparser1_0.7.1-1_amd64.deb  Undetermined Error [IP: 37.58.58.140 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
--------------
  1. Failure to continue install due to existing partial install:
# ./minione

### Checks & detection
Checking directories from previous installation  FAILED
  1. Option force (-f) didn't helped because existing route exist:
# ./minione -f

### Checks & detection
Checking directories from previous installation  IGNORED will be deleted
Checking user from previous installation  IGNORED will be deleted
Checking minionebr interface is not present  IGNORED
Checking virtual network 172.16.100.0/24 is not routed  FAILED
  1. Installation continued only when existing route was deleted (blocker):
ip route del 172.16.100.0/24

It would be good to at least clarify error messages a bit (for example, additionally notify about force option (-f) and route remove.

Access to OneGate from remote locations

Few issues related to miniONE with Edge (and not only):

  • OneGate binds to 127.0.0.1
  • OpenNebula provides ONEGATE_ENDPOINT with private network IP
  • also, front-end on EC2 doesn't detect public IP address correctly:
    • EC2 metadata service could be queried or
    • use curl ifconfig.co for general purpose
  • probably also missing test for REPORT_READY in miniONE microenvs

Reusing provision IDs

miniONE could reuse IDs for edge provisions (and VM templates!) if the previous deployment is cleaned and recreated again:

minione/minione

Lines 1317 to 1326 in f66be4a

get_next_packet_id() {
local ID
ID=$(onecluster list -l ID | grep -E '[0-9]+' | sort | tail -1)
if [[ -z "$ID" || "$ID" -lt 100 ]]; then
ID=100
else
ID=$(( ID + 1 ))
fi
echo $ID
}

It would be better to use unique identifications, e.g. based on date/time?

Improve Error Logging

Improve the verbosity of error conditions. A failed command should provide the stdout / stderr output, so that it's more clear what was wrong. E.g.:

...
Configuring NAT over “eth0”
Configuring OpenNebula repositories
Installing OpenNebula packages and dependencies

--- ERROR OUTPUT ---
/usr/share/one/install_gems
...
Using amazon-ec2 0.9.17
Using aws-sdk-core 2.5.10
Using faraday 0.9.2
Using treetop 1.6.8
Using rack-protection 1.5.3
Using thin 1.7.0
Using aws-sdk-resources 2.5.10
Using faraday_middleware 0.10.0
Using zendesk_api 1.13.4
Using sinatra 1.4.7
Using aws-sdk 2.5.10
Failed to install azure-core 0.1.4
--- ERROR OUTPUT ---

ERROR: Could not install Gem dependencies

failure with oneadmin excluded by ssh allowusers/allowgroups

Setup fails if the ssh config has allowusers/allowgroups which doesn't include oneadmin.
I don't know if there's a good way to test the possibilities initially, but it's not obvious what's happening when you get prompted for oneadmin's password. Perhaps it could enforce passwordless connexion and print something helpful if that fails.

Adding new node to minione

Howdy people.

I love minone, it got my setup up and running in minutes, but now I have problem expanding and I'm exhausted after 2 weeks of trying to throw in additional node. It shows up as STATUS ON in list and all. I can see resources but no luck starting VM there.
example output:

Sun Jan 26 11:08:24 2020 [Z0][VM][I]: New state is ACTIVE
Sun Jan 26 11:08:24 2020 [Z0][VM][I]: New LCM state is PROLOG
Sun Jan 26 11:08:25 2020 [Z0][VM][I]: New LCM state is BOOT
Sun Jan 26 11:08:25 2020 [Z0][VMM][I]: Generating deployment file: /var/lib/one/vms/31/deployment.0
Sun Jan 26 11:08:27 2020 [Z0][VMM][I]: Successfully execute transfer manager driver operation: tm_context.
Sun Jan 26 11:08:28 2020 [Z0][VMM][I]: ExitCode: 0
Sun Jan 26 11:08:28 2020 [Z0][VMM][I]: Successfully execute network driver operation: pre.
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: Command execution fail: cat << EOT | /var/tmp/one/vmm/lxd/deploy '/var/lib/one//datastores/0/31/deployment.0' 'ubu1910' 31 ubu1910
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: deploy: Processing disk 0
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: deploy: Using qcow2 mapper for /var/lib/one/datastores/0/31/disk.0
Sun Jan 26 11:08:29 2020 [Z0][VMM][E]: deploy: do_map: qemu-nbd: Failed to blk_new_open '/var/lib/one/datastores/0/31/disk.0': Could not open '/var/lib/one/datastores/0/31/disk.0': Permission denied
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: deploy: Mapping disk at /var/snap/lxd/common/lxd/storage-pools/default/containers/one-31/rootfs using device
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: deploy: Processing disk 0
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: deploy: Using qcow2 mapper for /var/lib/one/datastores/0/31/disk.0
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: deploy: Unmapping disk at /var/snap/lxd/common/lxd/storage-pools/default/containers/one-31/rootfs
Sun Jan 26 11:08:29 2020 [Z0][VMM][E]: deploy: Failed to detect block device from /var/snap/lxd/common/lxd/storage-pools/default/containers/one-31/rootfs
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: deploy: Unmapping disk at /var/lib/one/datastores/0/31/mapper/disk.1
Sun Jan 26 11:08:29 2020 [Z0][VMM][E]: deploy: Failed to detect block device from /var/lib/one/datastores/0/31/mapper/disk.1
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: /var/tmp/one/vmm/lxd/deploy:64:in `<main>': failed to setup container storage (RuntimeError)
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: ExitCode: 1
Sun Jan 26 11:08:29 2020 [Z0][VMM][I]: Failed to execute virtualization driver operation: deploy.
Sun Jan 26 11:08:29 2020 [Z0][VMM][E]: Error deploying virtual machine
Sun Jan 26 11:08:29 2020 [Z0][VM][I]: New LCM state is BOOT_FAILURE

Above output is from node that has /var/lib/one mounted over NFS to Sunstone.
I tried the same without shared storage (hoping it would feed image files over SSH or something) and result is similar. Doesn't work (slightly different output).

Setup is:

Hostname opennebula (well it says it all, deployed using minione)
Hostname ubu1910 (new compute node)
Hostname rt (another compute node)

oneadmin@opennebula:~$ onehost list
  ID NAME                                                   CLUSTER    TVM      ALLOCATED_CPU      ALLOCATED_MEM STAT
   5 rt                                                     default      1    100 / 400 (25%)   768M / 7.7G (9%) on
   4 ubu1910                                                default      1    100 / 400 (25%)  768M / 1.9G (38%) on
   0 localhost                                              default      0       0 / 800 (0%)     0K / 7.8G (0%) on

Tried adding nodes via CLI and webgui, constantly ends up same way. I should note that I SEE message about permission, but when I logon as oneadmin, and do ls, touch or anything on this nfs share - works fine.

Any ideas? It must be something I'm missing, OR some silly mistake I've made. But went through and through with documentation, yt and blog tutorials and everyone seem to have it working without any problems. Maybe lxd is the problem here?

Ending with dump of ubu1910 node:

oneadmin@opennebula:~$ onehost show 4
HOST 4 INFORMATION
ID                    : 4
NAME                  : ubu1910
CLUSTER               : default
STATE                 : MONITORED
IM_MAD                : lxd
VM_MAD                : lxd
LAST MONITORING TIME  : 01/26 11:10:56

HOST SHARES
RUNNING VMS           : 1
MEMORY
  TOTAL               : 1.9G
  TOTAL +/- RESERVED  : 1.9G
  USED (REAL)         : 442.6M
  USED (ALLOCATED)    : 768M
CPU
  TOTAL               : 400
  TOTAL +/- RESERVED  : 400
  USED (REAL)         : 0
  USED (ALLOCATED)    : 100

MONITORING INFORMATION
ARCH="x86_64"
CLUSTER_ID="0"
CPUSPEED="3325"
HOSTNAME="ubu1910"
HYPERVISOR="lxd"
IM_MAD="lxd"
LXD_PROFILES=""
MODELNAME="Intel(R) Xeon(R) CPU           X5680  @ 3.33GHz"
NAME="ubu1910"
NETRX="0"
NETTX="0"
RESERVED_CPU=""
RESERVED_MEM=""
VERSION="5.10.1"
VM_MAD="lxd"

NUMA NODES

  ID CORES USED FREE
   0 - -   0    2

NUMA MEMORY

 NODE_ID TOTAL    USED_REAL            USED_ALLOCATED       FREE
       0 1.9G     880.6M               0K                   1.1G

NUMA HUGEPAGES

 NODE_ID SIZE     TOTAL    FREE     USED
       0 2M       0        0        0

WILD VIRTUAL MACHINES

NAME                                                      IMPORT_ID  CPU     MEMORY

VIRTUAL MACHINES

  ID USER     GROUP    NAME                                   STAT UCPU    UMEM HOST                             TIME
  31 oneadmin oneadmin t2                                     fail    0      0K ubu1910                      0d 00h05

Thanks!

install_gems fails with no error reported

Run minione on a system without LSB, get Ruby gems failure without additional error:

...
Configuring repositories  OK
Installing epel  OK
Installing OpenNebula packages  OK
Installing ruby gems  FAILED
$ 

When run manually, I get a question about OS:

# /usr/share/one/install_gems 
lsb_release command not found. If you are using a RedHat based
distribution install redhat-lsb

Select your distribution or press enter to continue without
installing dependencies.

0. Ubuntu/Debian
1. CentOS/RedHat/Scientific

Step iptables failed on "Cannot assign requested address"

(user report got via e-mail)

Executing the minione bash under ubuntu 18.04, I've the following answer :

Installation

Updating apt cache OK
Install bridge-utils OK
Creating bridge interface minionebr OK
Restarting network OK
Enabling ipv4 forward OK
Configuring nat using iptables FAILED
STDERR:
bind: Cannot assign requested address

5.10/Ubuntu/20.04 stable Release' does not have a Release file.

I stuck here . I was installing openenbula through minione on ubuntu 20.04

Installation

Updating APT cache OK
Install augeas-tools bridge-utils apt-transport-https iptables-persistent netfilter-persistent OK
Download augeas lens oned.aug OK
Creating bridge interface minionebr OK
Bring bridge interfaces up OK
Enabling IPv4 forward OK
Configuring NAT using iptables OK
Saving iptables changes OK
Installing DNSMasq OK
Starting DNSMasq OK
Configuring repositories OK
Updating APT cache FAILED

--- STDERR ---
E: The repository 'https://downloads.opennebula.org/repo/5.10/Ubuntu/20.04 stable Release' does not have a Release file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.