- name: Include distribution specific variables
  include_vars: "{{ lookup('first_found', search) }}"
  vars:
    search:
      files:
        - '{{ ansible_distribution | lower }}.yml'
        - '{{ ansible_os_family | lower }}.yml'
        - '{{ ansible_system | lower }}.yml'
        - default.yml
      paths:
        - vars

- name: install cron package
  package:
    name: '{{ cron_pkg }}'
  when: cron_pkg | default(false, true)
  register: cron_package_installed
  until: cron_package_installed is success

- when: faketime_pkg | default(false, true)
  block:
    - name: install cron and faketime packages
      package:
        name: '{{ faketime_pkg }}'
      register: faketime_package_installed
      until: faketime_package_installed is success

    - name: Find libfaketime path
      shell: '{{ list_pkg_files }} {{ faketime_pkg }} | grep -F libfaketime.so.1'
      args:
        warn: false
      register: libfaketime_path

    - when: ansible_service_mgr == 'systemd'
      block:
        - name: create directory for cron drop-in file
          file:
            path: '/etc/systemd/system/{{ cron_service }}.service.d'
            state: directory
            owner: root
            group: root
            mode: 0755

        - name: Use faketime with cron service
          copy:
            content: |-
              [Service]
              Environment=LD_PRELOAD={{ libfaketime_path.stdout_lines[0].strip() }}
              Environment="FAKETIME=+0y x10"
              Environment=RANDOM_DELAY=0
            dest: '/etc/systemd/system/{{ cron_service }}.service.d/faketime.conf'
            owner: root
            group: root
            mode: 0644

    - when: ansible_system == 'FreeBSD'
      name: Use faketime with cron service
      copy:
        content: |-
          cron_env='LD_PRELOAD={{ libfaketime_path.stdout_lines[0].strip() }} FAKETIME="+0y x10"'
        dest: '/etc/rc.conf.d/cron'
        owner: root
        group: wheel
        mode: 0644

- name: enable cron service
  service:
    daemon-reload: "{{ (ansible_service_mgr == 'systemd') | ternary(true, omit) }}"
    name: '{{ cron_service }}'
    state: restarted
