ansible-playbooks/playbookconfig/src/playbooks/roles/bootstrap/persist-config/tasks/one_time_config_tasks.yml

140 lines
4.2 KiB
YAML

---
#
# Copyright (c) 2019 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# SUB-TASKS DESCRIPTION:
# - Save Postgres config to replicated filesystem for mate
# - Save branding config to replicated filesystem
# - Set up symlink for PXE boot
# - Add default security feature to kernel command line parameters
# - Resize some filesytems
#
- name: Set Postgres, PXE, branding config directory fact
set_fact:
postgres_config_dir: "{{ config_permdir + '/postgresql' }}"
pxe_config_dir: "{{ config_permdir + '/pxelinux.cfg' }}"
branding_config_dir: "{{ config_permdir + '/branding' }}"
- debug:
msg: >-
postgres_config_dir: {{ postgres_config_dir }}
pxe_config_dir: {{ pxe_config_dir }}
branding_config_dir: {{ branding_config_dir }}
- name: Ensure Postres, PXE config directories exist
file:
path: "{{ item }}"
state: directory
recurse: yes
owner: root
group: root
mode: 0755
with_items:
- "{{ postgres_config_dir }}"
- "{{ pxe_config_dir }}"
- name: Get list of Postgres conf files
find:
paths: /etc/postgresql
patterns: '*.conf'
register: postgres_result
- name: Copy postgres conf files for mate
copy:
src: "{{ item.path }}"
dest: "{{ postgres_config_dir }}"
mode: preserve
owner: postgres
group: postgres
remote_src: yes
with_items: "{{ postgres_result.files }}"
- name: Create a symlink to PXE config files
file:
src: "{{ pxe_config_dir }}"
dest: /pxeboot/pxelinux.cfg
state: link
- name: Check if copying of branding files for mate is required
stat:
path: /opt/branding
register: branding_result
- block:
- name: Ensure branding config directory exists
file:
path: "{{ branding_config_dir }}"
state: directory
owner: root
group: root
mode: 0755
- name: Check if branding tar files exist (there should be only one)
find:
paths: /opt/branding
patterns: '*.tgz'
register: bt_result
- name: Copy branding tar files
copy:
src: "{{ item.path }}"
dest: "{{ branding_config_dir }}"
remote_src: yes
mode: preserve
with_items:
- "{{ bt_result.files }}"
when: branding_result.stat.exists and branding_result.stat.isdir
- name: Get grub default kernel
command: grubby --default-kernel
register: grub_kernel_output
- name: Add default security feature to kernel parameters
command: "{{ item }}"
with_items:
- "grubby --update-kernel={{ grub_kernel_output.stdout_lines[0] }} --args='{{ default_security_feature }}'"
- "grubby --efi --update-kernel={{ grub_kernel_output.stdout_lines[0] }} --args='{{ default_security_feature }}'"
- name: Resize filesystems (default)
command: "{{ item }}"
register: resize_result
failed_when: false
with_items:
- lvextend -L20G /dev/cgts-vg/pgsql-lv
- lvextend -L16G /dev/cgts-vg/dockerdistribution-lv
- lvextend -L40G /dev/cgts-vg/backup-lv
- drbdadm -- --assume-peer-has-space resize all
- resize2fs /dev/drbd0
- resize2fs /dev/drbd8
- name: Fail if file system resizing failed for a reason other than it has been done already
fail:
msg: "{{ item.item }} failed for the following reason: {{ item.stderr }}."
when: item.rc !=0 and item.stderr is not search('matches existing size') and
item.stderr is not search('not larger than existing size')
with_items: "{{ resize_result.results }}"
- block:
- name: Further resize if root disk size is larger than 240G
command: "{{ item }}"
register: resize_result
failed_when: false
with_items:
- lvextend -L40G /dev/cgts-vg/pgsql-lv
- lvextend -L50G /dev/cgts-vg/backup-lv
- drbdadm -- --assume-peer-has-space resize all
- resize2fs /dev/drbd0
- name: Fail if additional resizing failed for a reason other than it has been done already
fail:
msg: "{{ item.item }} failed for the following reason: {{ item.stderr }}."
when: item.rc !=0 and item.stderr is not search('matches existing size') and
item.stderr is not search('Nothing to do!')
with_items: "{{ resize_result.results }}"
when: root_disk_size|int > minimum_root_disk_size