System Paasta Configs
The “System Paasta Configs” inform Paasta about your environment and cluster setup, such as how to connect to Kubernetes/hacheck/etc, what the cluster name is, etc.
Structure
By default, the System Paasta Configs are read by merging all files under /etc/paasta
that end with .json
.
You can override this path by setting the PAASTA_SYSTEM_CONFIG_DIR
environment variable.
This directory is searched recursively, so you may put configuration files in subdirectories as desired.
The dictionaries described by each of these JSON files are deep merged when the config is loaded. If there
are overlapping keys in different files the last file will win.
If a file has permissions that prevent us from reading it, then that file will be ignored. This is useful for credentials that only some users or scripts need access to.
See load_system_paasta_config for more details on how system configs are loaded.
Configuration options
These are the keys that may exist in system configs:
docker_registry
: The name of the docker registry where PaaSTA images will be stored. This can optionally be set on a per-service level as well, see yelpsoa_configs Example:"docker_registry": "docker-paasta.yelpcorp.com:443"
volumes
: The list of volumes that should be bind-mounted into application containers by default. Each volume should have attributeshostPath
,containerPath
, andmode
(which can be RO or RW). Example:"volumes": [{"hostPath": "/foo", "containerPath": "/foo", "mode": "RO"}]
cluster
: The name of the cluster this node is on. Example:"cluster": "uswest1-prod"
dashboard_links
: A nested dictionary of cluster -> description -> URL of dashboard links. Example:"dashboard_links": { "norcal-devc": { "Tron": "http://y/tron-norcal-devc", } }
fsm_template
: A path to a cookiecutter template directory forpaasta fsm
. Defaults topaasta_tools/cli/fsm/template
, relative to the installed path of Paasta.
log_writer
: Configuration for how to write per-service logs. This should be a dictionary with two keys:driver
andoptions
.driver
is a string specifying which log writer you want to use.options
is a dictionary, but the values depend on the arguments to the driver you chose.There are currently three log_writer drivers available:
scribe
,file
, andnull
.Example:
"log_writer": { "driver": "file", "options": { "path_format": "/var/log/paasta_logs/{service}.log" } }
log_reader
: Configuration for howpaasta logs
should read logs. This should be a dictionary with two keys:driver
andoptions
.driver
is a string specifying which log reader you want to use.options
is a dictionary, but the values depend on the arguments to the driver you chose.There is currently one log_reader driver available:
scribereader
, which only really works at Yelp. Sorry.Example:
"log_reader": { "driver": "scribereader", "options": { "cluster_map": { "uswest1-prod": "sfo2", } } }
sensu_host
: The hostname or IP address of a Sensu client that we should send events to. Defaults tolocalhost
.Example:
"sensu_host": "169.254.255.254"
sensu_port
: The port number of a Sensu client that we should send events to. Defaults to3030
.Example:
"sensu_port": 3031
synapse_port
: The port that haproxy-synapse exposes its status on. Defaults to3212
.Example:
"synapse_port": 3213
synapse_host
: The default host that PaaSTA should interrogate for haproxy-synapse state. Defaults tolocalhost
.Example:
"synapse_host": 169.254.255.254
synapse_haproxy_url_format
: A python format string for constructing the URL of haproxy-synapse’s status page. This format string gets two parameters,host
andport
. Defaults to"http://{host:s}:{port:d}/;csv;norefresh".
Example:
"synapse_haproxy_url_format": "http://{host:s}:{port:d}/status"
cluster_fqdn_format
: A python format string for constructing a hostname that resolves to the masters for a given cluster. This format string gets one parameter:cluster
. This is used bypaasta status
to know where to SSH to runpaasta_serviceinit
. Defaults topaasta-{cluster:s}.yelp
.Example:
"cluster_fqdn_format": "paasta-{cluster:s}.service.dc1.consul"