tripleo-ansible/tripleo_ansible/roles/backup_and_restore/tasks/setup_rear.yml

151 lines
4.6 KiB
YAML

---
# Copyright 2019 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# "backup_and_restore" will search for and load any operating system variable file
# found within the "vars/" path. If no OS files are found the task will skip.
- name: Gather variables for each operating system
include_vars: "{{ item }}"
with_first_found:
- skip: true
files:
- "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_version'] | lower }}.yml"
- "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml"
- "{{ ansible_facts['os_family'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml"
- "{{ ansible_facts['distribution'] | lower }}.yml"
- "{{ ansible_facts['os_family'] | lower }}-{{ ansible_facts['distribution_version'].split('.')[0] }}.yml"
- "{{ ansible_facts['os_family'] | lower }}.yml"
tags:
- always
- name: Install required packages for ReaR
become: true
package:
name: "{{ tripleo_backup_and_restore_rear_packages }}"
state: present
tags:
- bar_setup_rear
- name: Remove ReaR rpm default cron programming
become: true
file:
path: /etc/cron.d/rear
state: absent
when: tripleo_backup_and_restore_remove_default_cronjob | bool
tags:
- bar_setup_rear
- name: Get local hostname
command: hostname
register: tripleo_backup_and_restore_hostname
when: tripleo_backup_and_restore_hostname is undefined
tags:
- bar_setup_rear
- name: Set bootstrap nodeid
become: true
register: tripleo_backup_and_restore_bootstrap_nodeid
command: |
hiera -c {{ tripleo_backup_and_restore_hiera_config_file }} 'mysql_short_bootstrap_node_name'
tags:
- bar_setup_rear
- name: List enabled services by node
become: true
register: tripleo_backup_and_restore_enabled_services
command: |
hiera -c {{ tripleo_backup_and_restore_hiera_config_file }} 'service_names'
tags:
- bar_setup_rear
- name: Calculate exclude paths
set_fact:
tripleo_backup_and_restore_exclude_paths:
- "{{ tripleo_backup_and_restore_exclude_paths_common }}"
- "{{ (tripleo_backup_and_restore_enabled_services.stdout is search('nova_compute')) |
ternary(tripleo_backup_and_restore_exclude_paths_compute, []) }}"
- "{{ (tripleo_backup_and_restore_bootstrap_nodeid.stdout != tripleo_backup_and_restore_hostname.stdout and
tripleo_backup_and_restore_enabled_services.stdout is search('pacemaker') and
tripleo_backup_and_restore_enabled_services.stdout is search('mysql') and
tripleo_backup_and_restore_exclude_paths_controller_non_bootrapnode|bool) |
ternary(tripleo_backup_and_restore_exclude_paths_controller, []) }}"
tags:
- bar_setup_rear
- name: Check NFS server IP
command: ping -c 1 '{{ tripleo_backup_and_restore_nfs_server }}'
when: not (tripleo_backup_and_restore_skip_nfs_test | bool)
tags:
- bar_setup_rear
- name: Generate ReaR config file
become: true
template:
src: local.conf.j2
dest: /etc/rear/local.conf
owner: root
group: root
mode: '0644'
backup: true
tags:
- bar_setup_rear
- name: Generate ReaR rescue file
become: true
template:
src: rescue.conf.j2
dest: /etc/rear/rescue.conf
owner: root
group: root
mode: '0644'
backup: true
tags:
- bar_setup_rear
- name: Load rear config
become: true
slurp:
src: /etc/rear/local.conf
register: rear_config
tags:
- bar_setup_rear
- name: Extract OUTPUT_URL from rear config
set_fact:
output_url: "{{ rear_config.content | b64decode | regex_findall('OUTPUT_URL=(.+)') | first }}"
tags:
- bar_setup_rear
- name: Check if this is a SFTP backup
set_fact:
sftp_backup: "{{ output_url is search ('sftp://') }}"
tags:
- bar_setup_rear
- name: Extract the SFTP hostname
set_fact:
sftp_host: "{{ output_url | regex_search('(?<=@)(.*?)(?=/)') }}"
when: sftp_backup
tags:
- bar_setup_rear
- name: Retrieve host ssh fingerprint
shell: "ssh-keyscan -H {{ sftp_host }} >> ~/.ssh/known_hosts"
when: sftp_backup
tags:
- bar_setup_rear