{"id":329,"date":"2021-12-02T22:12:00","date_gmt":"2021-12-03T03:12:00","guid":{"rendered":""},"modified":"2024-07-05T18:40:22","modified_gmt":"2024-07-05T22:40:22","slug":"kvm-lab-inside-virtualbox-vm-nested","status":"publish","type":"post","link":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested","title":{"rendered":"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant"},"content":{"rendered":"<h1>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"523\" height=\"339\" alt=\"This image has an empty alt attribute; its file name is image-11.png\" src=\"https:\/\/brokedba.files.wordpress.com\/2021\/10\/image-11.png?w=1024\">Intro<\/p>\n<\/h1>\n<p align=\"justify\"><span style=\"color: rgb(48, 48, 48); font-size: 14px;\">It has been a while since I wanted to blog about nested virtualization, but the good news is I now have a vagrant build to share with you so you can&nbsp; <strong>vagrant it up:)<\/strong>. KVM started to interest me as soon as I learned that Oracle allowed for hard partitioning on KVM boxes if installed on top of Oracle Linux. I instantly thought of the benefit for customers that were struggling with Oracle licensing under Vmware farms. Anyway, today Oracle Cloud and engineered systems are relying hugely on KVM and the old OVM is slowly being replaced by OLVM manager which orchestrate vm administration on top of KVM hosts.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/p>\n<h1>Nested virtualization<\/h1>\n<h2>KVM inside VirtualBox <\/h2>\n<p><span style=\"color: rgb(48, 48, 48); font-size: 14px;\"><br \/>\nSo how to make a Hypervisor (KVM) aware of the Host hardware when it&#8217;s itself installed under another Hypervisor layer (virtualbox)? well this is today possible thanks to nested virtualization feature available in the latest version of Virtualbox&nbsp; and it is very simple to enable even after your vm has been provisioned. More on how to enable it in my <a href=\"https:\/\/www.brokedba.blogspot.com\/2020\/04\/how-to-enable-nested-virtualization-in.html\" target=\"_blank\" rel=\"noopener\">previous blog<\/a>.<br \/>\n<strong>Please note<\/strong> that it\u2019s actually <strong>qemu-kvm<\/strong> that\u2019s available using nested virtualization here , which is a type 2 hypervisor (<strong>virtual hardware emulation<\/strong>).&nbsp;&nbsp; <\/span><\/p>\n<p><font size=\"4\"><\/font><\/p>\n<h2>How to get started <\/h2>\n<p><span style=\"color: rgb(48, 48, 48); font-size: 14px;\"><br \/>\nCan\u2019t afford a dedicated host for KVM? I got you covered<strong>,<\/strong> you can start exploring KVM right now on your laptop with my <strong>vagrant build<\/strong>. Sharing is good, but live labs are even better.<br \/>\n<strong><br \/>\nGitHub repo<\/strong> : <a title=\"https:\/\/github.com\/brokedba\/KVM-on-virtualbox\" href=\"https:\/\/github.com\/brokedba\/KVM-on-virtualbox&nbsp;\">https:\/\/github.com\/brokedba\/KVM-on-virtualbox<span style=\"color: rgb(48, 48, 48); font-size: 14px;\">&nbsp;<\/span><\/a><\/span><\/p>\n<ul style=\"margin: 32px auto; padding: 0px 0px 0px 32px; width: 782px; height: 171px; color: rgb(48, 48, 48); font-size: 14px; max-width: calc(750px); -webkit-font-smoothing: antialiased;\">\n<li style=\"margin: 0px; padding: 0px; box-sizing: inherit; -webkit-font-smoothing: antialiased;\">Clone the repo\n<\/li>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"><font color=\"#ffffff\">C:Usersbrokedba&gt; <code>git clone <a href=\"https:\/\/github.com\/brokedba\/KVM-on-virtualbox.gitC:Usersbrokedba&gt; cd \"><font color=\"#00ff00\">https:\/\/github.com\/brokedba\/KVM-on-virtualbox.git\n<\/font><font color=\"#ffffff\"><font color=\"#ffffff\">C:Usersbrokedba&gt; cd KVM-on-virtualbox<\/font><\/font><font color=\"#ffffff\">\n<\/font><\/a><\/code><\/font><\/font><\/p><\/pre>\n<li style=\"margin: 0px; padding: 0px; box-sizing: inherit; -webkit-font-smoothing: antialiased;\">Start the vm (make sure you have 2Cores and 4GB RAM to spare before the launch) <\/li>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"><font color=\"#ffffff\">C:Usersbrokedba&gt; <code>vagrant up<a href=\"https:\/\/github.com\/brokedba\/KVM-on-virtualbox.git\"><font color=\"#ffffff\">\n<\/font><\/a><\/code><\/font><\/font><\/p><\/pre>\n<\/ul>\n<h1>\nKVM Tools<\/h1>\n<ul style=\"margin: 32px auto; padding: 0px 0px 0px 32px; width: 782px; height: 1798px; color: rgb(48, 48, 48); font-size: 14px; max-width: calc(750px); -webkit-font-smoothing: antialiased;\">\n<p><strong><font size=\"4\">Virsh<\/font><\/strong><\/p>\n<p>Is a command line interface that can be used to create, destroy, stop start and edit virtual machines and configure the virtual environment (such as virtual networks etc). &gt;&gt; see <a href=\"https:\/\/computingforgeeks.com\/virsh-commands-cheatsheet\/\" target=\"_blank\" rel=\"noopener\">Cheatsheet<\/a>&nbsp;<\/p>\n<p><strong><font size=\"4\">Virt-install<\/font><\/strong><\/p>\n<p>Although this tool is a reference in terms of vm creation, it has never succeeded to create qemu vms on my vm. Which is why I won\u2019t talk about a it today.<\/p>\n<p><strong><font size=\"4\">KCLI<\/font><\/strong><\/p>\n<p>This is a wonderful CLI tool that\u2019s created by <a href=\"https:\/\/github.com\/karmab\" target=\"_blank\" rel=\"noopener\">karmab<\/a> and interacts with libvirt API to manage KVM environments from configuring to managing the guest vms. It even interacts with other virtualization providers (KubeVirt, oVirt, OpenStack, VMware vSphere, GCP and AWS) and easily deploy and customize VMs from cloud images. See details in the official <a href=\"https:\/\/github.com\/karmab\/kcli\" target=\"_blank\" rel=\"noopener\">Github repository<\/a>.<br \/>\nI will do some examples using KCLI in this post since It is already <strong>shipped with my nested vagrant build<\/strong>.<\/p>\n<p><strong><font size=\"4\">Virt-manager \/Ovirt\/OLVM<\/font><\/strong><\/p>\n<p>All these 3 are a set of GUI based management tools to manage VM Guests.<\/p>\n<p><strong><font size=\"4\">Virt-viewer<\/font><\/strong><\/p>\n<p>Is a Utility to display graphical console for a virtual machine<\/p>\n<h4>\n<\/h4>\n<h1>Examples<\/h1>\n<p><strong>Virsh : <\/strong>Create and build a default storage pool (already done in my nested vagrant vm) and describe the host<\/p>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"># mkdir \/u01\/guest_images\n# virsh pool-define-as default dir - - - - \"<font color=\"#00ff00\">\/u01\/guest_images<\/font>\"\n# virsh pool-build default\n<\/font><\/p><p><font color=\"#ffffff\"># virsh pool-list --all\n Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Autostart\n------------ --------- -------------\n&nbsp;<font color=\"#00ff00\">default<\/font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=\"#00ff00\">active<\/font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yes\n<font color=\"#ffffff\">\n[root@localhost ~]# virsh pool-info <font color=\"#00ff00\">default<\/font>\n Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color=\"#00ff00\">default<\/font>\n UUID:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2b273ed0-e666-4c52-a383-c47a03727fc1\n State:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; running\n Persistent:&nbsp;&nbsp;&nbsp;&nbsp; yes\n Autostart:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yes\n Capacity:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 49.97 GiB\n Allocation:&nbsp;&nbsp;&nbsp;&nbsp; 32.21 MiB\n Available:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 49.94 GiB<\/font><\/font><\/p><p><font color=\"#ffffff\">[root@localhost ~]# virsh <font color=\"#00ff00\">nodeinfo <\/font>       ---&gt; the host is actually my virtualbox vm \nCPU model:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x86_64\nCPU(s):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2\nCPU frequency:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2592 MHz\nCPU socket(s):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1\nCore(s) per socket:&nbsp; 2\nThread(s) per core:&nbsp; 1\nNUMA cell(s):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1\nMemory size:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3761104 KiB\n\n---- vm \n<font color=\"#ffffff\"># virsh list <font color=\"#00ff00\">--all<\/font>&nbsp; (list all guest vms including shutdown vms)\n# virsh dominfo <font color=\"#00ff00\">db2<\/font>&nbsp; (describe a  \u201cdb2\u201d vm)\n# virsh edit <font color=\"#00ff00\">db2<\/font>&nbsp;&nbsp; (edit \u201cdb2\u201d vm attributes)&nbsp; \n<\/font><\/font><\/p><p><font color=\"#ffffff\">--- Reboot Shutdown start VMs<font color=\"#ffffff\"> \n# virsh start <font color=\"#00ff00\">my-vm<\/font>&nbsp;&nbsp;&nbsp; \n# virsh reboot <font color=\"#00ff00\">my-vm<\/font>&nbsp;&nbsp; \n# virsh shutdown <font color=\"#00ff00\">my-vm<\/font> <\/font><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><code><font color=\"#ffffff\">\n<\/font><\/code><\/font><\/font><\/font><\/font><\/p><\/pre>\n<h2 id=\"1\">CREATE A VM INSIDE A NESTED VIRTUAL MACHINE<\/h2>\n<ul>\n<li>\n<p>I will be using KCLI in my example where I will<\/p>\n<ul>\n<li>\n<p>Create a default storage pool and configure it (already done in my vagrant vm)<\/p>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><font color=\"#ffffff\"># kcli create pool -p <font color=\"#00ff00\">\/u01\/guest_images<\/font> default\n# kcli list pool\n+--------------+-------------------------+\n| Pool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |\n+--------------+-------------------------+\n| default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | \/u01\/guest_images&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |\n+--------------+-------------------------+<\/font><\/pre>\n<p>Since <strong>kcli<\/strong> uses docker we will need to update the kcli alias according to the pool path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/p>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><font color=\"#ffffff\"># alias kcli='docker run --net host -it --rm --security-opt label=disable -v \/root\/.kcli:\/root\/.kcli -v \/root\/.ssh:\/root\/.ssh -v <font color=\"#00ff00\">\/u01\/guest_images:\/u01\/guest_images<\/font> -v \/var\/run\/libvirt:\/var\/run\/libvirt -v $PWD:\/workdir quay.io\/karmab\/kcli'<font color=\"#ffffff\"><font color=\"#ffffff\"><code><font color=\"#ffffff\">\n<\/font><\/code><\/font><\/font><\/font><\/pre>\n<\/li>\n<li>\n<p>Create a default network (already done in my vagrant vm)<\/p>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"><font color=\"#ffffff\"># kcli create network&nbsp; -c <font color=\"#00ff00\">192.168.122.0\/24<\/font> default\n# kcli list network\n+---------+--------+------------------+------+---------+------+\n| Network |&nbsp; Type&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cidr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Dhcp |&nbsp; Domain | Mode |\n+---------+--------+------------------+------+---------+------+\n| default | routed | <font color=\"#00ff00\">192.168.122.0\/24<\/font> | True | default | nat&nbsp; |\n+---------+--------+------------------+------+---------+------+<code><font color=\"#ffffff\">\n<\/font><\/code><\/font><\/font><\/p><\/pre>\n<ul>\n<p><strong><br \/>\n<\/strong><\/p>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>KCLI<\/strong> makes it very easy to download an image from the cloud repository as shown in below example<\/p>\n<ul>\n<li>\n<p>Download ubuntu 1803 from ubuntu cloud image repository<\/p>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"># kcli download image ubuntu1804&nbsp; -p default<\/font>\n<font color=\"#b1c5fe\">Using url<font color=\"#b1c5fe\"> <\/font><a href=\"https:\/\/cloud-images.ubuntu.com\/bionic\/current\/bionic-server-cloudimg-amd64.img\"><font color=\"#b1c5fe\">https:\/\/cloud-images.ubuntu.com\/bionic\/current\/bionic-server-cloudimg-amd64.img<\/font><\/a><font color=\"#b1c5fe\">...<\/font>\n<font color=\"#ffffff\"><font color=\"#ffffff\">\n<font color=\"#ffffff\"># kcli list image\n+----------------------------------------------------+\n| Images&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |\n+----------------------------------------------------+\n| \/u01\/guest_images\/<font color=\"#00ff00\">bionic-server-cloudimg-amd64.img<\/font> |\n+----------------------------------------------------+<\/font><\/font><\/font><\/font><\/font><\/font><\/p><\/pre>\n<\/li>\n<li>You can also use Curl if you have a specific image you want to download<\/li>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"># curl \u2013sL image-URL \u2013o \/Pool\/Path\/image.img<\/font>\n<\/font><\/font><\/p><\/pre>\n<\/ul>\n<\/li>\n<\/ul>\n<li>\n<h2>Create a vm<br \/>\n<\/h2>\n<\/li>\n<p>Once the image is in the storage pool you only have to run the <strong><em><font color=\"#0000ff\">kcli create<\/font><\/em><\/strong> command as below ( <strong><a href=\"https:\/\/kcli.readthedocs.io\/en\/latest\/\" target=\"_blank\" rel=\"noopener\">see syntax<\/a><\/strong>)<\/p>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"># kcli create vm <font color=\"#00ff00\">ubuntuvm<\/font> -i ubuntu1804 -P network=default -P virttype=qemu \u2013P  memory=512 -P numcpus=1\n<\/font>\n<font color=\"#b1c5fe\">Deploying vm ubuntu_vm from profile ubuntu1804...\n<\/font><font color=\"#00ff00\">ubuntu_vm created on local<\/font><\/font><\/font><\/p><p><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#b1c5fe\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"># kcli list vm\n+----------+-------+--------------------------------------+-----+------------+\n|&nbsp;&nbsp;&nbsp; Name&nbsp; | Status|         Ips&nbsp; |           Source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |Plan | Profile    |\n+----------+-------+--------------+-----------------------+-----+------------+\n| ubuntuvm |&nbsp; <font color=\"#00ff00\">up<\/font>&nbsp;&nbsp; | 192.168.122.5| bionic-server*md64.img|kvirt| ubuntu1804 |\n+----------+-------+--------------+-----------------------+-----+------------+\n\nSyntax: \nusage : kcli <font color=\"#00ff00\">create<\/font> vm <font color=\"#b1c5fe\">[-h] [-p PROFILE] [--console] [-c COUNT] [-i IMAGE]\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [--profilefile PROFILEFILE] [-P PARAM]\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [--paramfile PARAMFILE] [-s] [-w]\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [VMNAME]<\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/p><\/pre>\n<li>\n<h2>Login to the vm <\/h2>\n<ul>\n<li>The IP address will take some time before it\u2019s assigned but when it\u2019s done, just log in using ssh. kcli creates the vm based on the default ssh key (~\/id_rsa). <\/li>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"># kcli <font color=\"#00ff00\">ssh<\/font> ubuntuvm\n<font color=\"#ffffff\">Welcome to Ubuntu 18.04.6 LTS (GNU\/Linux 4.15.0-163-generic x86_64)\n<font color=\"#00ff00\"><a><font color=\"#00ff00\">ubuntu@ubuntuvm:~$<\/font><\/a> <font color=\"#ffffff\">uname -a<\/font>\n<font color=\"#ffffff\">Linux ubuntuvm 4.15.0-163-generic #171-Ubuntu SMP Fri Nov 5 11:55:11 UTC 2021 x86_64 x86_64 x86_64 GNU\/Linux<\/font><\/font><\/font><\/font>\n<\/font><\/font><\/p><\/pre>\n<li> You can also log in using root password, but for this you\u2019ll have to set it during the vm creation via Cloud-init<\/li>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"># kcli create vm <font color=\"#00ff00\">ubuntuvm<\/font> -i ubuntu1804 -P network=default -P virttype=qemu \n-P cmds=['echo root:unix1234 | chpasswd']<font color=\"#ffffff\">\n<font color=\"#00ff00\"><\/font><\/font><\/font><\/font><\/font><\/p><p><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#00ff00\"><font color=\"#ffffff\">#<\/font> <font color=\"#ffffff\">virsh <\/font>console <font color=\"#ffffff\">ubuntuvm\nConnected to domain ubuntuvm\nubuntuvm login: root\nPassword:<\/font><\/font><\/font><\/font><\/font><\/font><\/p><p><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#00ff00\"><font color=\"#ffffff\"><font color=\"#ffffff\">Welcome to Ubuntu 18.04.6 LTS (GNU\/Linux 4.15.0-163-generic x86_64)\n<font color=\"#00ff00\"><a><font color=\"#00ff00\">root@ubuntuvm:~#<font color=\"#ffffff\"><font color=\"#ffffff\">\n<\/font><\/font><\/font><\/a><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/p><\/pre>\n<\/ul>\n<h2>\n<\/h2>\n<\/li>\n<\/ul>\n<blockquote>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<\/blockquote>\n<ul>\n<li>\n<h2 align=\"left\">Download an Image<\/h2>\n<\/li>\n<\/ul>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>&nbsp;<font style=\"font-weight: normal;\"> <\/font><\/h2>\n<p>&nbsp;<\/p>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2><strong><br \/>\n<\/strong><\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>\n<\/h2>\n<h2>KCLI&nbsp; tips<\/h2>\n<ul style=\"margin: 18px auto; padding: 0px 0px 0px 32px; width: 782px; height: 532px; color: rgb(48, 48, 48); font-size: 14px; max-width: calc(750px); -webkit-font-smoothing: antialiased;\">\n<ul>\n<li>\n<p>kcli configuration is done in <strong>~\/.kcli<\/strong> directory, that you need to manually create (done in my vagrant build already). It will contain:<\/p>\n<ul>\n<li><strong>config.yml<\/strong> generic configuration where you declare clients.\n<li><strong>profiles.yml <\/strong>stores your profiles where you combine things like memory, numcpus and all supported parameters into named profiles to create vms from<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><font face=\"Arial\">For example, you could create the same vm described earlier by storing the vm specs in the <strong>profiles.yml<\/strong><\/font><\/pre>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#00ff00\"><font color=\"#ffffff\"><font color=\"#ffffff\"> --- excerpt from ~\/.kcli\/<font color=\"#00ff00\">profiles.yml<\/font>\nlocal_ubuntu1804:\n&nbsp; image: bionic-server-cloudimg-amd64.img\n&nbsp; numcpus: 1\n&nbsp; memory: 512\n&nbsp; nets:\n&nbsp; - default\n&nbsp; pool: default\n&nbsp; cmds:\n&nbsp; - echo root:unix1234 | chpasswd<font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#00ff00\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#00ff00\"><font color=\"#00ff00\"><font color=\"#ffffff\"><font color=\"#ffffff\">\n<\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/p><\/pre>\n<pre><font face=\"Arial\">Then call the named profile using the \u2013i argument during the creation of the vm   \n<\/font><\/pre>\n<pre class=\"wp-block-preformatted\" style=\"background: rgb(45, 53, 97); padding: 0.5em 1em; border-radius: 0px; color: rgb(233, 229, 221); overflow: auto; font-family: monospace, monospace; white-space: pre-wrap; box-sizing: inherit;\"><p><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#00ff00\"><font color=\"#ffffff\"><font color=\"#ffffff\">  <font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"># kcli create vm <font color=\"#00ff00\">ubuntuvm<\/font> \u2013i local_ubuntu1804<\/font><\/font><\/font><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#00ff00\"><font color=\"#ffffff\"><font color=\"#ffffff\"><font color=\"#00ff00\"><font color=\"#00ff00\"><font color=\"#ffffff\"><font color=\"#ffffff\">\n<\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/font><\/p><\/pre>\n<pre><font size=\"3\"><em>&nbsp;\n<\/em><\/font><\/pre>\n<\/ul>\n<h2>Conclusion <\/h2>\n<p><span style=\"color: rgb(48, 48, 48); font-size: 14px;\"><\/p>\n<li> I\u2019m very glad to finally share this with you, especially since it includes my vagrant build that you can try yourself &amp; play with<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp; KVM from VirtualBox.<\/li>\n<li>Keep in mind that the more resource you allocate to your Host\/root vm the more stuff you can spin<\/li>\n<li>My vagrant default build includes 2 Vcpu and 4GB of RAM, but you can tweak the values in the <a href=\"https:\/\/github.com\/brokedba\/KVM-on-virtualbox\/blob\/main\/Vagrantfile\" target=\"_blank\" rel=\"noopener\">Vagrantfile<\/a><\/li>\n<li>Please give <a href=\"https:\/\/github.com\/karmab\/kcli\" target=\"_blank\" rel=\"noopener\">KCLI<\/a> project a star in Github as its creator has helped me a lot which deserves a huge shout out&nbsp;&nbsp; <\/li>\n<p><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro It has been a while since I wanted to blog about nested virtualization, but the good news is I now have a vagrant build to share with you so you can&nbsp; vagrant it up:). KVM started to interest me as soon as I learned that Oracle allowed for hard partitioning on KVM boxes if &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested\" class=\"more-link\">Read more<span class=\"screen-reader-text\"> &#8220;KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[1],"tags":[54,55],"class_list":["post-329","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-kvm","tag-vagrant"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant - Cloudthrill<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant - Cloudthrill\" \/>\n<meta property=\"og:description\" content=\"Intro It has been a while since I wanted to blog about nested virtualization, but the good news is I now have a vagrant build to share with you so you can&nbsp; vagrant it up:). KVM started to interest me as soon as I learned that Oracle allowed for hard partitioning on KVM boxes if &hellip; Read more &quot;KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested\" \/>\n<meta property=\"og:site_name\" content=\"Cloudthrill\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-03T03:12:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-07-05T22:40:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/brokedba.files.wordpress.com\/2021\/10\/image-11.png?w=1024\" \/>\n<meta name=\"author\" content=\"CloudDude\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@couddude_\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"CloudDude\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested\"},\"author\":{\"name\":\"CloudDude\",\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/#\\\/schema\\\/person\\\/aaac9d7e544fd61849e31ac4230a57f3\"},\"headline\":\"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant\",\"datePublished\":\"2021-12-03T03:12:00+00:00\",\"dateModified\":\"2024-07-05T22:40:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested\"},\"wordCount\":831,\"publisher\":{\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/brokedba.files.wordpress.com\\\/2021\\\/10\\\/image-11.png?w=1024\",\"keywords\":[\"KVM\",\"Vagrant\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested\",\"url\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested\",\"name\":\"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant - Cloudthrill\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/brokedba.files.wordpress.com\\\/2021\\\/10\\\/image-11.png?w=1024\",\"datePublished\":\"2021-12-03T03:12:00+00:00\",\"dateModified\":\"2024-07-05T22:40:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested#primaryimage\",\"url\":\"https:\\\/\\\/brokedba.files.wordpress.com\\\/2021\\\/10\\\/image-11.png?w=1024\",\"contentUrl\":\"https:\\\/\\\/brokedba.files.wordpress.com\\\/2021\\\/10\\\/image-11.png?w=1024\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/kvm-lab-inside-virtualbox-vm-nested#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cloudthrill.ca\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/#website\",\"url\":\"https:\\\/\\\/cloudthrill.ca\\\/\",\"name\":\"cloudthrill.ca\",\"description\":\"CloudThrill is focused on providing Cloud &amp; DevOps consulting services to clients looking to maximize their cloud\\\/on-prem estate.\",\"publisher\":{\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cloudthrill.ca\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/#organization\",\"name\":\"cloudthrill.ca\",\"url\":\"https:\\\/\\\/cloudthrill.ca\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cloudthrill.ca\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/Cloudthrill.png\",\"contentUrl\":\"https:\\\/\\\/cloudthrill.ca\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/Cloudthrill.png\",\"width\":1599,\"height\":588,\"caption\":\"cloudthrill.ca\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/cloudthrill\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/cloudthrill.ca\\\/#\\\/schema\\\/person\\\/aaac9d7e544fd61849e31ac4230a57f3\",\"name\":\"CloudDude\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/02bba403d23c390a42783246ef373bf8a8111b022c06a373d6cb9d3cabe12587?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/02bba403d23c390a42783246ef373bf8a8111b022c06a373d6cb9d3cabe12587?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/02bba403d23c390a42783246ef373bf8a8111b022c06a373d6cb9d3cabe12587?s=96&d=mm&r=g\",\"caption\":\"CloudDude\"},\"sameAs\":[\"http:\\\/\\\/cloudthrill.io\",\"https:\\\/\\\/x.com\\\/couddude_\"],\"url\":\"https:\\\/\\\/cloudthrill.ca\\\/author\\\/clouddude\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant - Cloudthrill","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested","og_locale":"en_US","og_type":"article","og_title":"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant - Cloudthrill","og_description":"Intro It has been a while since I wanted to blog about nested virtualization, but the good news is I now have a vagrant build to share with you so you can&nbsp; vagrant it up:). KVM started to interest me as soon as I learned that Oracle allowed for hard partitioning on KVM boxes if &hellip; Read more \"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant\"","og_url":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested","og_site_name":"Cloudthrill","article_published_time":"2021-12-03T03:12:00+00:00","article_modified_time":"2024-07-05T22:40:22+00:00","og_image":[{"url":"https:\/\/brokedba.files.wordpress.com\/2021\/10\/image-11.png?w=1024","type":"","width":"","height":""}],"author":"CloudDude","twitter_card":"summary_large_image","twitter_creator":"@couddude_","twitter_misc":{"Written by":"CloudDude","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested#article","isPartOf":{"@id":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested"},"author":{"name":"CloudDude","@id":"https:\/\/cloudthrill.ca\/#\/schema\/person\/aaac9d7e544fd61849e31ac4230a57f3"},"headline":"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant","datePublished":"2021-12-03T03:12:00+00:00","dateModified":"2024-07-05T22:40:22+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested"},"wordCount":831,"publisher":{"@id":"https:\/\/cloudthrill.ca\/#organization"},"image":{"@id":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested#primaryimage"},"thumbnailUrl":"https:\/\/brokedba.files.wordpress.com\/2021\/10\/image-11.png?w=1024","keywords":["KVM","Vagrant"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested","url":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested","name":"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant - Cloudthrill","isPartOf":{"@id":"https:\/\/cloudthrill.ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested#primaryimage"},"image":{"@id":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested#primaryimage"},"thumbnailUrl":"https:\/\/brokedba.files.wordpress.com\/2021\/10\/image-11.png?w=1024","datePublished":"2021-12-03T03:12:00+00:00","dateModified":"2024-07-05T22:40:22+00:00","breadcrumb":{"@id":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested#primaryimage","url":"https:\/\/brokedba.files.wordpress.com\/2021\/10\/image-11.png?w=1024","contentUrl":"https:\/\/brokedba.files.wordpress.com\/2021\/10\/image-11.png?w=1024"},{"@type":"BreadcrumbList","@id":"https:\/\/cloudthrill.ca\/kvm-lab-inside-virtualbox-vm-nested#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudthrill.ca\/"},{"@type":"ListItem","position":2,"name":"KVM lab inside a VirtualBox vm (Nested virtualization) using vagrant"}]},{"@type":"WebSite","@id":"https:\/\/cloudthrill.ca\/#website","url":"https:\/\/cloudthrill.ca\/","name":"cloudthrill.ca","description":"CloudThrill is focused on providing Cloud &amp; DevOps consulting services to clients looking to maximize their cloud\/on-prem estate.","publisher":{"@id":"https:\/\/cloudthrill.ca\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudthrill.ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudthrill.ca\/#organization","name":"cloudthrill.ca","url":"https:\/\/cloudthrill.ca\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudthrill.ca\/#\/schema\/logo\/image\/","url":"https:\/\/cloudthrill.ca\/wp-content\/uploads\/2024\/07\/Cloudthrill.png","contentUrl":"https:\/\/cloudthrill.ca\/wp-content\/uploads\/2024\/07\/Cloudthrill.png","width":1599,"height":588,"caption":"cloudthrill.ca"},"image":{"@id":"https:\/\/cloudthrill.ca\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cloudthrill"]},{"@type":"Person","@id":"https:\/\/cloudthrill.ca\/#\/schema\/person\/aaac9d7e544fd61849e31ac4230a57f3","name":"CloudDude","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/02bba403d23c390a42783246ef373bf8a8111b022c06a373d6cb9d3cabe12587?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/02bba403d23c390a42783246ef373bf8a8111b022c06a373d6cb9d3cabe12587?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/02bba403d23c390a42783246ef373bf8a8111b022c06a373d6cb9d3cabe12587?s=96&d=mm&r=g","caption":"CloudDude"},"sameAs":["http:\/\/cloudthrill.io","https:\/\/x.com\/couddude_"],"url":"https:\/\/cloudthrill.ca\/author\/clouddude"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/cloudthrill.ca\/wp-json\/wp\/v2\/posts\/329","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudthrill.ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudthrill.ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudthrill.ca\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudthrill.ca\/wp-json\/wp\/v2\/comments?post=329"}],"version-history":[{"count":1,"href":"https:\/\/cloudthrill.ca\/wp-json\/wp\/v2\/posts\/329\/revisions"}],"predecessor-version":[{"id":549,"href":"https:\/\/cloudthrill.ca\/wp-json\/wp\/v2\/posts\/329\/revisions\/549"}],"wp:attachment":[{"href":"https:\/\/cloudthrill.ca\/wp-json\/wp\/v2\/media?parent=329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudthrill.ca\/wp-json\/wp\/v2\/categories?post=329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudthrill.ca\/wp-json\/wp\/v2\/tags?post=329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}