#
# archipel.conf
#
# Copyright (C) 2010 Antoine Mercadal <antoine.mercadal@inframonde.eu>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
###############################################################################
###############################################################################
#
# General configuration. You should just need to edit these values
#
[DEFAULT]
# the default XMPP server to user
xmpp_server = vmsrv2
# archipel's data folder
archipel_folder_lib = /var/lib/archipel/
# this UUID will be used to identify the hypervisor
# internally. It MUST be different foreach one over
# your platform. You can generate a new one using
# uuidgen command
archipel_general_uuid = 92008f2e-036e-4cec-89cb-cf4b8adec382
# the base working folder, where virtual machine related
# stuff will be stored
archipel_folder_data = /vm/
###############################################################################
###############################################################################
#
# This is the main configuration parameters
#
[GLOBAL]
# jid of the xmpp pubsub server
xmpp_pubsub_server = pubsub.%(xmpp_server)s
# jids of the root administrator separated with spaces
archipel_root_admins = admin@%(xmpp_server)s
# the ip of this machine. It can be :
# - auto : the IP if found using a Internet request.
# - gateway_interface : Using ip address configured on default gateway interface
# - X.X.X.X : manual ip
machine_ip = auto
# if set to True, XMPP layer uses avatars
use_avatar = True
# Folder of the avatars
machine_avatar_directory = %(archipel_folder_lib)s/avatars
# the uri of hypervisor
libvirt_uri = qemu:///system
# [OPTIONAL] if set, this parameter is send to other hypervisors as migration UI
# migration_uri = qemu+ssh://mydomain/system
# default loading module policy
# - permissive : if no entry are found in the conf file in section MODULES, the module will be loaded anyway
# - restrictive: you need to explicitely declare what modules to load in MODULES
module_loading_policy = restrictive
# [OPTIONAL] This parameters makes Archipel able to run in stateless mode.
# stateless mode needs some kernel parameters. please read the documentation (which is not available now

