Repository files navigation

puppet-kvm

Puppet module to control libvirt/kvm VMs and to build up a webvirtmgr system to manage the libvirt hypervisors. This module currently only works for CentOS/RedHat and requires hiera, the Puppet Labs Firewall module and their vcsrepo module as well. It is currently pretty crude and should only be used for a test or lab environment. Currently, only bridging of VMs is supported. kvm::virtnet class would have to be extended to allow for natted or other VM networking types. The libvirt hosts and the webvirtmgr host need to have internet connectivity currently for this to work.

######TODO: Use hieragpg for passwords ######TODO: Add validation for most paramaters ######TODO: Add rspec tests ######TODO: Make it work with Debian at the very least

Overview

This module configures virtual networks, VM storage pools, VM storage volumes and VMs on KVM/libvirt hypervisor hosts and configures webvirtmgr on a separate system to manage the hypervisors and VMs.

Webvirtmgr can be found at https://github.com/retspen/webvirtmgr

Class: kvm

Main class that calls the various subclasses based on the 'kvmservertype' parameter.

Parameters

  • 'kvmservertype' (valid values are 'kvm' and 'kvmwebmgr')
  • 'virtpool_hash' (hiera hash used for setting up libvirt storage pools)
  • 'virtvol_hash' (hiera hash used for setting up libvirt volumes)
  • 'virts_hash' (hiera hash used for setting up libvirt VMs)
  • 'hypervisorpass' (password used to connect to hypervisors over TCP, required to allow webvirtmgr connectivity to hosts and VMs)

Class: kvm::fw

Configures iptables firewall to allow the various connections required for libvirt and webvirtmgr. Requires the Puppet Labs Firewall module to work.

Class: kvm::kvmwebmgr

Installs depencies for webvirtmgr, installs webvirtmgr and configures everything to make it work. As written, it requires internet connectivity to pull down webvirtmgr.

Definition: kvm::virtnet

Sets up virtual network to be used by VMs on a host

Parameters

  • 'virtnet_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_forwardmode' (default is 'bridge')
  • 'virtbridge_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_macaddress' (required, comes from virtnet_hash hiera hash)

Definition: kvm::virtpool

Sets up virtual storage pools to be used by VMs and for ISO storage on a host

Parameters

  • 'virtpool'
  • 'virtpool_target' (required, default is '/var/lib/libvirt/images')
  • 'virtpool_type' (required, default is 'dir', can be any storage pool type allowed by libvirt such as 'iso')
  • 'virtpool_format' (required, default is 'raw', can be any storage pool format allowed by libvirt)

Definition: kvm::virts

Sets up virtual machines on a libvirt/kvm host

Parameters

  • 'vmname' (required, comes from virts_hash hiera hash, usually set as short hostname for vm)
  • 'desc' (comes from virts_hash hiera hash, usually set as FQDN for vm)
  • 'pool' (required, default is 'default', can be overridden in virts_hash)
  • 'poolpath' (required, default is '/var/lib/libvirt/images', can be overridden in virts_hash)
  • 'virttype' (required, default is 'kvm', can be overridden in virts_hash)
  • 'virtcpus' (required, default is '1', can be overridden in virts_hash)
  • 'virtmem' (required, default is '1024', can be overridden in virts_hash)
  • 'virtostype' (required, default is 'linux', can be overridden in virts_hash)
  • 'virtosvariant' (required, default is 'virtio26', can be overridden in virts_hash)
  • 'virtprovider' (required, default is 'libvirt', can be overridden in virts_hash)
  • 'virtnic' (required, default is 'virtio', can be overridden in virts_hash)
  • 'virtnet' (required, default is 'br0', can be overridden in virts_hash)
  • 'virtmac' (required, default is '"RANDOM"', can be overridden in virts_hash)
  • 'cdrom_location' (required, default is '/var/lib/libvirt/iso-images/CCELinux-6.4.1.iso', can be overridden in virts_hash)
  • 'pxe' (required, default is 'true', can be overridden in virts_hash)
  • 'autoboot' (required, default is 'true', can be overridden in virts_hash)
  • 'alwayson' (required, default is 'true', can be overridden in virts_hash)

Definition: kvm::virtvol

Sets up virtual volumes for each vm on a libvirt/kvm host

Parameters

  • 'virtvol' (required, comes from virtvol_hash hiera hash, usually set as short hostname for vm and .img - hostname1.img)
  • 'virtpool' (required, default is 'default', can be overridden in virtvol_hash) $volcapacity (required, default is '60G', can be overridden in virtvol_hash) $volformat (required, default is 'qcow2', can be overridden in virtvol_hash)

Sample hiera yaml for VM host

classes:
- kvm
kvm::servertype: 'kvm'
kvm::virtnet::virtnet_name: 'br0'
kvm::virtnet::virtnet_forwardmode: 'bridge'
kvm::virtnet::virtbridge_name: 'br0'
kvm::virtnet::virtnet_macaddress: '52:54:00:a1:a1:a1'
kvm::virtpool_hash:
default:
virtpool_target: '/var/lib/libvirt/images'
iso-images:
virtpool_target: '/var/lib/libvirt/iso-images'
virtpool_format: 'iso'
kvm::virtvol_hash:
vm1.img:
volcapacity: '60G'
volformat: 'qcow2'
vm2.img:
volcapacity: '60G'
volformat: 'qcow2'
vm3.img:
volcapacity: '60G'
volformat: 'qcow2'
kvm::virts_hash:
vm1:
desc: 'vm1.libvirttestlab.org'
virtmac: '52:54:00:a2:a2:a2'
vm2:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a3:a3:a3'
vm3:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a4:a4:a4'

Sample hiera yaml for webvirtmgr server

classes:
- kvm
kvm::servertype: 'kvmwebmgr'

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

