Site and Client Configuration¶
Teuthology requires several configuration options to be set, and provides many other optional ones. They are looked for in ~/.teuthology.yaml
if it exists, or /etc/teuthology.yaml
if it doesn’t.
Here is a sample configuration with many of the options set and documented:
# lab_domain: the domain name to append to all short hostnames
lab_domain: example.com
# The root directory to use for storage of all scheduled job logs and
# other data.
archive_base: /home/teuthworker/archive
# The default machine_type value to use when not specified. Currently
# only used by teuthology-suite.
default_machine_type: awesomebox
# Control how many machines need to be free in the cluster. 0 means
# Teuthology can use the entire cluster.
reserve_machines: 5
# The machine types currently in active use; currently only used by
# teuthology-exporter
active_machine_types: ['smithi']
# The host and port to use for the beanstalkd queue. This is required
# for scheduled jobs.
queue_host: localhost
queue_port: 11300
# The URL of the lock server (paddles). This is required for scheduled
# jobs.
lock_server: http://paddles.example.com:8080/
# The URL of the results server (paddles).
results_server: http://paddles.example.com:8080/
# This URL of the results UI server (pulpito). You must of course use
# paddles for pulpito to be useful.
results_ui_server: http://pulpito.example.com/
# Email address that will receive job results summaries.
results_email: ceph-qa@example.com
# Email address that job results summaries originate from
results_sending_email: teuthology@example.com
# How long (in seconds) teuthology-results should wait for jobs to finish
# before considering them 'hung'
results_timeout: 43200
# Gitbuilder archive that stores e.g. ceph packages
gitbuilder_host: gitbuilder.example.com
# URL for 'gitserver' helper web application
# see http://github.com/ceph/gitserver
githelper_base_url: http://git.ceph.com:8080
# Verify the packages signatures
check_package_signatures: true
# Where all git repos are considered to reside.
ceph_git_base_url: https://github.com/ceph/
# Where the ceph git repo is considered to reside.
ceph_git_url: https://github.com/ceph/ceph.git
# Where the ceph-qa-suite git repo is considered to reside.
ceph_qa_suite_git_url: https://github.com/ceph/ceph-qa-suite.git
# Where teuthology and ceph-qa-suite repos should be stored locally
src_base_path: /home/foo/src
# Where teuthology path is located: do not clone if present
#teuthology_path: .
# Whether or not teuthology-suite, when scheduling, should update
# itself from git. This is disabled by default.
automated_scheduling: false
# How often, in seconds, teuthology-supervisor should poll its child job
# processes
watchdog_interval: 120
# How old a scheduled job can be, in seconds, before the dispatcher
# considers it 'expired', skipping it.
max_job_age: 1209600
# How long a scheduled job should be allowed to run, in seconds, before
# it is killed by the supervisor process.
max_job_time: 259200
# The template from which the URL of the repository containing packages
# is built.
#
# {host} is 'gitbuilder_host' from .teuthology.yaml
# {proj} is the value of 'project' from the job yaml file or 'ceph'
# {flavor} is the value of 'flavor' from the job yaml file or 'default'
# {uri} is ref/tag if 'tag' is set in the job yaml file
# or ref/branch if 'branch' is set in the job yaml file
# or sha1/sha1 if 'sha1' is set in the job yaml file
# or ref/main
# {pkg_type} is either 'deb' or 'rpm' depending on the host on which the
# packages are to be installed
# {dist} If lsb_release -si is Fedora the value is:
# Fedora 20 => fc20
# Fedora 21 => fc21
# etc.
# If lsb_release -si is CentOS or RedHatEnterpriseServer it is
# CentOS 6.5 => centos6
# CentOS 7.0 => centos7
# CentOS 7.1 => centos7
# RedHatEnterpriseServer 6.4 => centos6
# RedHatEnterpriseServer 7.0 => centos7
# RedHatEnterpriseServer 7.1 => centos7
# etc.
# Everything else is whatever lsb_release -sc returns
# Ubuntu 12.04 => precise
# Ubuntu 14.04 => trusty
# Debian GNU/Linux 7.0 => wheezy
# Debian GNU/Linux 8.0 => jessie
# etc.
# {arch} is the output of the 'arch' command on the host on which
# the packages are to be installed
# i386
# x86_64
# armv7l
# etc.
baseurl_template: http://{host}/{proj}-{pkg_type}-{dist}-{arch}-{flavor}/{uri}
# If True, teuthology-suite verifies that a package matching the
# desired ceph branch exists in the gitbuilder. If False, no
# verification is done and teuthology-suite assumes the packages
# are either not necessary to run the task or they are created on
# demand.
suite_verify_ceph_hash: True
# If true, teuthology-suite will schedule jobs even if the required
# packages are not built.
suite_allow_missing_packages: False
# The rsync destination to upload the job results, when --upload is
# is provided to teuthology-suite.
#
archive_upload: ubuntu@teuthology-logs.public.ceph.com:./
# The path to the SSH private key for rsync to upload to archive_upload
#
archive_upload_key: None
# The public facing URL of the archive_upload location
#
archive_upload_url: http://teuthology-logs.public.ceph.com/
# The OpenStack backend configuration, a dictionary interpreted as follows
#
openstack:
# The teuthology-openstack command will clone teuthology with
# this command for the purpose of deploying teuthology from
# scratch and run workers listening on the openstack tube
#
clone: git clone http://github.com/ceph/teuthology
# The path to the user-data file used when creating a target. It can have
# the {os_type} and {os_version} placeholders which are replaced with
# the value of --os-type and --os-version. No instance of a give {os_type}
# and {os_version} combination can be created unless such a file exists.
#
user-data: teuthology/openstack/openstack-{os_type}-{os_version}-user-data.txt
# The IP number of the instance running the teuthology cluster. It will
# be used to build user facing URLs and should usually be the floating IP
# associated with the instance running the pulpito server.
#
ip: 8.4.8.4
# OpenStack has predefined machine sizes (called flavors)
# For a given job requiring N machines, the following example select
# the smallest flavor that satisfies these requirements. For instance
# If there are three flavors
#
# F1 (10GB disk, 2000MB RAM, 1CPU)
# F2 (100GB disk, 7000MB RAM, 1CPU)
# F3 (50GB disk, 7000MB RAM, 1CPU)
#
# and machine: { disk: 40, ram: 7000, cpus: 1 }, F3 will be chosen.
# F1 does not have enough RAM (2000 instead of the 7000 minimum) and
# although F2 satisfies all the requirements, it is larger than F3
# (100GB instead of 50GB) and presumably more expensive.
#
# This configuration applies to all instances created for teuthology jobs
# that do not redefine these values.
#
machine:
# The minimum root disk size of the flavor, in GB
#
disk: 20 # GB
# The minimum RAM size of the flavor, in MB
#
ram: 8000 # MB
# The minimum number of vCPUS of the flavor
#
cpus: 1
# The volumes attached to each instance. In the following example,
# three volumes of 10 GB will be created for each instance and
# will show as /dev/vdb, /dev/vdc and /dev/vdd
#
# This configuration applies to all instances created for teuthology jobs
# that do not redefine these values.
#
volumes:
# The number of volumes
#
count: 3
# The size of each volume, in GB
#
size: 10 # GB
# The host running a [PCP](http://pcp.io/) manager
pcp_host: http://pcp.front.sepia.ceph.com:44323/
# Settings for http://www.conserver.com/
use_conserver: true
conserver_master: conserver.front.sepia.ceph.com
conserver_port: 3109
# Optionally use a specific SSH private key to connect to test nodes.
# Takes precedence over any entries in ~/.ssh/config.
ssh_key: ~/.ssh/my_key.rsa
# Settings for [nsupdate-web](https://github.com/zmc/nsupdate-web)
# Used by the [libcloud](https://libcloud.apache.org/) backend
nsupdate_url: http://nsupdate.front.sepia.ceph.com/update
# Settings for https://fogproject.org/
fog:
endpoint: http://fog.example.com/fog
api_token: your_api_token
user_token: your_user_token
machine_types: ['mira', 'smithi']
# FOG provisioner is default and switching to Pelgas
# should be made explicitly
pelagos:
endpoint: http://head.ses.suse.de:5000/
machine_types: ['type1', 'type2', 'type3']
# Do not allow more than that many jobs in a single run by default.
# To disable this check use 0.
job_threshold: 500