- hosts: localhost roles: - add-bastion-host - hosts: prod_bastion[0] tasks: - name: Run the production playbook and capture logs block: - name: Get a current timestamp set_fact: _log_timestamp: "{{ lookup('pipe', 'date +%Y-%m-%dT%H:%M:%S') }}" # NOTE(ianw) : this gets parsed by the post playbook. If this # is updated, that parsing should be too - name: Log a playbook start header become: yes shell: 'echo "Running {{ _log_timestamp }}: ansible-playbook -v -f {{ infra_prod_ansible_forks }} /home/zuul/src/opendev.org/opendev/system-config/playbooks/{{ playbook_name }}" > /var/log/ansible/{{ playbook_name }}.log' - name: Run specified playbook on bastion host and redirect output become: yes shell: 'ansible-playbook -v -f {{ infra_prod_ansible_forks }} /home/zuul/src/opendev.org/opendev/system-config/playbooks/{{ playbook_name }} >> /var/log/ansible/{{ playbook_name }}.log' register: _run always: - name: Send run stats shell: | # delta is in string format h:m:s.sss; convert to ms for statsd {% set delta = _run.delta.split(':') %} {% set delta_ms = ((delta[0]|int * 60 * 60 * 1000) + (delta[1]|int * 60 * 1000) + (delta[2]|float * 1000)) | int %} echo 'bridge.ansible.{{ zuul.job }}.runtime:{{ delta_ms }}|ms' | nc -w 1 -u graphite.opendev.org 8125 echo 'bridge.ansible.{{ zuul.job }}.rc:{{ _run.rc }}|g' | nc -w 1 -u graphite.opendev.org 8125 args: executable: '/bin/bash'