# This file is a well-documented, and commented out (mostly) file, which
# covers the configuration options available in LinchPin
#
# Used to override default configuration settings for LinchPin
# Defaults exist in linchpin/linchpin.constants file
#
# Uncommented options enable features found in v1.5.1 or newer and
# can be turned off by commenting them out.
#
# structured in INI style
# use %% to allow code interpolation
# use % to use config interpolation
#
[DEFAULT]
# name of the python package (Redundant, but easier than programmatically
# obtaining the value. It's very unlikely to change.)
pkg = linchpin
# Useful for storing the RunDB or other components like global credentials
# travis-ci doesn't like ~/.config/linchpin, use /tmp
#default_config_path = ~/.config/linchpin
# When creating an provider not already included in LinchPin, this path
# extends where LinchPin will look to run the appropriate playbooks
#external_providers_path = %(default_config_path)s/linchpin-x
# When adding anything to the lp section, it should be general for
# the entire application.
[lp]
# load custom ansible modules from here
#module_folder = library
# rundb tracks provisioning transactions
# If you add a new one, rundb/drivers.py needs to be updated to match
# rundb_conn is the location of the run database.
# A common reason to move it is to use the rundb centrally across
# the entire system, or in a central db on a shared filesystem.
# System-wide RunDB: rundb_conn = ~/.config/linchpin/rundb-::mac::.json
#rundb_conn = {{ workspace }}/.rundb/rundb-::mac::.json
rundb_conn = ~/.config/linchpin/rundb-::mac::.json
# name the type of Run database. Currently only TinyRunDB exists
#rundb_type = TinyRunDB
# How to connect to the RunDB, if it's on a separate server,
# it may be tcp or ssh
#rundb_conn_type = file
# The schema is used because TinyDB is a NoSQL db. Another DB
# may use this as a way to manage fields in a specific table.
#rundb_schema = {"action": "",
# "inputs": [],
# "outputs": [],
# "start": "",
# "end": "",
# "rc": 0,
# "uhash": ""}
# each entry in the RunDB contains a unique-ish hash (uhash). This
# sets the hashing mechanism used to generate the uhash.
#rundb_hash = sha256
# The default dateformat used in LinchPin. Specifically used in the
# RunDB for recording start and end dates, but also used elsewhere.
#dateformat = %%m/%%d/%%Y %%I:%%M:%%S %%p
# The name of the pinfile. Someone could adjust this and use TopFile
# or somesuch. The ramifications of this would mean that the file in
# the workspace that linchpin reads would change to this value.
#default_pinfile = PinFile
# By default, whenever linchpin performs an action
# (linchpin up/linchpin destroy), the data is read from the PinFile.
# Enabling 'use_rundb_for_actions' will allow destroy and certain up
# actions (specifically when using --run-id or --tx-id) to pull data
# from the RunDB instead.
#use_rundb_for_actions = False
use_rundb_for_actions = True
# A user can request specific data distilled from the RunDB. This flag
# enables the Context Distiller.
# NOTE: This flag requires generate_resources = False.
#distill_data = False
distill_data = True
# If desired, enabling distill_on_error will distill any successfully (and
# possibly failed) provisioned resources. This is predicated on the data
# being written to the RunDB (usually means _async tasks may never record
# data upon failure).
distill_on_error = False
# User can make linchpin use the actual return codes for final return code
# if enabled True, even if one target provision is successfull linchpin
# returns exit code zero else returns the sum of all the return codes
# use_actual_rcs = False
# LinchPin sets several extra_vars (evars) that are passed to the playbooks.
# This section controls those items.
[evars]
# enables the ansible --check option
# _check_mode = False
# enables the ansible async ability. For some providers, it allows multiple
# provisioning tasks to happen at once, then will collect the data afterward.
# The default is perform the provision actions in serial.
#_async = False
# How long to wait before failing (in seconds) for an async task.
#async_timeout = 1000
# the uhash value will still exist, but will not be added to
# instances or the inventory_path
#enable_uhash = False
enable_uhash = True
# in older versions of linchpin (<v1.0.4), a resources folder exists, which
# dumped the data that is now stored in the RunDB. To disable the resources
# output, set the value to False.
#generate_resources = True
generate_resources = False
# default paths in playbooks
#
# lp_path = <src_dir>/linchpin
# determined in the load_config method of # linchpin.cli.LinchpinCliContext
# Each of the following items controls the path (usually along with the
# default values below) to the corresponding item.
# In the workspace (generally), this is the location of the layouts and
# topologies looked up by the PinFile. If either of these change, the
# value in linchpin/templates must also change.
#layouts_folder = layouts
#topologies_folder = topologies
# The relative location for hooks
#hooks_folder = hooks
# The relative location for provider roles
#roles_folder = roles
# The relative location for storing inventories
#inventories_folder = inventories
# The relative location for resources output (deprecated)
#resources_folder = resources
# The relative location to find schemas (deprecated)
#schemas_folder = schemas
# The relative location to find playbooks
#playbooks_folder = provision
# The default path to schemas for validation (deprecated)
#default_schemas_path = {{ lp_path }}/defaults/%(schemas_folder)s
# The default path to topologies if they aren't in the workspace
#default_topologies_path = {{ lp_path }}/defaults/%(topologies_folder)s
# The default path to inventory layouts if they aren't in the workspace
#default_layouts_path = {{ lp_path }}/defaults/%(layouts_folder)s
# The default path for outputting ansible static inventories
#default_inventories_path = {{ lp_path }}/defaults/%(inventories_folder)s
# The default path to the ansible roles which control the providers
#default_roles_path = {{ lp_path }}/%(playbooks_folder)s/%(roles_folder)s
# In older versions (<1.2.x), the schema was held here. These schemas are
# deprecated.
#schema_v3 = %(default_schemas_path)s/schema_v3.json
#schema_v4 = %(default_schemas_path)s/schema_v4.json
# The location where default credentials data would exist. This path doesn't
# automatically exist
#default_credentials_path = %(default_config_path)s
# If desired, one could overwrite the location of the generated inventory path
#inventory_path = {{ workspace }}/{{inventories_folder}}/happy.inventory
# Libvirt images can be stored almost anywhere (not /tmp).
# Unprivileged users need not setup sudo to manage a path to which they have rights.
# The following are specific settings to manage libvirt images and instances
# the location to store generated ssh keys and the like
#default_ssh_key_path = ~/.ssh
# Where to store the libvirt images for copying/booting instances
#libvirt_image_path = /var/lib/libvirt/images/
# What user to use to access libvirt.
# Using root means sudo without password must be setup
#libvirt_user = root
# When using root or any privileged user, this must be set to yes.
# sudo without password must also be setup
#libvirt_become = yes
# This section covers settings for the `linchpin init` command
#[init]
# source path of files generated by linchpin init
#source = templates/
# formal name of the generated PinFile. Can be changed as desired.
#pinfile = PinFile
# This section covers logging setup
[logger]
# Turns off and on the logger functionality
#enable = True
# Full path to the location of the linchpin log file
file = ~/.config/linchpin/linchpin.log
# Log format used. See https://docs.python.org/2/howto/logging-cookbook.html
#format = %%(levelname)s %%(asctime)s %%(message)s
# Date format used. See https://docs.python.org/2/howto/logging-cookbook.html
#dateformat = %%m/%%d/%%Y %%I:%%M:%%S %%p
# Level of logging provided
#level = logging.DEBUG
# Logging to the console via STDERR
#[console]
# logging to the console should also be possible
# NOTE: Placeholder only, cannot disable.
#enable = True
# Log format used. See https://docs.python.org/2/howto/logging-cookbook.html
#format = %%(message)s
# Level of logging provided
#level = logging.INFO
# LinchPin hooks have several states depending on the action. Currently, there
# are three hook states relating to tasks being completed.
# * up - when performing the up (provision) action
# * destroy - when performing the destroy (teardown) action
# * inv - when performing the internal inventory generation action
# (currently unimplemented)
#[hookstates]
# when performing the up action, these hooks states are run
#up = pre,post,inv
# when performing the inv action, these hooks states are run
#inv = post
# when performing the destroy action, these hooks states are run
#destroy = pre,post
# This section covers file extensions for generating or looking
# up specific files
#[extensions]
# When looking for provider playbooks, use this extension
#playbooks = .yml
# When generating inventory files, use this extension
#inventory = .inventory
# This section controls the ansible settings for display or other settings
#[ansible]
# If set to true, this enables verbose output automatically to the screen.
# This is equivalent of passing `-v` to the linchpin command line shell.
#console = False
# When linchpin is run, certain states are called at certain points along the
# execution timeline. These STATES are defined below.
#[states]
# in future each state will have comma separated substates
# The name of the state which occurs before (pre) provisioning (up)
#preup = preup
# The name of the state which occurs before (pre) teardown (destroy)
#predestroy = predestroy
# The name of the state which occurs after (post) provisioning (up)
#postup = postup
# The name of the state which occurs after (pre) teardown (destroy)
#postdestroy = postdestroy
# The name of the state which occurs after (post) inventory is generated (inv)
#postinv = inventory