# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # Sample configuration file for CloudStack agent # The GUID to identify the agent with, this is mandatory! # Generate with "uuidgen" guid= #resource= the java class, which agent load to execute resource=com.cloud.hypervisor.kvm.resource.LibvirtComputingResource #workers= number of threads running in agent workers=5 #host= The IP address of management server host=localhost # The time interval in seconds after which agent will check if connected host # is the preferred host (the first host in the comma-separated list is preferred # one) and will attempt to reconnect to the preferred host when it's connected # to one of the secondary/backup hosts. The timer task is scheduled after agent # connects to a management server. On connection, it receives admin configured # cluster-level 'indirect.agent.lb.check.interval' setting that will be used by # the agent as the preferred host check interval however the following setting # if defined overrides the received value. The value 0 and lb algorithm 'shuffle' # disables this background task. #host.lb.check.interval=0 #port = The port management server listening on, default is 8250 port=8250 #cluster= The cluster which the agent belongs to cluster=default #pod= The pod which the agent belongs to pod=default #zone= The zone which the agent belongs to zone=default #public.network.device= the public nic device # if this is commented, it is autodetected on service startup # public.network.device=cloudbr0 #private.network.device= the private nic device # if this is commented, it is autodetected on service startup # private.network.device=cloudbr1 #guest.network.device= the guest nic device # if this is commented, the private nic device will be used # local storage path, by default, it's /var/lib/libvirt/images/ #local.storage.path=/var/lib/libvirt/images/ # Qemu socket path, directory where Qemu sockets are placed. # These sockets are for the Qemu Guest Agent and SSVM privisioning # Make sure that AppArmor or SELinux allow libvirt to write there #qemu.sockets.path=/var/lib/libvirt/qemu # The UUID for the local storage pool, this is mandatory! # Generate with "uuidgen" local.storage.uuid= # Location for KVM scripts domr.scripts.dir=scripts/network/domr/kvm # the timeout for time-consuming operations, such as create/copy snapshot #cmds.timeout=7200 # set the vm migrate speed, by default, it will try to guess the speed of the guest network # In MegaBytes per second #vm.migrate.speed=0 # set target downtime at end of livemigration, the 'hiccup' for final copy. Higher numbers # make livemigration easier, lower numbers may cause migration to never complete. Less than 1 # means hypervisor default (20ms). #vm.migrate.downtime=0 # Busy VMs may never finish migrating, depending on environment. When its available, we will # want to add support for autoconvergence migration flag which should fix this. Set an upper # limit in milliseconds for how long live migration should wait, at which point VM is paused and # migration will finish quickly. Less than 1 means disabled. #vm.migrate.pauseafter=0 # Time (in seconds) to wait for VM migrate finish. Less than 1 means disabled. # If vm migration is not finished in the time, the vm job will be cancelled by libvirt. # It will be configured by cloudstack management server when cloudstack agent connects. # please change the global setting 'migratewait' if needed (default value: 3600) #vm.migrate.wait=0 # Agent hooks is the way to override default agent behavior to extend the functionality without excessive coding # for a custom deployment. The first hook promoted is libvirt-vm-xml-transformer which allows provider to modify # VM XML specification before send to libvirt. Hooks are implemented in Groovy and must be implemented in the way # to keep default CS behaviour is something goes wrong. # All hooks are located in a special directory defined in 'agent.hooks.basedir' # # agent.hooks.basedir=/etc/cloudstack/agent/hooks # every hook has two major attributes - script name, specified in 'agent.hooks.*.script' and method name # specified in 'agent.hooks.*.method'. # Libvirt XML transformer hook does XML-to-XML transformation which provider can use to add/remove/modify some # sort of attributes in Libvirt XML domain specification. # agent.hooks.libvirt_vm_xml_transformer.script=libvirt-vm-xml-transformer.groovy # agent.hooks.libvirt_vm_xml_transformer.method=transform # # The hook is called right after libvirt successfuly launched VM # agent.hooks.libvirt_vm_on_start.script=libvirt-vm-state-change.groovy # agent.hooks.libvirt_vm_on_start.method=onStart # # The hook is called right after libvirt successfuly stopped VM # agent.hooks.libvirt_vm_on_stop.script=libvirt-vm-state-change.groovy # agent.hooks.libvirt_vm_on_stop.method=onStop # # set the type of bridge used on the hypervisor, this defines what commands the resource # will use to setup networking. Currently supported NATIVE, OPENVSWITCH #network.bridge.type=native # set the driver used to plug and unplug nics from the bridges # a sensible default will be selected based on the network.bridge.type but can # be overridden here. # native = com.cloud.hypervisor.kvm.resource.BridgeVifDriver # openvswitch = com.cloud.hypervisor.kvm.resource.OvsVifDriver #libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.BridgeVifDriver # Set DPDK Support on OpenVswitch #openvswitch.dpdk.enabled=true #openvswitch.dpdk.ovs.path=/var/run/openvswitch # set the hypervisor type, values are: kvm, lxc hypervisor.type=kvm # This parameter specifies a directory on the host local storage for temporary storing direct download templates #direct.download.temporary.download.location=/var/lib/libvirt/images # This parameter specifies a directory on the host local storage for creating and hosting the config drives #host.cache.location=/var/cache/cloud # set the rolling maintenance hook scripts directory #rolling.maintenance.hooks.dir=/etc/cloudstack/agent/hooks.d # disable the rolling maintenance service execution #rolling.maintenance.service.executor.disabled=true # set the hypervisor URI. Usually there is no need for changing this # For KVM: qemu:///system # For LXC: lxc:/// # hypervisor.uri=qemu:///system # settings to enable direct networking in libvirt, should not be used # on hosts that run system vms, values for mode are: private, bridge, vepa # libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.DirectVifDriver # network.direct.source.mode=private # network.direct.device=eth0 # setting to enable the cpu model to kvm guest globally. # three option:custom,host-model and host-passthrough. # custom - user custom the CPU model which specified by guest.cpu.model. # host-model - identify the named CPU model which most closely matches the host, # and then request additional CPU flags to complete the match. This should give # close to maximum functionality/performance, which maintaining good # reliability/compatibility if the guest is migrated to another host with slightly different host CPUs. # host-passthrough - tell KVM to passthrough the host CPU with no modifications. # The difference to host-model, instead of just matching feature flags, # every last detail of the host CPU is matched. This gives absolutely best performance, # and can be important to some apps which check low level CPU details, # but it comes at a cost wrt migration. The guest can only be migrated to # an exactly matching host CPU. # # guest.cpu.mode=custom|host-model|host-passthrough # This param is only valid if guest.cpu.mode=custom, # for examples:"Conroe" "Penryn", "Nehalem", "Westmere", "pentiumpro" and so # on,run virsh capabilities for more details. # guest.cpu.model= # # This param will set the CPU architecture for the domain override what # the management server would send # In case of arm64 (aarch64), this will change the machine type to 'virt' and # adds a SCSI and a USB controller in the domain xml. # guest.cpu.arch=x86_64|aarch64 # # This param will require CPU features on the section # guest.cpu.features=vmx vme # # vm.memballoon.disable=true # Disable memory ballooning on vm guests for overcommit, by default overcommit # feature enables balloon and sets currentMemory to a minimum value. # # vm.diskactivity.checkenabled=false # Set to true to check disk activity on VM's disks before starting a VM. This only applies # to QCOW2 files, and ensures that there is no other running instance accessing # the file before starting. It works by checking the modify time against the current time, # so care must be taken to ensure the cluster has time synced, otherwise VMs may fail to start. # # vm.diskactivity.checktimeout_s=120 # Timeout for giving up on waiting for VM's disk files to become inactive. Hitting # this timeout will result in failure to start VM. # # vm.diskactivity.inactivetime_ms=30000 # This is the length of time that the disk needs to be inactive in order to pass the check. # This means current time minus mtime of disk file needs to be greater than this number. # It also has the side effect of setting the minimum threshold between a stop and start of # a given VM. # # kvmclock.disable=false # Some newer linux kernels are incapable of reliably migrating vms with kvmclock # This is a workaround for the bug, admin can set this to true per-host # # vm.rng.enable=false # This enabled the VirtIO Random Number Generator device for guests. # # vm.rng.model=random # The model of VirtIO Random Number Generator (RNG) to present to the Guest. # Currently only 'random' is supported. # # vm.rng.path=/dev/random # Local Random Number Device Generator to use for VirtIO RNG for Guests. # This is usually /dev/random, but per platform this might be different # # vm.rng.rate.bytes=2048 # The amount of bytes the Guest may request/obtain from the RNG in the period # specified below. # # vm.rng.rate.period=1000 # The number of milliseconds in which the guest is allowed to obtain the bytes # specified above. # # router.aggregation.command.each.timeout=600 # timeout value for aggregation commands send to virtual router # # host.overcommit.mem.mb = 0 # allows to increase amount of ram available on host virtually to utilize Zswap, KSM features # and modern fast SSD/3D XPoint devices. Specified amount of MBs is added to the memory agent # reports to the Management Server # Default: 0 # # host.reserved.mem.mb = 0 # How much host memory to reserve for non-allocation. # A useful parameter if a node uses some other software that requires memory, # or in case that OOM Killer kicks in sometimes. # If this parameter is used, host.overcommit.mem.mb must be set to 0. # Default value: 0 # # vm.watchdog.model=i6300esb # The model of Watchdog timer to present to the Guest # For all models refer to the libvirt documentation. # Recommend value is: i6300esb # # vm.watchdog.action=none # Action to take when the Guest/Instance is no longer notifiying the Watchdog # timer. # For all actions refer to the libvirt documentation. # Recommended values are: none, reset and poweroff. # iscsi.session.cleanup.enabled=false # Automatically clean up iscsi sessions not attached to any VM. # Should be enabled for users using managed storage for example solidfire. # Should be disabled for users with unmanaged iscsi connections on their hosts # This parameter specifies the heartbeat update timeout in ms; The default value is 60000ms (1 min). # Depending on the use case, this timeout might need increasing/decreasing. # heartbeat.update.timeout=60000 # This parameter specifies the timeout in seconds to retrieve the target's domain id when migrating a VM with KVM. # vm.migrate.domain.retrieve.timeout=10 # This parameter specifies if the host must be rebooted when something goes wrong with the heartbeat. # reboot.host.and.alert.management.on.heartbeat.timeout=true # Enable manually setting CPU's topology on KVM's VM. # enable.manually.setting.cpu.topology.on.kvm.vm=true