Blog Article:

Use miniONE at the Edge

Jan Orel

Cloud Engineer at OpenNebula

Oct 24, 2019

MiniONE is OpenNebula’s simple evaluation tool for deploying an all-in-one installation based on the KVM hypervisor or on LXD system containers. The latest version of miniONE brings a new option that allows users to try OpenNebula’s edge computing features by using cloud resources at the edge from bare-metal infrastructure provider Packet.

Frontend

You will need one host for OpenNebula’s frontend. It could be a physical host in your rack, your own VM or even a VM running in the public cloud. Choose either the Centos/Redhat or Ubuntu/Debian family, just ensure it is a relatively fresh and updated system.

For this demo, we decided to run the frontend on the small AWS EC2 instance, so let’s start from the AWS console. For the operating system it could be Ubuntu Server 18.04 LTS,for the instance type we could choose the t2.micro or give it little more memory by choosing t2.small. The only option you need to modify is adding some more storage, let’s say 25GB. Optionally you may allow accessing HTTP ports (80/443) to be able to connect easily to Sunstone—OpenNebula’s WebUI.

aws

miniONE

As soon as your instance is ready, connect to it and download miniONE

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

To start an edge deployment you will need to provide some details about the Packet resources: at least the packet API token and Packet project. Both can be easily found at Packet’s Customer Portal.

packet api token
packet project id

Then you should decide the location for your Edge deployment. For the first Packet node, we chose Sunnyvale, CA (for which the code name is sjc1). Feel free to choose a different location, just be sure the required Packet plan is available there. In any case, miniONE will validate your parameters before it starts to deploy.

And finally you need to pick the size of the node – Packet calls this plan. We suggest keeping the t1.smalldefault value. This is what Packet calls cloud killer, but if you want a different plan, provide it using the --edge-packet-plan parameter.

Now you should be ready to run.

# bash minione --edge packet --edge-packet-facility sjc1 --edge-packet-token [token] --edge-packet-project [project]

For the first time you will perhaps encounter the following error

Checking jq is installed  FAILED
Install jq package first

miniONE would like to validate all the Packet parameters and to parse the json output jq command is needed. In our case we will install it using

# apt update
# apt-get install jq

Now we will run the deployment again. While miniONE is doing its job, you should receive a similar output

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

### Main deployment steps:
Install OpenNebula frontend version 5.8
Install ONEProvision
Configure IPAM Packet, alias IP mapping driver, VM hooks
Trigger oneprovision
Export appliance and update VM template

Do you agree? [yes/no]:
yes

### Installation
Updating APT cache  OK
Configuring repositories  OK
Updating APT cache  OK
Installing OpenNebula packages  OK
Installing Ruby gems  OK
Installing opennebula-provision package   OK

### Configuration
Applying packet changes to oned.conf  OK
Configuring packet hooks in oned.conf  OK
Update ssh configs to accessing Packet hosts  OK
Switching OneGate endpoint in oned.conf  OK
Switching scheduler interval in oned.conf  OK
Setting initial password for current user and oneadmin  OK
Changing WebUI to listen on port 80  OK
Starting OpenNebula services  OK
Enabling OpenNebula services  OK
Add ssh key to oneadmin user  OK
Update ssh configs to allow VM addresses reusig  OK
Ensure own hostname is resolvable  OK
Checking OpenNebula is working  OK
Prepare packet template  OK
Checking packet template [/tmp/tmp.ukRnn6J8BE]  OK
Running oneprovision
2019-10-24 12:07:01 INFO  : Creating provision objects
WARNING: This operation can take tens of minutes. Please be patient.
2019-10-24 12:07:04 INFO  : Deploying
2019-10-24 12:10:40 INFO  : Monitoring hosts
2019-10-24 12:10:42 INFO  : Checking working SSH connection
2019-10-24 12:10:44 INFO  : Configuring hosts
ID: 794e1810-a9f4-4047-8601-b4aad4a7d086
OK
Exporting [Service WordPress - KVM] from Marketplace to local datastore  OK
Updating VM template  OK

and finally end up with a similar successful report

### Report
OpenNebula 5.8 was installed
Sunstone [the webui] is runninng on:
  http://172.31.87.69/
Use following to login:
  user: oneadmin
  password: xDV36pWwGe

