blob: 27c0e387fa3c3cc0d309d3856f9df124f9dfc51c [file] [log] [blame]
# 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
# MANDATORY: The GUID to identify the agent with.
# Generated with "uuidgen"
guid=
# The java class which the agent loads to execute.
resource=com.cloud.hypervisor.kvm.resource.LibvirtComputingResource
# The number of threads running in the agent.
workers=5
# The IP address of the management server.
host=localhost
# The time interval (in seconds) after which agent will check if the connected host
# is the preferred host (the first host in the comma-separated list is the preferred
# one). After that interval, if the agent is connected to one of the secondary/backup hosts,
# it will attempt to reconnect to the preferred host.
# The timer task is scheduled after the 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, if the following setting
# is defined it will override the received value. The value 0 and lb algorithm 'shuffle'
# disables this background task.
#host.lb.check.interval=
# The port that the management server is listening on.
port=8250
# The cluster which the agent belongs to.
cluster=default
# The pod which the agent belongs to.
pod=default
# The zone which the agent belongs to.
zone=default
# The public NIC device.
# If this is commented, it will be autodetected on service startup.
#public.network.device=cloudbr0
# The private NIC device.
# If this is commented, it will be autodetected on service startup.
#private.network.device=cloudbr1
# The guest NIC device.
# If this is commented, the value of the private NIC device will be used.
#guest.network.device=
# Local storage path. Multiple values can be entered and separated by commas.
#local.storage.path=/var/lib/libvirt/images/
# Directory where Qemu sockets are placed.
# These sockets are for the Qemu Guest Agent and SSVM provisioning.
# Make sure that AppArmor or SELinux allow libvirt to write there.
#qemu.sockets.path=/var/lib/libvirt/qemu
# MANDATORY: The UUID for the local storage pool. Multiple values can be entered and separated by commas.
# Generated with "uuidgen".
local.storage.uuid=
# Location for KVM virtual router scripts.
# The path defined in this property is relative to the directory "/usr/share/cloudstack-common/".
domr.scripts.dir=scripts/network/domr/kvm
# The timeout (in ms) for time-consuming operations, such as create/copy a snapshot.
#cmds.timeout=7200
# This parameter sets the VM migration speed.
# By default, it will try to guess the speed of the guest network and consume all possible bandwidth.
# The default value is -1, which means that the agent will use all possible bandwidth.
# When entering a value, make sure to enter it in megabytes per second.
#vm.migrate.speed=-1
# Sets target downtime (in ms) 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=-1
# Busy VMs may never finish migrating, depending on environment.
# Therefore, if configured, this option will pause the VM after the time entered (in ms) to force the migration to finish.
# Less than 1 means disabled.
#vm.migrate.pauseafter=-1
# Time (in seconds) to wait for VM migraton to finish. Less than 1 means disabled.
# If the 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 (migratewait default value: 3600).
#vm.migrate.wait=-1
# ---------------- AGENT HOOKS -----------------
# Agent hooks is the way to override default agent behavior to extend the functionality without excessive coding
# for a custom deployment.
# There are 3 arguments needed for the hook to be called: the base directory (defined in agent.hooks.basedir),
# the name of the script that is located in the base directory (defined in agent.hooks.*.script)
# and the method that is going to be called on the script (defined in agent.hooks.*.method).
# These properties are detailed below.
# Hooks are implemented in Groovy and must be implemented in a way
# that keeps default CS behavior if 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 allows the provider to modify
# VM XML specification before is sent to libvirt.
# The provider can use this 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 successfully launched the 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 successfully stopped the VM.
#agent.hooks.libvirt_vm_on_stop.script=libvirt-vm-state-change.groovy
#agent.hooks.libvirt_vm_on_stop.method=onStop
# ---------------- END AGENT HOOKS ---------------
# Sets the type of bridge used on the hypervisor. This defines what commands the resource
# will use to setup networking.
# Possible Values: native | openvswitch
#network.bridge.type=native
# Sets the driver used to plug and unplug NICs from the bridges.
# A sensible default value will be selected based on the network.bridge.type but can
# be overridden here.
# Also used to enable direct networking in libvirt (see properties below).
# Default value when network.bridge.type as native = com.cloud.hypervisor.kvm.resource.BridgeVifDriver
# Default value when network.bridge.type as openvswitch = com.cloud.hypervisor.kvm.resource.OvsVifDriver
#libvirt.vif.driver=
# Settings to enable direct networking in libvirt.
# Should not be used on hosts that run system VMs.
# Possible values for mode: private | bridge | vepa
#libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.DirectVifDriver
#network.direct.source.mode=private
#network.direct.device=eth0
# Sets DPDK Support on OpenVswitch.
#openvswitch.dpdk.enabled=false
#openvswitch.dpdk.ovs.path=
# Sets the hypervisor type.
# Possible values: 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
# Sets the rolling maintenance hook scripts directory.
# Default is null, however, can be used as /etc/cloudstack/agent/hooks.d
#rolling.maintenance.hooks.dir=
# Disables the rolling maintenance service execution.
#rolling.maintenance.service.executor.disabled=false
# Sets the hypervisor URI. If null (default), the value defaults according the hypervisor.type:
# For KVM: qemu:///system
# For LXC: lxc:///
#hypervisor.uri=
# Setting to enable the CPU model to KVM guest globally.
# Possible values: custom | host-model | host-passthrough
# - custom: user customs the CPU model, which is specified by property guest.cpu.model.
# - host-model: identifies the named CPU model which most closely matches the host,
# and then requests additional CPU flags to complete the match. This should give
# close to maximum functionality/performance, which maintains good
# reliability/compatibility if the guest is migrated to another host with slightly different host CPUs.
# - host-passthrough: tells KVM to passthrough the host CPU with no modifications.
# It is different from host-model because 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 with migration. The guest can only be migrated to
# an exactly matching host CPU.
# If null (default), libvirt defaults to custom
#guest.cpu.mode=
# Custom CPU model. This param is only valid if guest.cpu.mode=custom.
# Possible values:"Conroe" | "Penryn" | "Nehalem" | "Westmere" | "pentiumpro" etc.
# Run virsh capabilities for more details.
#guest.cpu.model=
# This param will set the CPU architecture for the domain to 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.
# Possible values: x86_64 | aarch64
# If null (default), defaults to the VM's OS architecture
#guest.cpu.arch=
# This param will require CPU features on the CPU section.
# The features listed in this property must be separated by a blank space (e.g.: vmx vme)
#guest.cpu.features=
# Disables memory ballooning on VM guests for overcommit.
# By default overcommit feature enables balloon and sets currentMemory to a minimum value.
#vm.memballoon.disable=false
# The time interval (in seconds) at which the balloon driver will get memory stats updates.
# This is equivalent to Libvirt's --period parameter when using the dommemstat command.
# vm.memballoon.stats.period=0
# 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 modified time against the current time,
# so care must be taken to ensure that the cluster's time is synchronized, otherwise VMs may fail to start.
#vm.diskactivity.checkenabled=false
# Timeout (in seconds) for giving up on waiting for VM's disk files to become inactive.
# Hitting this timeout will result in failure to start VM.
# Value must be > 0.
#vm.diskactivity.checktimeout_s=120
# This is the length of time (in ms) that the disk needs to be inactive in order to pass the check.
# This means current time minus time 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.
#vm.diskactivity.inactivetime_ms=30000
# 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.
#kvmclock.disable=false
# This enables the VirtIO Random Number Generator (RNG) device for guests.
#vm.rng.enable=false
# The model of VirtIO Random Number Generator (RNG) to present to the Guest.
# Currently only 'random' is supported.
#vm.rng.model=random
# Local Random Number Device Generator to use for VirtIO RNG for Guests.
# This is usually /dev/random, but it might be different per platform.
#vm.rng.path=/dev/random
# The amount of bytes the Guest may request/obtain from the RNG in the period
# specified in the property vm.rng.rate.period.
#vm.rng.rate.bytes=2048
# The number of milliseconds in which the guest is allowed to obtain the bytes
# specified in the property vm.rng.rate.bytes.
#vm.rng.rate.period=1000
# Timeout value for aggregation commands to be sent to the virtual router (in seconds).
#router.aggregation.command.each.timeout=
# Allows virtually increase the amount of RAM (in MB) available on the host.
# This property can be useful if the host uses Zswap, KSM features and other memory compressing technologies.
# For example: if the host has 2GB of RAM and this property is set to 2048, the amount of RAM of the host will be read as 4GB.
#host.overcommit.mem.mb=0
# How much host memory (in MB) 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.
# If this parameter is used, property host.overcommit.mem.mb must be set to 0.
#host.reserved.mem.mb=1024
# The model of Watchdog timer to present to the Guest.
# For all models refer to the libvirt documentation.
#vm.watchdog.model=i6300esb
# Action to take when the Guest/Instance is no longer notifying the Watchdog timer.
# For all actions refer to the libvirt documentation.
# Possible values: none | reset | poweroff
#vm.watchdog.action=none
# 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.
iscsi.session.cleanup.enabled=false
# The heartbeat update timeout (in ms).
# Depending on the use case, this timeout might need increasing/decreasing.
#heartbeat.update.timeout=60000
# 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
# Enables manually setting CPU's topology on KVM's VM.
#enable.manually.setting.cpu.topology.on.kvm.vm=true
# Manually sets the host CPU MHz, in cases where CPU scaling support detects the value is wrong.
#host.cpu.manual.speed.mhz=0
# Defines the location for Hypervisor scripts.
# The path defined in this property is relative.
# To locate the script, ACS first tries to concatenate
# the property path with "/usr/share/cloudstack-agent/lib/".
# If it fails, it will test each folder of the path,
# decreasing one by one, until it reaches root.
# If the script is not found, ACS will repeat the same
# steps concatenating the property path with "/usr/share/cloudstack-common/".
# The path defined in this property is relative
# to the directory "/usr/share/cloudstack-common/".
#hypervisor.scripts.dir=scripts/vm/hypervisor
# Defines the location for KVM scripts.
# The path defined in this property is relative.
# To locate the script, ACS first tries to concatenate
# the property path with "/usr/share/cloudstack-agent/lib/".
# If it fails, it will test each folder of the path,
# decreasing one by one, until it reaches root.
# If the script is not found, ACS will repeat the same
# steps concatenating the property path with "/usr/share/cloudstack-common/".
# The path defined in this property is relative
# to the directory "/usr/share/cloudstack-common/".
#kvm.scripts.dir=scripts/vm/hypervisor/kvm
# Specifies start MAC address for private IP range.
#private.macaddr.start=00:16:3e:77:e2:a0
# Specifies start IP address for private IP range.
#private.ipaddr.start=192.168.166.128
# Defines Local Bridge Name.
#private.bridge.name=
# Defines private network name.
#private.network.name=
# Defines the location for network scripts.
# The path defined in this property is relative.
# To locate the script, ACS first tries to concatenate
# the property path with "/usr/share/cloudstack-agent/lib/".
# If it fails, it will test each folder of the path,
# decreasing one by one, until it reaches root.
# If the script is not found, ACS will repeat the same
# steps concatenating the property path with "/usr/share/cloudstack-common/".
# The path defined in this property is relative
# to the directory "/usr/share/cloudstack-common/".
#network.scripts.dir=scripts/vm/network/vnet
# Defines the location for storage scripts.
# The path defined in this property is relative.
# To locate the script, ACS first tries to concatenate
# the property path with "/usr/share/cloudstack-agent/lib/".
# If it fails, it will test each folder of the path,
# decreasing one by one, until it reaches root.
# If the script is not found, ACS will repeat the same
# steps concatenating the property path with "/usr/share/cloudstack-common/".
# The path defined in this property is relative
# to the directory "/usr/share/cloudstack-common/".
#storage.scripts.dir=scripts/storage/qcow2
# Time (in seconds) to wait for the VM to shutdown gracefully.
# If the time is exceeded shutdown will be forced.
#stop.script.timeout=120
# Definition of VMs video model type.
#vm.video.hardware=
# Definition of VMs video, specifies the amount of RAM in kibibytes (blocks of 1024 bytes).
#vm.video.ram=0
# System VM ISO path.
#systemvm.iso.path=
# If set to "true", allows override of the properties: private.macaddr.start, private.ipaddr.start, private.ipaddr.end.
#developer=false
# Can only be used if property developer = true. This property is used to define the link local bridge name and private network name.
#instance=
# Shows the path to the base directory in which NFS servers are going to be mounted.
#mount.path=/mnt
# Port listened by the console proxy.
#consoleproxy.httpListenPort=443
#ping.retries=5
# The number of iothreads. There should be only 1 or 2 IOThreads per VM CPU (default is 1). The recommended number of iothreads is 1
# iothreads=1