puppet-kvm

Puppet module to control libvirt/kvm VMs and to build up a webvirtmgr system to manage the libvirt hypervisors. This module currently only works for CentOS/RedHat and requires hiera, the Puppet Labs Firewall module and their vcsrepo module as well. It is currently pretty crude and should only be used for a test or lab environment. Currently, only bridging of VMs is supported. kvm::virtnet class would have to be extended to allow for natted or other VM networking types. The libvirt hosts and the webvirtmgr host need to have internet connectivity currently for this to work.

######TODO: Use hieragpg for passwords ######TODO: Add validation for most paramaters ######TODO: Add rspec tests ######TODO: Make it work with Debian at the very least

Overview

This module configures virtual networks, VM storage pools, VM storage volumes and VMs on KVM/libvirt hypervisor hosts and configures webvirtmgr on a separate system to manage the hypervisors and VMs.

Webvirtmgr can be found at https://github.com/retspen/webvirtmgr

Class: kvm

Main class that calls the various subclasses based on the 'kvmservertype' parameter.

Parameters

  • 'kvmservertype' (valid values are 'kvm' and 'kvmwebmgr')
  • 'virtpool_hash' (hiera hash used for setting up libvirt storage pools)
  • 'virtvol_hash' (hiera hash used for setting up libvirt volumes)
  • 'virts_hash' (hiera hash used for setting up libvirt VMs)
  • 'hypervisorpass' (password used to connect to hypervisors over TCP, required to allow webvirtmgr connectivity to hosts and VMs)

Class: kvm::fw

Configures iptables firewall to allow the various connections required for libvirt and webvirtmgr. Requires the Puppet Labs Firewall module to work.

Class: kvm::kvmwebmgr

Installs depencies for webvirtmgr, installs webvirtmgr and configures everything to make it work. As written, it requires internet connectivity to pull down webvirtmgr.

Definition: kvm::virtnet

Sets up virtual network to be used by VMs on a host

Parameters

  • 'virtnet_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_forwardmode' (default is 'bridge')
  • 'virtbridge_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_macaddress' (required, comes from virtnet_hash hiera hash)

Definition: kvm::virtpool

Sets up virtual storage pools to be used by VMs and for ISO storage on a host

Parameters

  • 'virtpool'
  • 'virtpool_target' (required, default is '/var/lib/libvirt/images')
  • 'virtpool_type' (required, default is 'dir', can be any storage pool type allowed by libvirt such as 'iso')
  • 'virtpool_format' (required, default is 'raw', can be any storage pool format allowed by libvirt)

Definition: kvm::virts

Sets up virtual machines on a libvirt/kvm host

Parameters

  • 'vmname' (required, comes from virts_hash hiera hash, usually set as short hostname for vm)
  • 'desc' (comes from virts_hash hiera hash, usually set as FQDN for vm)
  • 'pool' (required, default is 'default', can be overridden in virts_hash)
  • 'poolpath' (required, default is '/var/lib/libvirt/images', can be overridden in virts_hash)
  • 'virttype' (required, default is 'kvm', can be overridden in virts_hash)
  • 'virtcpus' (required, default is '1', can be overridden in virts_hash)
  • 'virtmem' (required, default is '1024', can be overridden in virts_hash)
  • 'virtostype' (required, default is 'linux', can be overridden in virts_hash)
  • 'virtosvariant' (required, default is 'virtio26', can be overridden in virts_hash)
  • 'virtprovider' (required, default is 'libvirt', can be overridden in virts_hash)
  • 'virtnic' (required, default is 'virtio', can be overridden in virts_hash)
  • 'virtnet' (required, default is 'br0', can be overridden in virts_hash)
  • 'virtmac' (required, default is '"RANDOM"', can be overridden in virts_hash)
  • 'cdrom_location' (required, default is '/var/lib/libvirt/iso-images/CCELinux-6.4.1.iso', can be overridden in virts_hash)
  • 'pxe' (required, default is 'true', can be overridden in virts_hash)
  • 'autoboot' (required, default is 'true', can be overridden in virts_hash)
  • 'alwayson' (required, default is 'true', can be overridden in virts_hash)

Definition: kvm::virtvol

Sets up virtual volumes for each vm on a libvirt/kvm host

Parameters

  • 'virtvol' (required, comes from virtvol_hash hiera hash, usually set as short hostname for vm and .img - hostname1.img)
  • 'virtpool' (required, default is 'default', can be overridden in virtvol_hash) $volcapacity (required, default is '60G', can be overridden in virtvol_hash) $volformat (required, default is 'qcow2', can be overridden in virtvol_hash)

Sample hiera yaml for VM host

classes:
- kvm
kvm::servertype: 'kvm'
kvm::virtnet::virtnet_name: 'br0'
kvm::virtnet::virtnet_forwardmode: 'bridge'
kvm::virtnet::virtbridge_name: 'br0'
kvm::virtnet::virtnet_macaddress: '52:54:00:a1:a1:a1'
kvm::virtpool_hash:
default:
virtpool_target: '/var/lib/libvirt/images'
iso-images:
virtpool_target: '/var/lib/libvirt/iso-images'
virtpool_format: 'iso'
kvm::virtvol_hash:
vm1.img:
volcapacity: '60G'
volformat: 'qcow2'
vm2.img:
volcapacity: '60G'
volformat: 'qcow2'
vm3.img:
volcapacity: '60G'
volformat: 'qcow2'
kvm::virts_hash:
vm1:
desc: 'vm1.libvirttestlab.org'
virtmac: '52:54:00:a2:a2:a2'
vm2:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a3:a3:a3'
vm3:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a4:a4:a4'

Sample hiera yaml for webvirtmgr server

classes:
- kvm
kvm::servertype: 'kvmwebmgr'

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

puppet-kvm

