| {%- 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} |