blob: 0e2ca8224f2ffaf823d528ecb5415ab3a1289d32 [file] [log] [blame]
{%- from "linux/map.jinja" import system with context %}
sosreport_packages:
pkg.installed:
- names: [ sosreport, netcat-openbsd ]
{# Package has default config file, so if nothing provided through pillars use it #}
{%- if system.sosreport.config_options is defined %}
sosreport_config_file:
file.managed:
- name: /etc/sos.conf
- source: salt://linux/files/sos.conf
- user: root
- mode: 644
- template: jinja
- require:
- pkg: sosreport_packages
{%- endif %}
{%- set cmd_opts = { 'tmp-dir': '/tmp/sosreport_' + 9999|random_str } %}
{%- if system.sosreport.cmd_options is defined %}
{%- for key,value in system.sosreport.cmd_options.items() %}
{%- do cmd_opts.update({ key: value }) %}
{%- endfor %}
{%- endif %}
{%- if pillar['sosreport'] is defined %}
{%- for key,value in pillar['sosreport'].items() %}
{%- do cmd_opts.update({ key: value }) %}
{%- endfor %}
{%- endif %}
{%- set opts_list = [] %}
{%- for key,value in cmd_opts.items() %}
{%- if key == 'no_arg_opts' %}
{%- do opts_list.append(value|join(' ')) %}
{%- else %}
{%- do opts_list.append('--{0} {1}'.format(key, value)) %}
{%- endif %}
{%- endfor %}
sosreport_tmp_dir:
file.directory:
- name: {{ cmd_opts['tmp-dir'] }}
- user: root
sosreport_run:
cmd.run:
- name: sosreport {{ opts_list|join(' ') }}
- require:
- pkg: sosreport_packages
- file: sosreport_tmp_dir
{%- if system.sosreport.config_options is defined %}
- file: sosreport_config_file
{%- endif %}
sosreport_send_script:
file.managed:
- name: /var/tmp/sosreport_send.sh
- makedirs: true
- user: root
- mode: 755
- template: jinja
- contents: |
#!/bin/bash
masterHost=${1}
masterPort=${2}
cd {{ cmd_opts['tmp-dir'] }}
tar -c sosreport-* | nc ${masterHost} ${masterPort}