/home/travis/.ansible/roles/robertdebock.clamav/tasks/main.yml
---
# tasks file for clamav
- name: include assert.yml
  include_tasks: assert.yml
  run_once: yes

- name: install clamav software
  package:
    name: "{{ clamav_packages }}"
    state: present
  notify:
    - ensure logfiles exists
    - stop clamav
    - update virus definitions

- name: allowing system virus scanning
  seboolean:
    name: antivirus_can_scan_system
    state: yes
    persistent: yes
  when:
    - ansible_selinux is defined
    - ansible_selinux | bool
    - ansible_selinux.status == "enabled"

- name: allowing jit
  seboolean:
    name: clamd_use_jit
    state: yes
    persistent: yes
  when:
    - ansible_selinux is defined
    - ansible_selinux | bool
    - ansible_selinux.status == "enabled"

- name: install required selinux software
  package:
    name: "{{ clamav_requirements }}"
    state: present
  when:
    - ansible_selinux is defined
    - ansible_selinux | bool
    - ansible_selinux.status == "enabled"

- name: place selinux type enforcement
  copy:
    src: my-clamd.te
    dest: /etc/my-clamd.te
    mode: "0640"
  notify:
    - create selinux mod for clamav
    - create selinux pp for clamav
    - load selinux pp for clamav
  when:
    - ansible_selinux is defined
    - ansible_selinux | bool
    - ansible_selinux.status == "enabled"

- name: place freshclam.conf
  template:
    src: freshclam.conf.j2
    dest: "{{ clamav_config_dir }}/freshclam.conf"
    mode: "0640"

- name: create database directory
  file:
    path: "{{ clamav_database_directory }}"
    state: directory
    mode: "0755"

- name: flush handlers
  meta: flush_handlers

- name: configure clamav software
  lineinfile:
    dest: "{{ clamav_config_dir }}/{{ clamav_config_file }}"
    line: "{{ item.line }}"
    create: yes
    state: "{{ item.state | default('present') }}"
    mode: "0640"
  loop: "{{ clamav_configuration }}"
  notify:
    - restart clamav

- name: check update virus definitions
  async_status:
    jid: "{{ updatevirusdefinitions.ansible_job_id }}"
  register: clamav_job_result
  until: clamav_job_result.finished
  retries: 15
  delay: 60
  when:
    - updatevirusdefinitions is defined

- name: start and enable clamav service
  service:
    name: "{{ item }}"
    state: started
    enabled: yes
  loop: "{{ clamav_services }}"