- name: 'Install MySQL packages: mariadb-server, mariadb-client, python-mysqldb and 8 php packages (debuntu)'
  package:
    name:
      - mariadb-server
      - mariadb-client
      - python-mysqldb
      - php{{ php_version }}
      - php{{ php_version }}-mysql
      - php-pear
      - php{{ php_version }}-gd
      - php{{ php_version }}-imap
      - php{{ php_version }}-ldap
      - php{{ php_version }}-odbc
      #- php{{ php_version }}-xml
      - php{{ php_version }}-xmlrpc
    state: present
  when: is_debuntu
  tags:
    - download

- name: Install php{{ php_version }}-xml (ubuntu or debian-9)
  package:
    name: "php{{ php_version }}-xml"
    state: present
  when: is_ubuntu or is_debian_9

- name: Install php-xml-parser (debian-8)
  package:
    name: php-xml-parser
    state: present
  when: is_debian_8

- name: "Install packages: mysql, MySQL-python and 9 php packages (OS's other than debuntu)"
  package:
    name:
      - MySQL-python
      - mysql
      - php
      - php-mysql
      - php-pear
      - php-gd
      - php-imap
      - php-ldap
      - php-odbc
      - php-xml
      - php-xmlrpc
    state: present
  when: not is_debuntu
  tags:
    - download

- include_tasks: centos.yml
  when: ansible_distribution == "CentOS"
  tags:
    - download

- include_tasks: fedora.yml
  when: ansible_distribution == "Fedora"
  tags:
    - download

# Name of MySQL service varies by OS so softcoded in 1-prep
- name: 'Start MySQL systemd service: {{ mysql_service }}'
  systemd:
    name: "{{ mysql_service }}"
    state: started
  when: mysql_enabled

- name: Enable MySQL systemd service (upon subsequent boots) if mysql_enabled
  systemd:
    name: "{{ mysql_service }}"
    enabled: yes
  when: mysql_enabled

# 'localhost' needs to be the last item for idempotency, see
# http://ansible.cc/docs/modules.html#mysql-user
# unfortunately it still doesn't work
- name: Update MySQL root password for localhost root accounts, if mysql_enabled
  mysql_user:
    name: root
    host: localhost
    password: "{{ mysql_root_password }}"
    priv: "*.*:ALL,GRANT"
  when: mysql_enabled

- name: Install .my.cnf file from template, with root password credentials, if mysql_enabled
  template:
    src: my.cnf.j2
    dest: /root/.my.cnf
    owner: root
    mode: 0600
  when: mysql_enabled

- name: Update MySQL root password for all remaining root accounts (127.0.0.1, ::1) if mysql_enabled
  mysql_user:
    name: root
    host: "{{ item }}"
    password: "{{ mysql_root_password }}"
    priv: "*.*:ALL,GRANT"
  with_items:
    #- "{{ iiab_hostname }}.{{ iiab_domain }}"
    - 127.0.0.1
    - ::1
  when: mysql_enabled

- name: Delete anonymous MySQL server user for {{ ansible_hostname }}, if mysql_enabled
  mysql_user:
    user: ""
    host: "{{ ansible_hostname }}"
    state: absent
  when: mysql_enabled

- name: Delete anonymous MySQL server user for localhost, if mysql_enabled
  mysql_user:
    user: ""
    state: absent
  when: mysql_enabled

- name: Remove the MySQL 'test' database, if mysql_enabled
  mysql_db:
    db: test
    state: absent
  when: mysql_enabled

# we had to start mysql in order to configure it, now turn if off if not enabled
- name: Config is done but now DISABLE MySQL service, if not mysql_enabled
  systemd:
    name: "{{ mysql_service }}"
    enabled: no
    state: stopped
  when: not mysql_enabled

- name: Add 'mysql' variable values to {{ iiab_ini_file }}
  ini_file:
    path: "{{ iiab_ini_file }}"
    section: mysql
    option: "{{ item.option }}"
    value: "{{ item.value }}"
  with_items:
    - option: name
      value: MySQL
    - option: description
      value: '"MySQL is a widely used free and open source (GPLv2) database, offered by most web hosting services, on a diversity of platforms."'
    - option: enabled
      value: "{{ mysql_enabled }}"
