Chapter 1. Backing up the undercloud node
To back up the undercloud node, you configure the backup node, install the Relax-and-Recover tool on the undercloud node, and create the backup image. You can create backups as a part of your regular environment maintenance.
In addition, you must back up the undercloud node before performing updates or upgrades. You can use the backups to restore the undercloud node to its previous state if an error occurs during an update or upgrade.
1.1. Supported backup formats and protocols
The undercloud and backup and restore process uses the open-source tool Relax-and-Recover (ReaR) to create and restore bootable backup images. ReaR is written in Bash and supports multiple image formats and multiple transport protocols.
The following list shows the backup formats and protocols that Red Hat OpenStack Platform supports.
- Bootable media formats
- ISO
- File transport protocols
- SFTP
- NFS
1.2. Installing and configuring an NFS server on the backup node
You can install and configure a new NFS server to store the backup file. To install and configure an NFS server on the backup node, create an inventory file, set up an SSH key, and run the openstack undercloud backup
command with the NFS server options.
- If you previously installed and configured an NFS or SFTP server, you do not need to complete this procedure. You enter the server information when you set up ReaR on the node that you want to back up.
-
By default, the Relax and Recover (ReaR) configuration assumes that the IP address of the NFS server is
192.168.24.1
. If your NFS server has a different IP address, add the parametertripleo_backup_and_restore_server
to the setup ReaR command.
Procedure
On the undercloud node, source the undercloud credentials:
[stack@undercloud ~]$ source stackrc (undercloud) [stack@undercloud ~]$
On the undercloud node, create an inventory file for the backup node and replace the
<ip_address>
and<user>
with the values that apply to your environment:(undercloud) [stack@undercloud ~]$ cat <<'EOF'> ~/nfs-inventory.yaml [BackupNode] <backup_node> ansible_host=<ip_address> ansible_user=<user> EOF
On the undercloud node, create the following Ansible playbook and replace
<backup_node>
with the host name of the backup node:(undercloud) [stack@undercloud ~]$ cat <<'EOF' > ~/bar_nfs_setup.yaml # Playbook # Substitute <backup_node> with the host name of your backup node. - become: true hosts: <backup_node> name: Setup NFS server for ReaR roles: - role: backup-and-restore EOF
Copy the public SSH key from the undercloud node to the backup node.
(undercloud) [stack@undercloud ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <backup_node>
Replace
<backup_node>
with the path and name of the backup node.On the undercloud node, enter the following
ansible-playbook
commands to configure the backup node:(undercloud) [stack@undercloud ~]$ ansible-playbook \ -v -i ~/nfs-inventory.yaml \ --extra="ansible_ssh_common_args='-o StrictHostKeyChecking=no'" \ --become \ --become-user root \ --tags bar_setup_nfs_server \ ~/bar_nfs_setup.yaml
1.3. Installing ReaR on the undercloud node
Before you create a backup of the undercloud node, install and configure Relax and Recover (ReaR) on the undercloud.
Prerequisites
- You have an NFS or SFTP server installed and configured on the backup node. For more information about creating a new NFS server, see Section 1.2, “Installing and configuring an NFS server on the backup node”.
Procedure
On the undercloud node, source the undercloud credentials and use the
tripleo-ansible-inventory
command to generate a static inventory file that contains hosts and variables for all the overcloud nodes:[stack@undercloud ~]$ source stackrc (undercloud) [stack@undercloud ~]$ tripleo-ansible-inventory \ --ansible_ssh_user heat-admin \ --static-yaml-inventory /home/stack/tripleo-inventory.yaml
If you use a custom stack name, add the
--stack <stack_name>
option to thetripleo-ansible-inventory
command.On the undercloud node, create the following Ansible playbook:
(undercloud) [stack@undercloud ~]$ cat <<'EOF' > ~/bar_rear_setup-undercloud.yaml # Playbook # Installing and configuring ReaR on the undercloud node - become: true hosts: undercloud name: Install ReaR roles: - role: backup-and-restore EOF
Choose one of the following options:
If you use NFS, enter the following Ansible command to install ReaR on the undercloud node:
(undercloud) [stack@undercloud ~]$ ansible-playbook \ -v -i ~/tripleo-inventory.yaml \ --extra="ansible_ssh_common_args='-o StrictHostKeyChecking=no'" \ --become \ --become-user root \ -e tripleo_backup_and_restore_server=<nfs-ip> \ --tags bar_setup_rear \ ~/bar_rear_setup-undercloud.yaml
If you use SFTP, enter the following Ansible command to install ReaR on the undercloud node:
(undercloud) [stack@undercloud ~]$ ansible-playbook \ -v -i ~/tripleo-inventory.yaml \ --extra="ansible_ssh_common_args='-o StrictHostKeyChecking=no'" \ --become \ --become-user root \ -e tripleo_backup_and_restore_output_url=sftp://<user>:<password>@<backup_node_ip>/ \ -e tripleo_backup_and_restore_backup_url=iso:///backup/ \ --tags bar_setup_rear \ ~/bar_rear_setup-undercloud.yaml
If your system uses the UEFI boot loader, perform the following steps on the undercloud node:
Install the following tools:
$ sudo dnf install dosfstools efibootmgr
-
Enable UEFI backup in the ReaR configuration file located in
/etc/rear/local.conf
by replacing theUSING_UEFI_BOOTLOADER
parameter value0
with the value1
.
1.4. Configuring Open vSwitch (OVS) interfaces for backup
If you use an Open vSwitch (OVS) bridge in your environment, you must manually configure the OVS interfaces before you create a backup of the undercloud or control plane nodes. The restoration process uses this information to restore the network interfaces.
Procedure
In the
/etc/rear/local.conf
file, add theNETWORKING_PREPARATION_COMMANDS
parameter in the following format:NETWORKING_PREPARATION_COMMANDS=('<command_1>' '<command_2>' ...')
Replace
<command_1>
and<command_2>
with commands that configure the network interface names or IP addresses. For example, you can add theip link add br-ctlplane type bridge
command to configure the control plane bridge name or add theip link set eth0 up
command to set the name of the interface. You can add more commands to the parameter based on your network configuration.
1.5. Creating a backup of the undercloud node
To create a backup of the undercloud node, use the backup-and-restore
Ansible role. You can then use the backup to restore the undercloud node to its previous state in case the node becomes corrupted or inaccessible. The backup of the undercloud node includes the backup of the database that runs on the undercloud node.
Prerequisites
- You have an NFS or SFTP server installed and configured on the backup node. For more information about creating a new NFS server, see Section 1.2, “Installing and configuring an NFS server on the backup node”.
- You have installed ReaR on the undercloud node. For more information, see Section 1.3, “Installing ReaR on the undercloud node”.
- If you use an OVS bridge for your network interfaces, you have configured the OVS interfaces. For more information, see Section 1.4, “Configuring Open vSwitch (OVS) interfaces for backup”.
Procedure
-
Log in to the undercloud as the
stack
user. Retrieve the MySQL root password:
[stack@undercloud ~]$ PASSWORD=$(sudo /bin/hiera -c /etc/puppet/hiera.yaml mysql::server::root_password)
Create a database backup of the undercloud node:
[stack@undercloud ~]$ sudo podman exec mysql bash -c "mysqldump -uroot -p$PASSWORD --opt --all-databases" | sudo tee /root/undercloud-all-databases.sql
Source the undercloud credentials:
[stack@undercloud ~]$ source stackrc
On the undercloud node, create the following Ansible playbook:
(undercloud) [stack@undercloud ~]$ cat <<'EOF' > ~/bar_rear_create_restore_images-undercloud.yaml # Playbook # Using ReaR on the undercloud node. - become: true hosts: undercloud name: Create the recovery images for the undercloud roles: - role: backup-and-restore EOF
To create a backup of the undercloud node, enter the following
ansible-playbook
command:(undercloud) [stack@undercloud ~]$ 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-undercloud.yaml