Inventory Layouts

When generating an inventory, LinchPin provides some very flexible options. From the simple Layouts to much more complex options, detailed here.

inventory_file

New in version 1.5.2

When an layout is provided in the PinFile, LinchPin automatically generates a static inventory for Ansible. The inventory filename is dynamically generated based upon the name of the target and the uhash. However, the value can be overridden simply by adding the inventory_file option. The uhash can be disabled for all targets by setting the enable_uhash flag to False in linchpin.conf or for a subset of targets by using the --disable-uhash flag when running linchpin up and providing a comma-separated list of targets

---
inventory_layout:
  inventory_file: /path/to/dummy.inventory
  vars:
  .. snip ..

Using LinchPin or Ansible variables

New in version 1.5.2

It’s likely that the inventory file is based upon specific Linchpin (or Ansible) variables. In this case, the values need to be wrapped as raw values. This allows LinchPin to read the string in unparsed and pass it to the Ansible parser.

inventory_layout:
  inventory_file: "{% raw -%}{{ workspace }}/inventories/dummy-new-{{ uhash }}.inventory{%- endraw %}"

Using Environment variables

Additionally, using environment variables requires the raw values.

host_groups:
  all:
    vars:
      ansible_user: root
      ansible_private_key_file: |
          "{% raw -%}{{ lookup('env', 'TESTLP') | default('/tmp', true) }}/CSS/keystore/css-central{%- endraw %}"