Overview
I recently wrote a new UI plugin in oVirt, that allows creating a VM that will run a Docker container inside it. This post shares the information about it, explains how to use it and what are the prerequisites.What is it good for?
Well, Docker gives a very cool wrapping on top of linux containers. In addition, it also gives a public repository people can use! That makes it very easy to both create and consume container images that give different services, such as application servers, databases and many other services. Using the UI plugin to run that inside oVirt makes the job of deploying an existent service as easy as clicking a button (well... some steps are required first, but not too much steps :-) ).Setting it up
In order to use the UI plugin you first need to fetch it from the samples-uiplugins git repository. The git repository is in git://gerrit.ovirt.org/samples-uiplugins. The plugin is currently being reviewed, so it is available at Docker-Plugin-Patch. Copy the plugin files to /usr/share/ovirt-engine/ui-plugins, so that you'll have the following directory structure:- docker.json
- docker-resources/
- docker-resources/plugin.html
- docker-resources/icon_help.png
- docker-resources/launch-docker-dialog.html
- docker-resources/progress.gif
Then, you need to configure it. I usually do that using the docker.json file, although you can create a user-specific file as well. The relevant entries to configure are:
- allowedOrigins - that entry is used in order to pass messages between the UI plugin infrastructure and the plugin itself. I'll make it simple and just say you need to put the engine URL there, at the same way you access it with your browser (http://engine-server:port, or https://engine-server:port)
- apiEntryPoint - API entry point. Usually something like http(s)://engine-server:port/ovirt-engine/api
- dockerImages - Images you wish to be able to run. It can be either just an image name, or something more specific like user/image:label
Using the plugin
How does it work?
- The UI plugin that allows the user to create a new oVirt VM, that runs a selected docker image running a specified command
- It uses the cloud-init integration in order to pass the docker commands to the guest
- docker image is downloaded from the public registry to the VM on first launch
Prerequisites
The plugin is based on creating a new oVirt VM from a template, passing cloud-init arguments that will configure and run the docker container.Thus, in order to use it you need to have a Fedora image with docker service (with -r option to make containers start also after VM), cloud-init, and ovirt-guest-agent
It works only in cluster level 3.4 and above, as it requires persisting the cloud-init properties
Make sure the template you create have enough storage, as it might be required when downloading docker images. If you're interested in specific images then I recommend to pull them to the VM you create the template from, that way they'll be available, and won't require downloading the image when starting the container.
Plugin in action
1. You first login to the oVirt admin portal, and go the the VM main tab:2. There you'll see the "Create Docker VM" button.
3. Press on it, and you'll see the following dialog:
4. Fill in the details:
- Choose a DC
- Choose a Cluster
- Choose a Template that follows the prerequisites above
- Fill in other VM properties
- Fill in the Docker details (image, port mapping, and command). The command is mandatory only in case the image doesn't have an ENTRYPOINT.
- Fill in the cloud-init details (I've decided to put only host name and SSH key, for the sake of simplicity).
The VM is being created now. Once finished you can run it. After a few minutes, the IP address of it will appear in the admin portal, so you can either connect to it via SSH if you want (using the public SSH key you've passed), or just use the service it is supplying. In the screenshot I've created a Jboss instance, so I can just see that browsing results in a Test Page. Here is a screenshot showing the IP address:
And here is the result of browsing to this VM (we have mapped port 80 of the container to port 80 of the VM):
Pre-defined image in glance.ovirt.org
In order to ease the process of using this UI plugin, I've created an image you can import from the public oVirt Glance repository, "CentOS 6.5 64-Bit Docker".You can import it using the guide available in my previous post (Importing Glance images as oVirt templates). It is based on the CentOS 6.5 cloud image. Make sure to create a virtual NIC in the template after importing, and also to set the relevant OS.
Note that I tested the plugin both using this template, and using a Fedora 19 template, installed from scratch. Using the Fedora 19 cloud image didn't work well for me, as the docker container got stuck on startup.
That's it! Start running containers in oVirt!
nice one Oved !!
ReplyDeleteOved - really useful article - bookmarking it! Thanks.
ReplyDeleteHi Oved
ReplyDeleteNice article.
Do you have any idea of the API which can be used to create the drop down box in custom tab?
i.e instead of "Create docker button" to have drop down menu?
-Nikita
Hi
DeleteI don't think there is such an API call. You can either add a context menu item, or an action button on the top panel.
However, I suggest you send an E-mail to users@ovirt.org, as the UI plugin maintainer is monitoring this list, so he might suggest an alternative / advise you to open RFE on that.
Hi,
ReplyDeleteCan we execute any shell commands on the RHEV-M from the ovirt-engine?
e.g to execute the "ls" command in RHEV_M manager through browser?
-Nikita
No.
ReplyDeleteMay I ask what's the need for that?
In addition, I really recommend to send such questions on users@ovirt.org (which I see that you did, and hopefully your issue will be resolved soon).
Thanks :)
DeleteHi,
ReplyDeleteI tried using launch-docker-dialog.html script without docker i.e. I tried to update api/vms file but I was not able to do so.
I tried below code:
function AttachDevice(apiEntryPoint) {
var vvmsUrl = apiEntryPoint + "/vms";
var data1="null";
jQuery.ajax({
type: "POST",
url: vmsUrl,
headers: { 'Prefer' : 'persistent-auth' },
data: data1.toJsonString(),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data, status, jqXHR) {
alert('VM created successfully');
},
error: function (jqXHR, status) {
// Showing the error
alert(JSON.stringify(jqXHR));
// Hiding the progress widget
}
});
// Showing the progress widget
}
but above code is not working.Neither success message is printed nor error message.
Awesome Thanks for sharing
ReplyDeleteThis plugin doesn't appear to work any longer. There is no data center listed or cluster listed in the dropdown boxes on the docker creation page.
ReplyDeleteThat's true. Many things changed since, and it is no longer maintained.
DeleteYour information is really superb thanks for sharing good information share more content on Devops Online Training Bangalore
ReplyDeleteNice and good article. It is very useful for me to learn and understand easily. Thanks for sharing your valuable information and time. Please keep updating Docker training
ReplyDeleteThank you for sharing very useful blog!!!!
ReplyDeleteDocker and Kubernetes Training
Docker and Kubernetes Online Training
Docker Online Training
ucuz takipçi
ReplyDeleteucuz takipçi
tiktok izlenme satın al
binance güvenilir mi
okex güvenilir mi
paribu güvenilir mi
bitexen güvenilir mi
coinbase güvenilir mi
malatya eskort
ReplyDeleteağrı eskort
adana eskort
edirne eskort
zonguldak eskort
rize eskort
balıkesir eskort
karabük eskort
kırşehir eskort
konak eskort
izmir eskort
ReplyDeleteordu eskort
yozgat eskort
niğde eskort
bitlis eskort
izmit eskort
düzce masöz
manisa masöz
alanya eskort
ReplyDeleteafyon eskort
amasya eskort
bayburt eskort
yozgat eskort
ataköy eskort
düzce masöz
manisa masöz
izmit masöz
görükle masöz
Casino Tournaments List 2021
ReplyDeleteCasino Tournaments List 바카라 사이트 2021 - Top 토토 사이트 Casinos 안전한 바카라 사이트 to Play in 2021 - We have list of casinos for you 바카라 to play your favorite slot games for fun.Casino Tournaments · Casino Tournaments · 예스 벳 Games · Tournaments
mmorpg oyunlar
ReplyDeleteinstagram takipçi satın al
TİKTOK JETON HİLESİ
tiktok jeton hilesi
antalya saç ekimi
İnstagram Takipçi Satın Al
Instagram takipci satın al
MT2 PVP SERVERLER
INSTAGRAM TAKİPCİ SATİN AL
thanks due to the fact you have been precise-natured to percentage opinion subsequent to us. we are able to continually recognize all you have finished here because I understand you are selected worried thinking about our.! Users can save their personalized presentations locally and online into their accounts using this software. Prezi Crack
ReplyDeletei'm able to see which you are an capable at your pitch! i'm launching a internet site quickly, and your inform could be very useful for me.. thanks for all your benefit taking place and wishing you all the triumph for your issue.! Microsoft Office 2010 Cracks
ReplyDeletesmm panel
ReplyDeleteSMM PANEL
iş ilanları
İNSTAGRAM TAKİPÇİ SATIN AL
hirdavatciburada.com
beyazesyateknikservisi.com.tr
SERVİS
tiktok jeton hilesi
So, admirable blog content its too good.
ReplyDeleteScreenhunter Crack
Expressvpn Crack
Bandicut Crack
3D Coat Crack
Roguekiller Crack
Thank you for giving this wonderful information. Which iPhone or iPad auto clicker is the best? There is a piece on this subject here Best Auto Clicker for iPhone and iPad. For more information, visit the article if you're interested.
ReplyDelete