fuel-ccp-installer/doc/source/inventory_repo.rst

2.3 KiB

Inventory and deployment data management

Deployment data and ansible inventory are represented as a git repository, either remote or local. It is cloned and being updated on the admin node's $ADMIN_WORKSPACE/inventory directory. The $ADMIN_WORKSPACE copies a value of a given $WORKSPACE env var (defaults to the current directory of the admin node). Or it takes a workspace, when the $ADMIN_IP refers to not a local admin node. For example, if it is a VM.

Installer passes that data and inventory to Kargo ansible installer.

For each inventory repo commit, it expects the following content of the repo root directory:

  • inventory.cfg - a mandatory inventory file. It must be created manually or generated based on $SLAVE_IPS provided with the helper script.
  • kargo_default_common.yaml - a mandatory vars file, overrides the kargo defaults in the $ADMIN_WORKSPACE/kargo/inventory/group_vars/all.yml) and defaults for roles.
  • kargo_default_ubuntu.yaml - a mandatory vars file for Ubuntu nodes, overrides the common file.
  • custom.yaml - not a mandatory vars file, overrides all vars.

Note, that the custom.yaml make all data vars defined inside to override same vars defined at other place. The data priority precedes as the following: kargo defaults, then common defaults, then ubuntu defaults, then custom YAML.

Final data decisions is done automatically by the installer:

  • If $INVENTORY_REPO is unset, make a local git repo and carry on and deploy.
  • Or clone the given repo and checkout to $INVENTORY_COMMIT, if any.
  • Copy installer defaults into the repo and decide on which data to accept:
  • If a file changes, do git reset (shall not overwrite a commited state).
  • If a new file, or has no changes, go with it (shall auto-populate defaults).
  • Stage only new files, if any, then commit and run deployment with Kargo.
  • If result is OK, submit changes as a gerrit review
  • Or fail deployment, as we usually would, don't submit anything to gerrit.

Ongoing inventory changes must be submitted by a user to $INVENTORY_REPO manually. Installer only initializes the repo during the initial install if it is missing.