Puppet module to control libvirt/kvm VMs and to build up a webvirtmgr system to manage the libvirt hypervisors. This module currently only works for CentOS/RedHat and requires hiera, the Puppet Labs Firewall module and their vcsrepo module as well. It is currently pretty crude and should only be used for a test or lab environment. Currently, only bridging of VMs is supported. kvm::virtnet class would have to be extended to allow for natted or other VM networking types. The libvirt hosts and the webvirtmgr host need to have internet connectivity currently for this to work.

######TODO: Use hieragpg for passwords ######TODO: Add validation for most paramaters ######TODO: Add rspec tests ######TODO: Make it work with Debian at the very least

Overview

This module configures virtual networks, VM storage pools, VM storage volumes and VMs on KVM/libvirt hypervisor hosts and configures webvirtmgr on a separate system to manage the hypervisors and VMs.

Webvirtmgr can be found at https://github.com/retspen/webvirtmgr

Class: kvm

Main class that calls the various subclasses based on the 'kvmservertype' parameter.

Parameters

  • 'kvmservertype' (valid values are 'kvm' and 'kvmwebmgr')
  • 'virtpool_hash' (hiera hash used for setting up libvirt storage pools)
  • 'virtvol_hash' (hiera hash used for setting up libvirt volumes)
  • 'virts_hash' (hiera hash used for setting up libvirt VMs)
  • 'hypervisorpass' (password used to connect to hypervisors over TCP, required to allow webvirtmgr connectivity to hosts and VMs)

Class: kvm::fw

Configures iptables firewall to allow the various connections required for libvirt and webvirtmgr. Requires the Puppet Labs Firewall module to work.

Class: kvm::kvmwebmgr

Installs depencies for webvirtmgr, installs webvirtmgr and configures everything to make it work. As written, it requires internet connectivity to pull down webvirtmgr.

Definition: kvm::virtnet

Sets up virtual network to be used by VMs on a host

Parameters

  • 'virtnet_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_forwardmode' (default is 'bridge')
  • 'virtbridge_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_macaddress' (required, comes from virtnet_hash hiera hash)

Definition: kvm::virtpool

Sets up virtual storage pools to be used by VMs and for ISO storage on a host

Parameters

  • 'virtpool'
  • 'virtpool_target' (required, default is '/var/lib/libvirt/images')
  • 'virtpool_type' (required, default is 'dir', can be any storage pool type allowed by libvirt such as 'iso')
  • 'virtpool_format' (required, default is 'raw', can be any storage pool format allowed by libvirt)

Definition: kvm::virts

Sets up virtual machines on a libvirt/kvm host

Parameters

  • 'vmname' (required, comes from virts_hash hiera hash, usually set as short hostname for vm)
  • 'desc' (comes from virts_hash hiera hash, usually set as FQDN for vm)
  • 'pool' (required, default is 'default', can be overridden in virts_hash)
  • 'poolpath' (required, default is '/var/lib/libvirt/images', can be overridden in virts_hash)
  • 'virttype' (required, default is 'kvm', can be overridden in virts_hash)
  • 'virtcpus' (required, default is '1', can be overridden in virts_hash)
  • 'virtmem' (required, default is '1024', can be overridden in virts_hash)
  • 'virtostype' (required, default is 'linux', can be overridden in virts_hash)
  • 'virtosvariant' (required, default is 'virtio26', can be overridden in virts_hash)
  • 'virtprovider' (required, default is 'libvirt', can be overridden in virts_hash)
  • 'virtnic' (required, default is 'virtio', can be overridden in virts_hash)
  • 'virtnet' (required, default is 'br0', can be overridden in virts_hash)
  • 'virtmac' (required, default is '"RANDOM"', can be overridden in virts_hash)
  • 'cdrom_location' (required, default is '/var/lib/libvirt/iso-images/CCELinux-6.4.1.iso', can be overridden in virts_hash)
  • 'pxe' (required, default is 'true', can be overridden in virts_hash)
  • 'autoboot' (required, default is 'true', can be overridden in virts_hash)
  • 'alwayson' (required, default is 'true', can be overridden in virts_hash)

Definition: kvm::virtvol

Sets up virtual volumes for each vm on a libvirt/kvm host

Parameters

  • 'virtvol' (required, comes from virtvol_hash hiera hash, usually set as short hostname for vm and .img - hostname1.img)
  • 'virtpool' (required, default is 'default', can be overridden in virtvol_hash) $volcapacity (required, default is '60G', can be overridden in virtvol_hash) $volformat (required, default is 'qcow2', can be overridden in virtvol_hash)

Sample hiera yaml for VM host

classes:
- kvm
kvm::servertype: 'kvm'
kvm::virtnet::virtnet_name: 'br0'
kvm::virtnet::virtnet_forwardmode: 'bridge'
kvm::virtnet::virtbridge_name: 'br0'
kvm::virtnet::virtnet_macaddress: '52:54:00:a1:a1:a1'
kvm::virtpool_hash:
default:
virtpool_target: '/var/lib/libvirt/images'
iso-images:
virtpool_target: '/var/lib/libvirt/iso-images'
virtpool_format: 'iso'
kvm::virtvol_hash:
vm1.img:
volcapacity: '60G'
volformat: 'qcow2'
vm2.img:
volcapacity: '60G'
volformat: 'qcow2'
vm3.img:
volcapacity: '60G'
volformat: 'qcow2'
kvm::virts_hash:
vm1:
desc: 'vm1.libvirttestlab.org'
virtmac: '52:54:00:a2:a2:a2'
vm2:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a3:a3:a3'
vm3:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a4:a4:a4'

Sample hiera yaml for webvirtmgr server

classes:
- kvm
kvm::servertype: 'kvmwebmgr'

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

puppet-kvm

