Getting started

Initial configuration

By default git is used as VCS. This can be changed via the etckeeper__vcs variable through Ansible inventory.

The role is designed with etckeeper being already installed on a host in mind. This can be done for example via Debian Preseeding or LXC template installing and pre-configuring etckeeper; the role will keep the already existing configuration without any changes if the variables are not overwritten through the Ansible inventory. Any changes in the /etc/ directory will be automatically committed by Ansible local facts before Ansible role execution.

Example inventory

The debops.etckeeper role is part of the default DebOps playbook and run on all hosts which are part of the [debops_all_hosts] group. To use this role with DebOps it's therefore enough to add your host to the mentioned host group (which most likely it is already):

[debops_all_hosts]
hostname

Example playbook

Here's an example playbook that uses the debops.etckeeper role:

---

- name: Put /etc under version control using etckeeper
  collections: [ 'debops.debops', 'debops.roles01',
                 'debops.roles02', 'debops.roles03' ]
  hosts: [ 'debops_all_hosts', 'debops_service_etckeeper' ]
  become: True

  environment: '{{ inventory__environment | d({})
                   | combine(inventory__group_environment | d({}))
                   | combine(inventory__host_environment  | d({})) }}'

  roles:

    - role: apt_preferences
      tags: [ 'role::apt_preferences', 'skip::apt_preferences' ]
      apt_preferences__dependent_list:
        - '{{ etckeeper__apt_preferences__dependent_list }}'

    - role: etckeeper
      tags: [ 'role::etckeeper', 'skip::etckeeper' ]

Ansible tags

You can use Ansible --tags or --skip-tags parameters to limit what tasks are performed during Ansible run. This can be used after a host was first configured to speed up playbook execution, when you are sure that most of the configuration is already in the desired state.

Available role tags:

role::etckeeper

Main role tag, should be used in the playbook to execute all of the role tasks as well as role dependencies.