=========================
Role - backup-and-restore
=========================

.. ansibleautoplugin::
  :role: tripleo_ansible/roles/backup-and-restore

Usage
~~~~~

This Ansible role allows to
do the following tasks:

1. Install an NFS server.
2. Install ReaR.
3. Perform a ReaR backup.


This example is meant to describe a very simple
use case in which the user needs to create a set
of recovery images from the control plane nodes.

First, the user needs to have access to the
environment Ansible inventory.

We will use the *tripleo-ansible-inventory*
command to generate the inventory file.

::

  tripleo-ansible-inventory \
    --ansible_ssh_user heat-admin \
    --static-yaml-inventory ~/tripleo-inventory.yaml

In this particular case, we don't have an additional
NFS server to store the backups from the control plane nodes,
so, we will install the NFS server in the Undercloud node
(but any other node can be used as the NFS storage backend).

First, we need to create an Ansible playbook to
specify that we will install the NFS server in the
Undercloud node.

::

  cat <<'EOF' > ~/bar_nfs_setup.yaml
  # Playbook
  # We will setup the NFS node in the Undercloud node
  # (we don't have any other place at the moment to do this)
  - become: true
    hosts: undercloud
    name: Setup NFS server for ReaR
    roles:
    - role: backup-and-restore
  EOF

Then, we will create another playbook to determine the location
in which we will like to install ReaR.

::

  cat <<'EOF' > ~/bar_rear_setup.yaml
  # Playbook
  # We install and configure ReaR in the control plane nodes
  # As they are the only nodes we will like to backup now.
  - become: true
    hosts: Controller
    name: Install ReaR
    roles:
    - role: backup-and-restore
  EOF

Now we create the playbook to create the actual backup.

::

  cat <<'EOF' > ~/bar_rear_create_restore_images.yaml
  # Playbook
  # We run ReaR in the control plane nodes.
  - become: true
    hosts: ceph_mon
    name: Backup ceph authentication
    tasks:
      - name: Backup ceph authentication role
        include_role:
          name: backup-and-restore
          tasks_from: ceph_authentication
        tags:
        -  bar_create_recover_image

  - become: true
    hosts: Controller
    name: Create the recovery images for the control plane
    roles:
    - role: backup-and-restore
  EOF

The last step is to run the previously create playbooks
filtering by the corresponding tag.

First, we configure the NFS server.

::

  # Configure NFS server in the Undercloud node
  ansible-playbook \
      -v -i ~/tripleo-inventory.yaml \
      --extra="ansible_ssh_common_args='-o StrictHostKeyChecking=no'" \
      --become \
      --become-user root \
      --tags bar_setup_nfs_server \
      ~/bar_nfs_setup.yaml

Then, we install ReaR in the desired nodes.

::

  # Configure ReaR in the control plane
  ansible-playbook \
      -v -i ~/tripleo-inventory.yaml \
      --extra="ansible_ssh_common_args='-o StrictHostKeyChecking=no'" \
      --become \
      --become-user root \
      --tags bar_setup_rear \
      ~/bar_rear_setup.yaml

Lastly, we execute the actual backup step. With or without ceph.

::

  # Create recovery images of the control plane
  ansible-playbook \
      -v -i ~/tripleo-inventory.yaml \
      --extra="ansible_ssh_common_args='-o StrictHostKeyChecking=no'" \
      --become \
      --become-user root \
      --tags bar_create_recover_image \
      ~/bar_rear_create_restore_images.yaml