Puppet module to control libvirt/kvm VMs and to build up a webvirtmgr system to manage the libvirt hypervisors. This module currently only works for CentOS/RedHat and requires hiera, the Puppet Labs Firewall module and their vcsrepo module as well. It is currently pretty crude and should only be used for a test or lab environment. Currently, only bridging of VMs is supported. kvm::virtnet class would have to be extended to allow for natted or other VM networking types. The libvirt hosts and the webvirtmgr host need to have internet connectivity currently for this to work.

######TODO: Use hieragpg for passwords ######TODO: Add validation for most paramaters ######TODO: Add rspec tests ######TODO: Make it work with Debian at the very least

Overview

This module configures virtual networks, VM storage pools, VM storage volumes and VMs on KVM/libvirt hypervisor hosts and configures webvirtmgr on a separate system to manage the hypervisors and VMs.

Webvirtmgr can be found at https://github.com/retspen/webvirtmgr

Class: kvm

Main class that calls the various subclasses based on the 'kvmservertype' parameter.

Parameters

  • 'kvmservertype' (valid values are 'kvm' and 'kvmwebmgr')
  • 'virtpool_hash' (hiera hash used for setting up libvirt storage pools)
  • 'virtvol_hash' (hiera hash used for setting up libvirt volumes)
  • 'virts_hash' (hiera hash used for setting up libvirt VMs)
  • 'hypervisorpass' (password used to connect to hypervisors over TCP, required to allow webvirtmgr connectivity to hosts and VMs)

Class: kvm::fw

Configures iptables firewall to allow the various connections required for libvirt and webvirtmgr. Requires the Puppet Labs Firewall module to work.

Class: kvm::kvmwebmgr

Installs depencies for webvirtmgr, installs webvirtmgr and configures everything to make it work. As written, it requires internet connectivity to pull down webvirtmgr.

Definition: kvm::virtnet

Sets up virtual network to be used by VMs on a host

Parameters

  • 'virtnet_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_forwardmode' (default is 'bridge')
  • 'virtbridge_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_macaddress' (required, comes from virtnet_hash hiera hash)

Definition: kvm::virtpool

Sets up virtual storage pools to be used by VMs and for ISO storage on a host

Parameters

  • 'virtpool'
  • 'virtpool_target' (required, default is '/var/lib/libvirt/images')
  • 'virtpool_type' (required, default is 'dir', can be any storage pool type allowed by libvirt such as 'iso')
  • 'virtpool_format' (required, default is 'raw', can be any storage pool format allowed by libvirt)

Definition: kvm::virts

Sets up virtual machines on a libvirt/kvm host

Parameters

  • 'vmname' (required, comes from virts_hash hiera hash, usually set as short hostname for vm)
  • 'desc' (comes from virts_hash hiera hash, usually set as FQDN for vm)
  • 'pool' (required, default is 'default', can be overridden in virts_hash)
  • 'poolpath' (required, default is '/var/lib/libvirt/images', can be overridden in virts_hash)
  • 'virttype' (required, default is 'kvm', can be overridden in virts_hash)
  • 'virtcpus' (required, default is '1', can be overridden in virts_hash)
  • 'virtmem' (required, default is '1024', can be overridden in virts_hash)
  • 'virtostype' (required, default is 'linux', can be overridden in virts_hash)
  • 'virtosvariant' (required, default is 'virtio26', can be overridden in virts_hash)
  • 'virtprovider' (required, default is 'libvirt', can be overridden in virts_hash)
  • 'virtnic' (required, default is 'virtio', can be overridden in virts_hash)
  • 'virtnet' (required, default is 'br0', can be overridden in virts_hash)
  • 'virtmac' (required, default is '"RANDOM"', can be overridden in virts_hash)
  • 'cdrom_location' (required, default is '/var/lib/libvirt/iso-images/CCELinux-6.4.1.iso', can be overridden in virts_hash)
  • 'pxe' (required, default is 'true', can be overridden in virts_hash)
  • 'autoboot' (required, default is 'true', can be overridden in virts_hash)
  • 'alwayson' (required, default is 'true', can be overridden in virts_hash)

Definition: kvm::virtvol

Sets up virtual volumes for each vm on a libvirt/kvm host

Parameters

  • 'virtvol' (required, comes from virtvol_hash hiera hash, usually set as short hostname for vm and .img - hostname1.img)
  • 'virtpool' (required, default is 'default', can be overridden in virtvol_hash) $volcapacity (required, default is '60G', can be overridden in virtvol_hash) $volformat (required, default is 'qcow2', can be overridden in virtvol_hash)

Sample hiera yaml for VM host

classes:
- kvm
kvm::servertype: 'kvm'
kvm::virtnet::virtnet_name: 'br0'
kvm::virtnet::virtnet_forwardmode: 'bridge'
kvm::virtnet::virtbridge_name: 'br0'
kvm::virtnet::virtnet_macaddress: '52:54:00:a1:a1:a1'
kvm::virtpool_hash:
default:
virtpool_target: '/var/lib/libvirt/images'
iso-images:
virtpool_target: '/var/lib/libvirt/iso-images'
virtpool_format: 'iso'
kvm::virtvol_hash:
vm1.img:
volcapacity: '60G'
volformat: 'qcow2'
vm2.img:
volcapacity: '60G'
volformat: 'qcow2'
vm3.img:
volcapacity: '60G'
volformat: 'qcow2'
kvm::virts_hash:
vm1:
desc: 'vm1.libvirttestlab.org'
virtmac: '52:54:00:a2:a2:a2'
vm2:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a3:a3:a3'
vm3:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a4:a4:a4'

Sample hiera yaml for webvirtmgr server

classes:
- kvm
kvm::servertype: 'kvmwebmgr'

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

puppet-kvm

