From 690362715081fc16154d24f5c98fac45cd7762d0 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Fri, 1 Sep 2023 15:42:25 -0400 Subject: [PATCH] Add additional items to base role Backups, GRUB configuration, and IPMI configuration. --- roles/base/tasks/main.yml | 56 +++++++++++++++++++ .../templates/etc/cron.daily/pvc-backup.j2 | 15 +++++ roles/base/templates/etc/default/grub.j2 | 10 ++++ .../etc/network/interfaces.d/ipmi.j2 | 5 ++ 4 files changed, 86 insertions(+) create mode 100755 roles/base/templates/etc/cron.daily/pvc-backup.j2 create mode 100644 roles/base/templates/etc/default/grub.j2 create mode 100644 roles/base/templates/etc/network/interfaces.d/ipmi.j2 diff --git a/roles/base/tasks/main.yml b/roles/base/tasks/main.yml index 025c8b0..13d651e 100644 --- a/roles/base/tasks/main.yml +++ b/roles/base/tasks/main.yml @@ -513,6 +513,62 @@ - ownership tags: base-cmkagent +# backups +- name: create backup directory + file: + dest: /srv/backups + state: directory + tags: base-backups + +- name: install daily backup script + template: + src: etc/cron.daily/pvc-backup.j2 + dest: /etc/cron.daily/pvc-backup + mode: 0755 + tags: base-backups + +- name: install GRUB configuration + template: + src: etc/default/grub.j2 + dest: /etc/default/grub + notify: + - update grub + tags: base-grub + +- name: install IPMI network interfaces fragment + template: + src: etc/network/interfaces.d/ipmi.j2 + dest: /etc/network/interfaces.d/ipmi + tags: base-ipmi + +- name: configure IPMI username + command: "ipmitool user set name {{ ipmi_user_configuration[cluster_hardware][item]['id'] }} {{ ipmi_user_configuration[cluster_hardware][item]['username'] }}" + with_items: + - "admin" + - "pvc" + tags: base-ipmi + +- name: configure IPMI password + command: "ipmitool user set password {{ ipmi_user_configuration[cluster_hardware][item]['id'] }} {{ ipmi_user_configuration[cluster_hardware][item]['password'] }}" + with_items: + - "admin" + - "pvc" + tags: base-ipmi + +- name: configure IPMI role + command: "ipmitool user priv {{ ipmi_user_configuration[cluster_hardware][item]['id'] }} {{ ipmi_user_configuration[cluster_hardware][item]['role'] }} {{ ipmi_user_configuration[cluster_hardware]['channel'] }}" + with_items: + - "admin" + - "pvc" + tags: base-ipmi + +- name: enable IPMI user + command: "ipmitool user enable {{ ipmi_user_configuration[cluster_hardware][item]['id'] }}" + with_items: + - "admin" + - "pvc" + tags: base-ipmi + # # Configure users # diff --git a/roles/base/templates/etc/cron.daily/pvc-backup.j2 b/roles/base/templates/etc/cron.daily/pvc-backup.j2 new file mode 100755 index 0000000..524011b --- /dev/null +++ b/roles/base/templates/etc/cron.daily/pvc-backup.j2 @@ -0,0 +1,15 @@ +#!/bin/bash + +# Backup the PVC Zookeeper database +# {{ ansible_managed }} + +set -o errexit + +BACKUP_DIR="/srv/backups/" +BACKUP_FILENAME_BASE="pvc-zookeeper-backup" +DATE="$( date +%Y%m%d )" +BACKUP_FILENAME="${BACKUP_DIR}/${BACKUP_FILENAME_BASE}.${DATE}.json" + +pvc -c local task backup > ${BACKUP_FILENAME} +xz ${BACKUP_FILENAME} +find ${BACKUP_DIR} -type f -name "${BACKUP_FILENAME_BASE}*" -mtime +7 -exec rm {} \; diff --git a/roles/base/templates/etc/default/grub.j2 b/roles/base/templates/etc/default/grub.j2 new file mode 100644 index 0000000..a5315dd --- /dev/null +++ b/roles/base/templates/etc/default/grub.j2 @@ -0,0 +1,10 @@ +# GRUB configuration +# {{ ansible_managed }} +GRUB_DEFAULT=0 +GRUB_TIMEOUT=5 +GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` +GRUB_CMDLINE_LINUX_DEFAULT="{{ grub_cmdline_default }}" +GRUB_CMDLINE_LINUX="" +GRUB_TERMINAL_INPUT="console serial" +GRUB_TERMINAL_OUTPUT="gfxterm serial" +GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200" diff --git a/roles/base/templates/etc/network/interfaces.d/ipmi.j2 b/roles/base/templates/etc/network/interfaces.d/ipmi.j2 new file mode 100644 index 0000000..42ab066 --- /dev/null +++ b/roles/base/templates/etc/network/interfaces.d/ipmi.j2 @@ -0,0 +1,5 @@ +iface ipmi inet manual + pre-up ipmitool lan set 1 ipsrc static + pre-up ipmitool lan set 1 ipaddr {{ ipmi['hosts'][ansible_hostname]['address'] }} + pre-up ipmitool lan set 1 netmask {{ ipmi['hosts'][ansible_hostname]['netmask'] }} + pre-up ipmitool lan set 1 defgw ipaddr {{ ipmi['hosts'][ansible_hostname]['gateway'] }}