# 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 # enables debug mode, which turns on debugging outputs for certain commands. #debug_mode = False # enable authentication debugging mode, where any task related to Linchpin # authentication will allow logging in verbose mode. # Note that this feature may cause secret keys to be leaked and therefore # should not be used in production. #auth_debug = True # 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 (/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 = {{ workspace }}/inventories/ # 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 # The location where default resources will be dumped. This path doesn't # automatically exist #default_resources_path = {{ workspace }}/%(resources_folder)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 # Enables vault encryption #vault_encryption = False # Default vault password other than Environment var VAULT_PASSWORD #vault_pass = '' # Deafault number of retries on async timeout #async_retries = 60 # 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 settings for the `linchpin fetch` command #[fetch] # If desired, disable the caching functionality #cache_ws = True # How long before an update to the destination workspace from the cache #cache_days = 1 # 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 #This section controls hooks behaviour #[hookflags] # no hooks are run when set to True #no_hooks = False # Failure of one hook does not effect other hook run when set to True #ignore_failed_hooks = False