Puppet module to control libvirt/kvm VMs and to build up a webvirtmgr system to manage the libvirt hypervisors. This module currently only works for CentOS/RedHat and requires hiera, the Puppet Labs Firewall module and their vcsrepo module as well. It is currently pretty crude and should only be used for a test or lab environment. Currently, only bridging of VMs is supported. kvm::virtnet class would have to be extended to allow for natted or other VM networking types. The libvirt hosts and the webvirtmgr host need to have internet connectivity currently for this to work.

######TODO: Use hieragpg for passwords ######TODO: Add validation for most paramaters ######TODO: Add rspec tests ######TODO: Make it work with Debian at the very least

Overview

This module configures virtual networks, VM storage pools, VM storage volumes and VMs on KVM/libvirt hypervisor hosts and configures webvirtmgr on a separate system to manage the hypervisors and VMs.

Webvirtmgr can be found at https://github.com/retspen/webvirtmgr

Class: kvm

Main class that calls the various subclasses based on the 'kvmservertype' parameter.

Parameters

  • 'kvmservertype' (valid values are 'kvm' and 'kvmwebmgr')
  • 'virtpool_hash' (hiera hash used for setting up libvirt storage pools)
  • 'virtvol_hash' (hiera hash used for setting up libvirt volumes)
  • 'virts_hash' (hiera hash used for setting up libvirt VMs)
  • 'hypervisorpass' (password used to connect to hypervisors over TCP, required to allow webvirtmgr connectivity to hosts and VMs)

Class: kvm::fw

Configures iptables firewall to allow the various connections required for libvirt and webvirtmgr. Requires the Puppet Labs Firewall module to work.

Class: kvm::kvmwebmgr

Installs depencies for webvirtmgr, installs webvirtmgr and configures everything to make it work. As written, it requires internet connectivity to pull down webvirtmgr.

Definition: kvm::virtnet

Sets up virtual network to be used by VMs on a host

Parameters

  • 'virtnet_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_forwardmode' (default is 'bridge')
  • 'virtbridge_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_macaddress' (required, comes from virtnet_hash hiera hash)

Definition: kvm::virtpool

Sets up virtual storage pools to be used by VMs and for ISO storage on a host

Parameters

  • 'virtpool'
  • 'virtpool_target' (required, default is '/var/lib/libvirt/images')
  • 'virtpool_type' (required, default is 'dir', can be any storage pool type allowed by libvirt such as 'iso')
  • 'virtpool_format' (required, default is 'raw', can be any storage pool format allowed by libvirt)

Definition: kvm::virts

Sets up virtual machines on a libvirt/kvm host

Parameters

  • 'vmname' (required, comes from virts_hash hiera hash, usually set as short hostname for vm)
  • 'desc' (comes from virts_hash hiera hash, usually set as FQDN for vm)
  • 'pool' (required, default is 'default', can be overridden in virts_hash)
  • 'poolpath' (required, default is '/var/lib/libvirt/images', can be overridden in virts_hash)
  • 'virttype' (required, default is 'kvm', can be overridden in virts_hash)
  • 'virtcpus' (required, default is '1', can be overridden in virts_hash)
  • 'virtmem' (required, default is '1024', can be overridden in virts_hash)
  • 'virtostype' (required, default is 'linux', can be overridden in virts_hash)
  • 'virtosvariant' (required, default is 'virtio26', can be overridden in virts_hash)
  • 'virtprovider' (required, default is 'libvirt', can be overridden in virts_hash)
  • 'virtnic' (required, default is 'virtio', can be overridden in virts_hash)
  • 'virtnet' (required, default is 'br0', can be overridden in virts_hash)
  • 'virtmac' (required, default is '"RANDOM"', can be overridden in virts_hash)
  • 'cdrom_location' (required, default is '/var/lib/libvirt/iso-images/CCELinux-6.4.1.iso', can be overridden in virts_hash)
  • 'pxe' (required, default is 'true', can be overridden in virts_hash)
  • 'autoboot' (required, default is 'true', can be overridden in virts_hash)
  • 'alwayson' (required, default is 'true', can be overridden in virts_hash)

Definition: kvm::virtvol

Sets up virtual volumes for each vm on a libvirt/kvm host

Parameters

  • 'virtvol' (required, comes from virtvol_hash hiera hash, usually set as short hostname for vm and .img - hostname1.img)
  • 'virtpool' (required, default is 'default', can be overridden in virtvol_hash) $volcapacity (required, default is '60G', can be overridden in virtvol_hash) $volformat (required, default is 'qcow2', can be overridden in virtvol_hash)

Sample hiera yaml for VM host

classes:
- kvm
kvm::servertype: 'kvm'
kvm::virtnet::virtnet_name: 'br0'
kvm::virtnet::virtnet_forwardmode: 'bridge'
kvm::virtnet::virtbridge_name: 'br0'
kvm::virtnet::virtnet_macaddress: '52:54:00:a1:a1:a1'
kvm::virtpool_hash:
default:
virtpool_target: '/var/lib/libvirt/images'
iso-images:
virtpool_target: '/var/lib/libvirt/iso-images'
virtpool_format: 'iso'
kvm::virtvol_hash:
vm1.img:
volcapacity: '60G'
volformat: 'qcow2'
vm2.img:
volcapacity: '60G'
volformat: 'qcow2'
vm3.img:
volcapacity: '60G'
volformat: 'qcow2'
kvm::virts_hash:
vm1:
desc: 'vm1.libvirttestlab.org'
virtmac: '52:54:00:a2:a2:a2'
vm2:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a3:a3:a3'
vm3:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a4:a4:a4'

Sample hiera yaml for webvirtmgr server

classes:
- kvm
kvm::servertype: 'kvmwebmgr'

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

puppet-kvm