# about it, or leave it set to False
stateless_node = False
#
# VCARD information - They CANNOT be empty
#
[VCARD]
orgname = Archipel Corp
orgunit = Dev
userid = contact@archipelproject.org
locality = San Francisco
url =
http://archipelproject.orgcategories = Archipel
#
# The hypervisor configuration
#
[HYPERVISOR]
# the JID of this hypervisor. It MUST be different foreach one over
# your platform.
# If this account not exists, it will be created on the fly
hypervisor_xmpp_jid = vmsrv2@%(xmpp_server)s
# the XMPP password of this hypervisor
hypervisor_xmpp_password = Super_1
# the vCard name of hypervisor. if set to "auto"
# the hostname is used
hypervisor_name = auto
# the sqlite3 db file to store hypervisor informations
hypervisor_database_path = %(archipel_folder_lib)s/hypervisor.sqlite3
# the default avatar to use for hypervisor, relative to
# GLOBAL:machine_avatar_directory and if GLOBAL:use_avatar is set to True
hypervisor_default_avatar = defaulthypervisor.png
# the file contaning auto generated names for virtual machine creation
# must be a text file containing one name per line
name_generation_file = %(archipel_folder_lib)s/names.txt
# the database file for storing permissions (full path required)
hypervisor_permissions_database_path = %(archipel_folder_lib)s/permissions.sqlite3
#
# The virtual machines configuration
#
[VIRTUALMACHINE]
# the base folder to use to store virtual machine's own
# informations (drives, etc...)
vm_base_path = %(archipel_folder_data)s/drives
# [OPTIONAL] the base folder to store virtual machine permissions
# if not set, permissions are stored in the base folder
# vm_perm_path = %(archipel_folder_data)s/drives
# the default avatar to use for virtual machine, relative to
# GLOBAL:machine_avatar_directory and if GLOBAL:use_avatar is set to True
vm_default_avatar = defaultvm.png
# the size of the random generated XMPP password
xmpp_password_size = 32
# the maximum lifetime of a lock (in seconds)
maximum_lock_time = 1
# the database file for storing permissions (relative path required)
vm_permissions_database_path = /permissions.sqlite3
# if set to false, all space in virtual machine names will be replaced by a '-'
# note that for xen backend this option has no effect as xen does'nt handle spaces in names.
allow_blank_space_in_vm_name = True
# [OPTIONAL] this will allow to block access to block devices
# when defining virtual machines
enable_block_device_access = True
# [OPTIONAL] this will disable the screenshot feature. Libvirt 0.9.5+ is bugged
# If you use these versions, set this value to True. Default value (i.e not set) is False
disable_screenshot = False
#
# Logging configuration
#
[LOGGING]
# minimal log level. it can be in order:
# - debug
# - info
# - warning
# - error
# - critical
logging_level = debug
# max life time of a log node in the pubsub
log_pubsub_item_expire = 3600
# max number of stored log in the pubsub log node
log_pubsub_max_items = 1000
# the path of file to store logs
logging_file_path = /var/log/archipel/archipel.log
# max size in bytes of a log file before rotation
logging_max_bytes = 5000000
# number of log backup file to keep
logging_backup_count = 5
# the date format to use in log file.
# See
http://docs.python.org/library/logging.html#formatter-objectslogging_date_format = %Y-%m-%d %H:%M:%S
# the log format to use in log file.
# See
http://docs.python.org/library/datetime.html?highlight=date#strftime-and-strptime-behaviorlogging_formatter = %(levelname)s::%(asctime)s::%(filename)s:%(lineno)s::%(message)s
# If this is True, xmpppy will be in debug mode
xmpppy_debug = False
#
# This allows to choose wich modules to load.
# the name of the parameter is the name the module dir.
# If the value is set to True, the module will be loaded
#
[MODULES]
action_scheduler = True
geolocalization = True
hypervisor_health = True
hypervisor_network = True
hypervisor_vmcasts = True
iphone_notification = False
oomkiller = True
snapshoting = True
storage = True
virtualmachine_appliance = True
vnc = True
xmppserver = True
platformrequest = False
vmparking = True
###############################################################################
# MODULES CONFIGURATION #
###############################################################################
#
# HypervisorHealth module configuration
#
[HEALTH]
# the sqlite3 db file to store health informations
health_database_path = %(archipel_folder_lib)s/statscollection.sqlite3
# data collection interval in seconds
health_collection_interval = 5
# max datarow to store in number of data collection
# (5s * 50000collections ~ 70 hours)
max_rows_before_purge = 50000
# number of row to store memory before saving into database
max_cached_rows = 200
#
# Storage module configuration
#
[STORAGE]
# the filesystem path to the shared ISO file usable
# by virtual machines
iso_base_path = %(archipel_folder_data)s/iso
# if your copy of qemu-img support it, allow to create non
# sparse qcow2 img (it will be optionnal, but proposed)
use_metadata_preallocation = True
# the path for qemu-img
qemu_img_bin_path = /usr/bin/qemu-img
# path to the folder containing QCOW2 gold drives
golden_drives_dir = %(archipel_folder_data)s/goldens
#
# Geolocalization module configuration
#
[GEOLOCALIZATION]
# set the way the hypervisor localize itself.
# can be "manual" or "auto"
localization_mode = auto
# manual latitude
# ignored if localization_mode=auto, mandatory if localization_mode=manual
localization_latitude = 0.0
# manual longitude
# ignored if localization_mode=auto, mandatory if localization_mode=manual
localization_longitude = 0.0
# the url of geolocalization service
# ignored if localization_mode=manual, mandatory if localization_mode=auto
localization_service_url = ipinfodb.com
# the query of geolocalization service
# ignored if localization_mode=manual, mandatory if localization_mode=auto
localization_service_request = /ip_query.php
# the HTTP method of geolocalization service
# ignored if localization_mode=manual, mandatory if localization_mode=auto
localization_service_method = GET
# the base XML tag of geolocalization service
# must contains <latitude> and <longitude> tags
# ignored if localization_mode=manual, mandatory if localization_mode=auto
localization_service_response_root_node = Response
#
# VMCasting module configuration
#
[VMCASTING]
# the sqlite3 db file to store vmcatsting informations
vmcasting_database_path = %(archipel_folder_lib)s/vmcasting.sqlite3
# the folder where downloaded appliances are placed
repository_path = %(archipel_folder_data)s/repo
# working path
temp_path = %(archipel_folder_data)s/tmp
# the name of vmcast
own_vmcast_name = Local VM casts of $HOSTNAME
# vmcast description
own_vmcast_description = This is the own vmcast feed of the hypervisor $HOSTNAME
# hypervisor VMCast UUID (must be unique for entire plateform)
own_vmcast_uuid = %(archipel_general_uuid)s
# the url to access the vmcast
own_vmcast_url =
http://127.0.0.1:8088/vmcasts/# the file to GET
own_vmcast_file_name = rss.xml
# the langage of vmcast
own_vmcast_lang = en-us
# file system folder of vmcast
own_vmcast_path = %(archipel_folder_data)s/vmcasts/
# interval in second to refresh the content of the cast
own_vmcast_refresh_interval = 60
# supported disk extensions, separated by ";" containing the "."
# for example .qcow;.qcow2
disks_extensions = .qcow2;.qcow;.img;.iso
# If set to True, packaging process will gzip drives
# Gziping drive makes appliance creation longer but smaller
should_gzip_drives = True
# If set to true, package maker will ignore user request
# and will use value of should_gzip_drives token
ignore_user_gzip_choice = False
#
# iPhone Notification module configuration
#
[IPHONENOTIFICATION]
# put the credentials of users that will receive push notification right from your iPhone
# Credentials can be found at
https://www.appnotifications.com/account/rest_api# application can be buy at
http://2apn.com/# separate keys with double coma ",,"
credentials_key = YOUR CRED HERE
#
# OOM module configuration
#
[OOMKILLER]
# the sqlite3 db file to store OOM prevention informations
database = %(archipel_folder_lib)s/oom.sqlite3
#
# Scheduler module configuration
#
[SCHEDULER]
# the sqlite3 db file to store scheduler informations
database = %(archipel_folder_lib)s/scheduler.sqlite3
#
# XMPP Server module configuration
#
[XMPPSERVER]
# choose the if you wan to use the XMLRPC API to manage
# the XMPP Server administration. Note that using XMLRPC
# API need to compile and install ejabberd_xmlrpc module
# If it is set to False, we will use the XMPP API
use_xmlrpc_api = False
# XMLRPC API ONLY: The ejabberd XMLRPC server host
xmlrpc_host = %(xmpp_server)s
# XMLRPC API ONLY: The ejabberd XMLRPC server port
xmlrpc_port = 4560
# XMLRPC API ONLY : Use SSL for xmlrpc, need a ssl proxy as
# xmlrpc module does'nt hanle SSL. Read more information on the wiki
xmlrpc_sslonly = False
# XMLRPC API ONLY: The ejabberd XMLRPC server admin account
xmlrpc_user = admin
# XMLRPC API ONLY: The ejabberd XMLRPC server admin password
xmlrpc_password = password
# [OPTIONAL] if set to True, all new virtual machines will be added automatically
# in a shared roster group named like auto_group_name
auto_group = False
# [OPTIONAL] this is the name of the auto group if auto_group is set
# and is equal to True. auto_group_name_virtualmachines is for vms
# auto_group_name_hypervisors is for hypervisors. To put them all
# in the same group, just use the same name
auto_group_name_virtualmachines = All Virtual Machines
auto_group_name_hypervisors = All Hypervisors
# [OPTIONAL] this define what kind of entities will be automatically added
# to the auto group. Values can be "virtualmachines", "hypervisors" or "all".
# If this option is not set, "all" is the default
auto_group_filter = all
#
# VNC Pulgin configuration
#
[VNC]
# use this certificate fail for VNC screen connection.
# For unsecure connection, use "None". To quickly generate a certificate:
# openssl req -new -x509 -days 365 -nodes -out vnc.pem -keyout vnc.pem
#
# WARNING: THIS CERTIFICATE IS GIVEN AS EXAMPLE. IT IS NOT SECURED AT ALL
# TO USE IT AS EVERYBODY HAS THE SAME!!
vnc_certificate_file = /etc/archipel/vnc.pem
# if set to True, vnc server will not accept any non secure connection
vnc_only_ssl = False
# [OPTIONAL] If set to True, websocket debuging will be activated.
# Not tha websocket activation will be logged on STDOUT (not in archipel.log)
# You will need to launch 'runarchipel' manually, or remove the /dev/null
# redirection in Archipel init script
vnc_enable_websocket_debug = False
#
# NETWORK module configuration
#
[NETWORKS]
# path for libvirt network filters
libvirt_nw_filters_path = /etc/libvirt/nwfilter
#
# PARKING module configuration
#
[VMPARKING]
# path for shared parking database file
database = %(archipel_folder_data)s/shared_parking.sqlite3