1- name: install the test daemon script
2  copy:
3    src: ansible_test_service.py
4    dest: /usr/sbin/ansible_test_service
5    mode: '755'
6
7- name: rewrite shebang in the test daemon script
8  lineinfile:
9    path: /usr/sbin/ansible_test_service
10    line: "#!{{ ansible_python_interpreter | realpath }}"
11    insertbefore: BOF
12    firstmatch: yes
13
14- block:
15    # determine init system is in use
16    - name: detect sysv init system
17      set_fact:
18        service_type: sysv
19      when:
20        - ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux']
21        - ansible_distribution_version is version('6', '>=')
22        - ansible_distribution_version is version('7', '<')
23    - name: detect systemd init system
24      set_fact:
25        service_type: systemd
26      when: (ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux'] and ansible_distribution_major_version is version('7', '>=')) or ansible_distribution == 'Fedora' or (ansible_distribution == 'Ubuntu' and ansible_distribution_version is version('15.04', '>=')) or (ansible_distribution == 'Debian' and ansible_distribution_version is version('8', '>=')) or ansible_os_family == 'Suse'
27    - name: detect upstart init system
28      set_fact:
29        service_type: upstart
30      when:
31        - ansible_distribution == 'Ubuntu'
32        - ansible_distribution_version is version('15.04', '<')
33
34    - name: display value of ansible_service_mgr
35      debug:
36        msg: 'ansible_service_mgr: {{ ansible_service_mgr }}'
37
38    - name: setup test service script
39      include_tasks: '{{ service_type }}_setup.yml'
40
41    - name: execute tests
42      import_tasks: tests.yml
43
44  always:
45    - name: disable and stop ansible test service
46      service:
47        name: ansible_test
48        state: stopped
49        enabled: false
50
51    # cleaning up changes made by this playbook
52    - include_tasks: '{{ service_type }}_cleanup.yml'
53