Puppet module to control libvirt/kvm VMs and to build up a webvirtmgr system to manage the libvirt hypervisors. This module currently only works for CentOS/RedHat and requires hiera, the Puppet Labs Firewall module and their vcsrepo module as well. It is currently pretty crude and should only be used for a test or lab environment. Currently, only bridging of VMs is supported. kvm::virtnet class would have to be extended to allow for natted or other VM networking types. The libvirt hosts and the webvirtmgr host need to have internet connectivity currently for this to work.

######TODO: Use hieragpg for passwords ######TODO: Add validation for most paramaters ######TODO: Add rspec tests ######TODO: Make it work with Debian at the very least

Overview

This module configures virtual networks, VM storage pools, VM storage volumes and VMs on KVM/libvirt hypervisor hosts and configures webvirtmgr on a separate system to manage the hypervisors and VMs.

Webvirtmgr can be found at https://github.com/retspen/webvirtmgr

Class: kvm

Main class that calls the various subclasses based on the 'kvmservertype' parameter.

Parameters

  • 'kvmservertype' (valid values are 'kvm' and 'kvmwebmgr')
  • 'virtpool_hash' (hiera hash used for setting up libvirt storage pools)
  • 'virtvol_hash' (hiera hash used for setting up libvirt volumes)
  • 'virts_hash' (hiera hash used for setting up libvirt VMs)
  • 'hypervisorpass' (password used to connect to hypervisors over TCP, required to allow webvirtmgr connectivity to hosts and VMs)

Class: kvm::fw

Configures iptables firewall to allow the various connections required for libvirt and webvirtmgr. Requires the Puppet Labs Firewall module to work.

Class: kvm::kvmwebmgr

Installs depencies for webvirtmgr, installs webvirtmgr and configures everything to make it work. As written, it requires internet connectivity to pull down webvirtmgr.

Definition: kvm::virtnet

Sets up virtual network to be used by VMs on a host

Parameters

  • 'virtnet_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_forwardmode' (default is 'bridge')
  • 'virtbridge_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_macaddress' (required, comes from virtnet_hash hiera hash)

Definition: kvm::virtpool

Sets up virtual storage pools to be used by VMs and for ISO storage on a host

Parameters

  • 'virtpool'
  • 'virtpool_target' (required, default is '/var/lib/libvirt/images')
  • 'virtpool_type' (required, default is 'dir', can be any storage pool type allowed by libvirt such as 'iso')
  • 'virtpool_format' (required, default is 'raw', can be any storage pool format allowed by libvirt)

Definition: kvm::virts

Sets up virtual machines on a libvirt/kvm host

Parameters

  • 'vmname' (required, comes from virts_hash hiera hash, usually set as short hostname for vm)
  • 'desc' (comes from virts_hash hiera hash, usually set as FQDN for vm)
  • 'pool' (required, default is 'default', can be overridden in virts_hash)
  • 'poolpath' (required, default is '/var/lib/libvirt/images', can be overridden in virts_hash)
  • 'virttype' (required, default is 'kvm', can be overridden in virts_hash)
  • 'virtcpus' (required, default is '1', can be overridden in virts_hash)
  • 'virtmem' (required, default is '1024', can be overridden in virts_hash)
  • 'virtostype' (required, default is 'linux', can be overridden in virts_hash)
  • 'virtosvariant' (required, default is 'virtio26', can be overridden in virts_hash)
  • 'virtprovider' (required, default is 'libvirt', can be overridden in virts_hash)
  • 'virtnic' (required, default is 'virtio', can be overridden in virts_hash)
  • 'virtnet' (required, default is 'br0', can be overridden in virts_hash)
  • 'virtmac' (required, default is '"RANDOM"', can be overridden in virts_hash)
  • 'cdrom_location' (required, default is '/var/lib/libvirt/iso-images/CCELinux-6.4.1.iso', can be overridden in virts_hash)
  • 'pxe' (required, default is 'true', can be overridden in virts_hash)
  • 'autoboot' (required, default is 'true', can be overridden in virts_hash)
  • 'alwayson' (required, default is 'true', can be overridden in virts_hash)

Definition: kvm::virtvol

Sets up virtual volumes for each vm on a libvirt/kvm host

Parameters

  • 'virtvol' (required, comes from virtvol_hash hiera hash, usually set as short hostname for vm and .img - hostname1.img)
  • 'virtpool' (required, default is 'default', can be overridden in virtvol_hash) $volcapacity (required, default is '60G', can be overridden in virtvol_hash) $volformat (required, default is 'qcow2', can be overridden in virtvol_hash)

Sample hiera yaml for VM host

classes:
- kvm
kvm::servertype: 'kvm'
kvm::virtnet::virtnet_name: 'br0'
kvm::virtnet::virtnet_forwardmode: 'bridge'
kvm::virtnet::virtbridge_name: 'br0'
kvm::virtnet::virtnet_macaddress: '52:54:00:a1:a1:a1'
kvm::virtpool_hash:
default:
virtpool_target: '/var/lib/libvirt/images'
iso-images:
virtpool_target: '/var/lib/libvirt/iso-images'
virtpool_format: 'iso'
kvm::virtvol_hash:
vm1.img:
volcapacity: '60G'
volformat: 'qcow2'
vm2.img:
volcapacity: '60G'
volformat: 'qcow2'
vm3.img:
volcapacity: '60G'
volformat: 'qcow2'
kvm::virts_hash:
vm1:
desc: 'vm1.libvirttestlab.org'
virtmac: '52:54:00:a2:a2:a2'
vm2:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a3:a3:a3'
vm3:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a4:a4:a4'

Sample hiera yaml for webvirtmgr server

classes:
- kvm
kvm::servertype: 'kvmwebmgr'

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

puppet-kvm

