Skip to content

Instantly share code, notes, and snippets.

@blemmenes
Last active November 25, 2020 03:54
Show Gist options
  • Save blemmenes/1ec380a1e214a38d5aa69db30e83ab71 to your computer and use it in GitHub Desktop.
Save blemmenes/1ec380a1e214a38d5aa69db30e83ab71 to your computer and use it in GitHub Desktop.
Ansible playbook to install, run, gather, archive sosreports
---
# sosreport runner/fetcher
# usage:
# ansible-playbook sosreport.yaml —limit=<node/nodes> -e "dest=~/temp name=<name> case_id=<case/ticket>"
- hosts: all
gather_facts: false
vars:
sos_path: "{{ dest }}/{{ case_id }}/{{ run_time }}"
tasks:
- name: Set run_time
set_fact: run_time="{{lookup('pipe','date -u +%Y%m%d%H%M%S')}}"
run_once: true
- name: Create destination dir
local_action:
module: file
path: "{{ sos_path }}"
state: directory
run_once: true
- name: Install packages
apt:
name: "{{ item }}"
state: latest
#update_cache: yes
with_items:
- sosreport
become: true
- name: Run sosreport
shell: sosreport -a --name={{ name }} --case-id={{ case_id }} --batch | awk '/sosreport-/ {print $1}'
register: sosreport_file
become: true
- name: Chown sosreport
file:
path: '{{ item }}'
mode: 0777
with_items:
- '{{ sosreport_file.stdout }}'
- '{{ sosreport_file.stdout }}.md5'
become: true
- name: Copy files
fetch:
src: '{{ sosreport_file.stdout }}'
dest: '{{ sos_path }}/{{ inventory_hostname }}/'
flat: yes
register: copy_result
- name: Clean tmp
file:
path: '{{ item }}'
state: absent
with_items:
- '{{ sosreport_file.stdout }}'
- '{{ sosreport_file.stdout }}.md5'
when: copy_result|succeeded
become: true
- name: Create tarball
local_action:
module: archive
path: '{{ sos_path }}'
dest: '{{ dest }}/{{ case_id }}/sosreports-{{ case_id }}_{{ run_time }}.tgz'
run_once: true
register: archive_result
- name: Clean local reports
local_action:
module: file
path: '{{ sos_path }}'
state: absent
run_once: true
when: archive_result|succeeded
- debug:
msg: "sosreport archive: {{ dest }}/{{ case_id }}/sosreports-{{ case_id }}_{{ run_time }}.tgz"
run_once: true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment