Table of Contents
Guest Environments Bundles and Bodies
Table of Contents
See the guest_environments
promises documentation for a
comprehensive reference on the body types and attributes used here.
To use these bodies, add the following to your policy:
body file control
{
inputs => { "guest_environments.cf" }
}
environment_resources bodies
kvm
Prototype: kvm(name, arch, cpu_count, mem_kb, disk_file)
Description: An environment_resources
body for a KVM virtual machine.
The env_spec
attribute is set to a KVM XML specification.
Arguments:
name
: The name of the virtual machinearch
: The architecturecpu_count
: The number of CPUs the virtual machine should havemem_kb
: The amount of RAM in kilobytedisk_file
: The file on the host system for the virtual machine's harddrive
Example:
bundle agent manage_vm
{
guest_environments:
am_vm_host::
"db_server"
environment_host => atlas,
environment_type => "kvm",
environment_state => "create",
environment_resources => kvm("PSQL1, "x86_64", "4", "4096", "/var/lib/libvirt/images/psql1.iso")
}
Implementation:
body environment_resources kvm(name, arch, cpu_count, mem_kb, disk_file)
{
env_spec =>
"<domain type='kvm'>
<name>$(name)</name>
<memory>$(mem_kb)</memory>
<currentMemory>$(mem_kb)</currentMemory>
<vcpu>$(cpu_count)</vcpu>
<os>
<type arch='$(arch)'>hvm</type>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<source file='$(disk_file)'/>
<target dev='vda' bus='virtio'/>
</disk>
<interface type='network'>
<source network='default'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes'/>
</devices>
</domain>";
}