Puppet module to control libvirt/kvm VMs and to build up a webvirtmgr system to manage the libvirt hypervisors. This module currently only works for CentOS/RedHat and requires hiera, the Puppet Labs Firewall module and their vcsrepo module as well. It is currently pretty crude and should only be used for a test or lab environment. Currently, only bridging of VMs is supported. kvm::virtnet class would have to be extended to allow for natted or other VM networking types. The libvirt hosts and the webvirtmgr host need to have internet connectivity currently for this to work.

######TODO: Use hieragpg for passwords ######TODO: Add validation for most paramaters ######TODO: Add rspec tests ######TODO: Make it work with Debian at the very least

Overview

This module configures virtual networks, VM storage pools, VM storage volumes and VMs on KVM/libvirt hypervisor hosts and configures webvirtmgr on a separate system to manage the hypervisors and VMs.

Webvirtmgr can be found at https://github.com/retspen/webvirtmgr

Class: kvm

Main class that calls the various subclasses based on the 'kvmservertype' parameter.

Parameters

  • 'kvmservertype' (valid values are 'kvm' and 'kvmwebmgr')
  • 'virtpool_hash' (hiera hash used for setting up libvirt storage pools)
  • 'virtvol_hash' (hiera hash used for setting up libvirt volumes)
  • 'virts_hash' (hiera hash used for setting up libvirt VMs)
  • 'hypervisorpass' (password used to connect to hypervisors over TCP, required to allow webvirtmgr connectivity to hosts and VMs)

Class: kvm::fw

Configures iptables firewall to allow the various connections required for libvirt and webvirtmgr. Requires the Puppet Labs Firewall module to work.

Class: kvm::kvmwebmgr

Installs depencies for webvirtmgr, installs webvirtmgr and configures everything to make it work. As written, it requires internet connectivity to pull down webvirtmgr.

Definition: kvm::virtnet

Sets up virtual network to be used by VMs on a host

Parameters

  • 'virtnet_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_forwardmode' (default is 'bridge')
  • 'virtbridge_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_macaddress' (required, comes from virtnet_hash hiera hash)

Definition: kvm::virtpool

Sets up virtual storage pools to be used by VMs and for ISO storage on a host

Parameters

  • 'virtpool'
  • 'virtpool_target' (required, default is '/var/lib/libvirt/images')
  • 'virtpool_type' (required, default is 'dir', can be any storage pool type allowed by libvirt such as 'iso')
  • 'virtpool_format' (required, default is 'raw', can be any storage pool format allowed by libvirt)

Definition: kvm::virts

Sets up virtual machines on a libvirt/kvm host

Parameters

  • 'vmname' (required, comes from virts_hash hiera hash, usually set as short hostname for vm)
  • 'desc' (comes from virts_hash hiera hash, usually set as FQDN for vm)
  • 'pool' (required, default is 'default', can be overridden in virts_hash)
  • 'poolpath' (required, default is '/var/lib/libvirt/images', can be overridden in virts_hash)
  • 'virttype' (required, default is 'kvm', can be overridden in virts_hash)
  • 'virtcpus' (required, default is '1', can be overridden in virts_hash)
  • 'virtmem' (required, default is '1024', can be overridden in virts_hash)
  • 'virtostype' (required, default is 'linux', can be overridden in virts_hash)
  • 'virtosvariant' (required, default is 'virtio26', can be overridden in virts_hash)
  • 'virtprovider' (required, default is 'libvirt', can be overridden in virts_hash)
  • 'virtnic' (required, default is 'virtio', can be overridden in virts_hash)
  • 'virtnet' (required, default is 'br0', can be overridden in virts_hash)
  • 'virtmac' (required, default is '"RANDOM"', can be overridden in virts_hash)
  • 'cdrom_location' (required, default is '/var/lib/libvirt/iso-images/CCELinux-6.4.1.iso', can be overridden in virts_hash)
  • 'pxe' (required, default is 'true', can be overridden in virts_hash)
  • 'autoboot' (required, default is 'true', can be overridden in virts_hash)
  • 'alwayson' (required, default is 'true', can be overridden in virts_hash)

Definition: kvm::virtvol

Sets up virtual volumes for each vm on a libvirt/kvm host

Parameters

  • 'virtvol' (required, comes from virtvol_hash hiera hash, usually set as short hostname for vm and .img - hostname1.img)
  • 'virtpool' (required, default is 'default', can be overridden in virtvol_hash) $volcapacity (required, default is '60G', can be overridden in virtvol_hash) $volformat (required, default is 'qcow2', can be overridden in virtvol_hash)

Sample hiera yaml for VM host

classes:
- kvm
kvm::servertype: 'kvm'
kvm::virtnet::virtnet_name: 'br0'
kvm::virtnet::virtnet_forwardmode: 'bridge'
kvm::virtnet::virtbridge_name: 'br0'
kvm::virtnet::virtnet_macaddress: '52:54:00:a1:a1:a1'
kvm::virtpool_hash:
default:
virtpool_target: '/var/lib/libvirt/images'
iso-images:
virtpool_target: '/var/lib/libvirt/iso-images'
virtpool_format: 'iso'
kvm::virtvol_hash:
vm1.img:
volcapacity: '60G'
volformat: 'qcow2'
vm2.img:
volcapacity: '60G'
volformat: 'qcow2'
vm3.img:
volcapacity: '60G'
volformat: 'qcow2'
kvm::virts_hash:
vm1:
desc: 'vm1.libvirttestlab.org'
virtmac: '52:54:00:a2:a2:a2'
vm2:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a3:a3:a3'
vm3:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a4:a4:a4'

Sample hiera yaml for webvirtmgr server

classes:
- kvm
kvm::servertype: 'kvmwebmgr'

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

puppet-kvm