### Packet provisioned
  ID NAME            CLUSTER   TVM      ALLOCATED_CPU      ALLOCATED_MEM STAT
   0 147.75.82.249   PacketClu   0                  -                  - init

Now when all is done just wait for a little until OpenNebula monitors the Packet host and you can see it on. Check using

# onehost list
  ID NAME            CLUSTER   TVM      ALLOCATED_CPU      ALLOCATED_MEM STAT  
   0 147.75.82.249   PacketClu   0       0 / 400 (0%)     0K / 7.8G (0%) on

Run the VM

At this point, you have a ready-to-use OpenNebula frontend connected with the KVM hypervisor on Packet and you’ll be ready to deploy your VMs. You can do so by using Sunstone or just by typing

# onetemplate instantiate 0

For the demo purposes, we chose the default appliance to be our WordPress service app. So when your first VM is running, go to the public IP of the VM and you should get a bootstrapped WordPress webpage. To see the VM public IP address run

# onevm show 0 | grep ETH0_ALIAS0_IP=
ETH0_ALIAS0_IP="147.75.82.242",

wordpress

However, you might choose a different appliance for your case. Go to our Public Marketplace and pick one of the systems. Be aware that you need to put an exact name to the parameter --edge-marketapp-name. For instance, CentOS 7 - KVM is a fine option.

miniONE gives you an option to extend the deployment by adding additional hypervisor nodes at the edge. To do so simply add an option --node to the deployment command and run it again. For the second node, we chose the location to be Amsterdam, which has ams1 code name.

# ./minione --edge packet --node --edge-packet-token [token] --edge-packet-project [project] --edge-packet-facility ams1

When miniONE finishes, you should see 2 hosts now:

# onehost list
  ID NAME            CLUSTER   TVM      ALLOCATED_CPU      ALLOCATED_MEM STAT  
   1 147.75.82.195   PacketClu   0       0 / 400 (0%)     0K / 7.8G (0%) on    
   0 147.75.82.249   PacketClu   1    100 / 800 (12%)   768M / 7.8G (9%) on

Under the hood, miniONE uses the DDC tool called oneprovision, which also offers a command-line interface. To list the Packet resources, type

# oneprovision list
                                  ID NAME                      CLUSTERS HOSTS VNETS DATASTORES STAT           
642e1b04-d266-4ed6-abf4-906ca4a08898 PacketProvision-101              1     1     2          2 configured     
794e1810-a9f4-4047-8601-b4aad4a7d086 PacketProvision-100              1     1     2          2 configured    

and to see the details

# oneprovision show 642e1b04-d266-4ed6-abf4-906ca4a08898

PROVISION 642e1b04-d266-4ed6-abf4-906ca4a08898 INFORMATION                      
ID      : 642e1b04-d266-4ed6-abf4-906ca4a08898
NAME    : PacketProvision-101
STATUS  : configured

CLUSTERS
101

HOSTS
1

VNETS
3
2

DATASTORES
103
102

Pricing and cleanup

If you choose the smallest AWS instance for the frontend—as we did—you should fit withing the Free tier eligible (up to 750hrs). The price of the Packet t1.samllinstance is $0.07 per hour. So even if you play with the deployment for quite a while you could hardly exceed $1.

Before you finish the evaluation, don’t forget to clean up your AWS EC2 instance as well as the Packet host. To delete the Packet resource you can use again the oneprovision command

# oneprovision delete [id] --cleanup

MiniONE is a tool to really help newcomers get “up and running” with an OpenNebula environment. And now you’ve seen how easy it is to launch your own edge deployment or eventually extend your current setup to the Edge. Godspeed! 🚀

2 Comments

  1. FETOUH Yacine

    Hi !

    Awesome feature. It gives lot of ideas and usecases.

    I’m wondering, as part of a support contract, do your teams can accompany in a end-to-end deployment ?

    Regards.

    Reply
    • Shivang Kapoor

      Hi! Glad to know you enjoyed the post and our new edge computing features 😀

      We offer a deployment service for customers that prefer that we get their new OpenNebula cloud up and running, and also a new Cloud Managed Service in which we take care of the full administration too, all customized perfectly to the customers need.

      If you need some more details, feel free to send us an email at sales@opennebula.io! 🙂

      Reply

Submit a Comment

Your email address will not be published. Required fields are marked *