--- # Copyright 2020 Red Hat, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. - name: Playbook sos-report log collection connection: "{{ (tripleo_target_host is defined) | ternary('ssh', 'local') }}" hosts: "{{ tripleo_target_host | default('localhost') }}" remote_user: "{{ tripleo_target_user | default(lookup('env', 'USER')) }}" gather_facts: "{{ (tripleo_target_host is defined) | ternary(true, false) }}" any_errors_fatal: true vars: sos_options: - boot - cluster - hardware - kernel - memory - nfs - openstack - packagemanager - performance - services - storage - system - webserver - virt tasks: - name: No server_name defined fail: msg: >- The server_name option was undefined. when: - server_name is undefined - name: No sos destination defined fail: msg: >- The sos_destination option was undefined. when: - sos_destination is undefined - name: Create the support directory become: true file: path: "{{ sos_destination }}" state: directory mode: '0755' - name: Set local connection user facts set_fact: ansible_home: "{{ lookup('env', 'HOME') }}" ansible_user: "{{ lookup('env', 'USER') }}" run_once: true when: - (tripleo_target_host is defined) | ternary('ssh', 'local') == 'local' - name: Add ssh-servers add_host: hostname: "{{ item }}" groups: tripleo_queues ansible_ssh_private_key_file: "{{ ansible_home }}/.ssh/id_rsa_tripleo" sos_destination: "{{ sos_destination }}" sos_options: "{{ sos_options | join(',') }}" archive_file: "/var/tmp/sos-report-{{ item }}-{{ lookup('pipe','date +%Y%m%d%H%M%S') }}.tgz" changed_when: false loop: '{{ (server_name == "all") | ternary( groups["all"], (server_name in groups) | ternary( groups[server_name], (server_name in groups["all"]) | ternary( [server_name], (groups["all"] | select("match", server_name ~ ".*") | list) ) ) ) }}' - name: Run Log collection hosts: tripleo_queues user: tripleo-admin gather_facts: false strategy: free become: true handlers: - name: Remove tmp directory file: path: "{{ tempfile_1.path }}" state: absent - name: Remove archive file: path: "{{ archive_file }}" state: absent tasks: - name: Ensure sos is installed package: name: sos - name: Create temporary directory tempfile: state: directory suffix: build register: tempfile_1 notify: - Remove tmp directory - name: Run sos-report command: >- /usr/sbin/sosreport --batch -p {{ sos_options }} --tmp-dir {{ tempfile_1.path }} - name: Compress sos-report directory archive: path: "{{ tempfile_1.path }}" dest: "{{ archive_file }}" - name: Retrieve the sos report fetch: src: "{{ archive_file }}" dest: "/tmp/" flat: true - name: Move archive into place command: >- mv /tmp/{{ archive_file | basename }} {{ sos_destination }}/ become: true connection: local - name: Archive notice debug: msg: "Log collection archive: {{ archive_file }}, stored here: {{ sos_destination }}"