Puppet module to control libvirt/kvm VMs and to build up a webvirtmgr system to manage the libvirt hypervisors. This module currently only works for CentOS/RedHat and requires hiera, the Puppet Labs Firewall module and their vcsrepo module as well. It is currently pretty crude and should only be used for a test or lab environment. Currently, only bridging of VMs is supported. kvm::virtnet class would have to be extended to allow for natted or other VM networking types. The libvirt hosts and the webvirtmgr host need to have internet connectivity currently for this to work.

######TODO: Use hieragpg for passwords ######TODO: Add validation for most paramaters ######TODO: Add rspec tests ######TODO: Make it work with Debian at the very least

Overview

This module configures virtual networks, VM storage pools, VM storage volumes and VMs on KVM/libvirt hypervisor hosts and configures webvirtmgr on a separate system to manage the hypervisors and VMs.

Webvirtmgr can be found at https://github.com/retspen/webvirtmgr

Class: kvm

Main class that calls the various subclasses based on the 'kvmservertype' parameter.

Parameters

  • 'kvmservertype' (valid values are 'kvm' and 'kvmwebmgr')
  • 'virtpool_hash' (hiera hash used for setting up libvirt storage pools)
  • 'virtvol_hash' (hiera hash used for setting up libvirt volumes)
  • 'virts_hash' (hiera hash used for setting up libvirt VMs)
  • 'hypervisorpass' (password used to connect to hypervisors over TCP, required to allow webvirtmgr connectivity to hosts and VMs)

Class: kvm::fw

Configures iptables firewall to allow the various connections required for libvirt and webvirtmgr. Requires the Puppet Labs Firewall module to work.

Class: kvm::kvmwebmgr

Installs depencies for webvirtmgr, installs webvirtmgr and configures everything to make it work. As written, it requires internet connectivity to pull down webvirtmgr.

Definition: kvm::virtnet

Sets up virtual network to be used by VMs on a host

Parameters

  • 'virtnet_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_forwardmode' (default is 'bridge')
  • 'virtbridge_name' (required, comes from virtnet_hash hiera hash)
  • 'virtnet_macaddress' (required, comes from virtnet_hash hiera hash)

Definition: kvm::virtpool

Sets up virtual storage pools to be used by VMs and for ISO storage on a host

Parameters

  • 'virtpool'
  • 'virtpool_target' (required, default is '/var/lib/libvirt/images')
  • 'virtpool_type' (required, default is 'dir', can be any storage pool type allowed by libvirt such as 'iso')
  • 'virtpool_format' (required, default is 'raw', can be any storage pool format allowed by libvirt)

Definition: kvm::virts

Sets up virtual machines on a libvirt/kvm host

Parameters

  • 'vmname' (required, comes from virts_hash hiera hash, usually set as short hostname for vm)
  • 'desc' (comes from virts_hash hiera hash, usually set as FQDN for vm)
  • 'pool' (required, default is 'default', can be overridden in virts_hash)
  • 'poolpath' (required, default is '/var/lib/libvirt/images', can be overridden in virts_hash)
  • 'virttype' (required, default is 'kvm', can be overridden in virts_hash)
  • 'virtcpus' (required, default is '1', can be overridden in virts_hash)
  • 'virtmem' (required, default is '1024', can be overridden in virts_hash)
  • 'virtostype' (required, default is 'linux', can be overridden in virts_hash)
  • 'virtosvariant' (required, default is 'virtio26', can be overridden in virts_hash)
  • 'virtprovider' (required, default is 'libvirt', can be overridden in virts_hash)
  • 'virtnic' (required, default is 'virtio', can be overridden in virts_hash)
  • 'virtnet' (required, default is 'br0', can be overridden in virts_hash)
  • 'virtmac' (required, default is '"RANDOM"', can be overridden in virts_hash)
  • 'cdrom_location' (required, default is '/var/lib/libvirt/iso-images/CCELinux-6.4.1.iso', can be overridden in virts_hash)
  • 'pxe' (required, default is 'true', can be overridden in virts_hash)
  • 'autoboot' (required, default is 'true', can be overridden in virts_hash)
  • 'alwayson' (required, default is 'true', can be overridden in virts_hash)

Definition: kvm::virtvol

Sets up virtual volumes for each vm on a libvirt/kvm host

Parameters

  • 'virtvol' (required, comes from virtvol_hash hiera hash, usually set as short hostname for vm and .img - hostname1.img)
  • 'virtpool' (required, default is 'default', can be overridden in virtvol_hash) $volcapacity (required, default is '60G', can be overridden in virtvol_hash) $volformat (required, default is 'qcow2', can be overridden in virtvol_hash)

Sample hiera yaml for VM host

classes:
- kvm
kvm::servertype: 'kvm'
kvm::virtnet::virtnet_name: 'br0'
kvm::virtnet::virtnet_forwardmode: 'bridge'
kvm::virtnet::virtbridge_name: 'br0'
kvm::virtnet::virtnet_macaddress: '52:54:00:a1:a1:a1'
kvm::virtpool_hash:
default:
virtpool_target: '/var/lib/libvirt/images'
iso-images:
virtpool_target: '/var/lib/libvirt/iso-images'
virtpool_format: 'iso'
kvm::virtvol_hash:
vm1.img:
volcapacity: '60G'
volformat: 'qcow2'
vm2.img:
volcapacity: '60G'
volformat: 'qcow2'
vm3.img:
volcapacity: '60G'
volformat: 'qcow2'
kvm::virts_hash:
vm1:
desc: 'vm1.libvirttestlab.org'
virtmac: '52:54:00:a2:a2:a2'
vm2:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a3:a3:a3'
vm3:
desc: 'vm2.libvirttestlab.org'
virtmac: '52:54:00:a4:a4:a4'

Sample hiera yaml for webvirtmgr server

classes:
- kvm
kvm::servertype: 'kvmwebmgr'

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages