---

- name: ensure the wordpress package is installed
  apt:
    name:
      - wordpress
      - wordpress-l10n
    state: present
    install_recommends: false
  tags:
    - wordpress
    - webservices

- name: "ensure group for {{ wordpress_name }} exists"
  group:
    name: "{{ wordpress_user }}"
    state: present
    system: true
  tags:
    - wordpress
    - webservices

- name: "ensure user for {{ wordpress_name }} exists"
  user:
    name: "{{ wordpress_user }}"
    group: "{{ wordpress_group }}"
    state: present
    system: true
    shell: /usr/bin/nologin
    home: "{{ wordpress_web_root }}"
    createhome: false
  tags:
    - wordpress
    - webservices

- name: "ensure the wordpress folders for {{ wordpress_name }} exists"
  file:
    state: directory
    mode: "u=rx,g=rx,o="
    owner: "{{ wordpress_user }}"
    group: "www-data"
    path: "{{ wordpress_web_root }}/{{ item }}"
  with_items:
    - "{{ wordpress_name }}-files"
    - "{{ wordpress_name }}"
  tags:
    - wordpress
    - webservices

- name: Create overlayfs workdir for {{ wordpress_name }}
  file:
    state: directory
    mode: '0700'
    owner: root
    group: root
    path: "{{ wordpress_web_root }}/{{ wordpress_name }}-workdir"
  tags:
    - wordpress
    - webservices

# yamllint disable-line rule:line-length
- name: "ensure local folders without write permissions for {{ wordpress_name }} exist"
  file:
    state: directory
    mode: "u=rx,g=rx,o="
    owner: "{{ wordpress_user }}"
    group: "www-data"
    path: "{{ wordpress_web_root }}/{{ wordpress_name }}-files/{{ item }}"
  with_items:
    - wp-content
  tags:
    - wordpress
    - webservices

# yamllint disable-line rule:line-length
- name: "ensure local folders with write permissions for {{ wordpress_name }} exist"
  file:
    state: directory
    mode: "2750"
    owner: "{{ wordpress_user }}"
    group: "www-data"
    path: "{{ wordpress_web_root }}/{{ wordpress_name }}-files/{{ item }}"
  with_items:
    - wp-content/blogs.dir
    - wp-content/uploads
    - wp-content/plugins
    - wp-content/themes
    - wp-content/upgrade
  tags:
    - wordpress
    - webservices

# yamllint disable-line rule:line-length
- name: "ensure the directories for {{ wordpress_name }} are mounted above each other"
  mount:
    state: mounted
    fstype: overlay
    path: "{{ wordpress_web_root }}/{{ wordpress_name }}"
    # yamllint disable-line rule:line-length
    opts: "upperdir={{ wordpress_web_root }}/{{ wordpress_name }}-files/,lowerdir=/usr/share/wordpress,workdir={{ wordpress_web_root }}/{{ wordpress_name }}-workdir"
    src: none
  tags:
    - wordpress
    - webservices

- name: "ensure the config for {{ wordpress_name }} exists"
  template:
    src: wp-config.php.j2
    dest: "{{ wordpress_web_root }}/{{ wordpress_name }}-files/wp-config.php"
  tags:
    - wordpress
    - webservices

- name: "get randomness for secrets for {{ wordpress_name }}"
  set_fact:
    wordpress_secrets_1: "{{ (2**2048)|random }}"
    wordpress_secrets_2: "{{ (2**2048)|random }}"
    wordpress_secrets_3: "{{ (2**2048)|random }}"
    wordpress_secrets_4: "{{ (2**2048)|random }}"
    wordpress_secrets_5: "{{ (2**2048)|random }}"
    wordpress_secrets_6: "{{ (2**2048)|random }}"
    wordpress_secrets_7: "{{ (2**2048)|random }}"
    wordpress_secrets_8: "{{ (2**2048)|random }}"

- name: "ensure the secrets for {{ wordpress_name }} exist"
  template:
    src: secrets.php.j2
    dest: "{{ wordpress_web_root }}/{{ wordpress_name }}-files/secrets.php"
    force: false
  tags:
    - wordpress
    - webservices

# yamllint disable-line rule:line-length
- name: "ensure wordpress can access javascript files that debian places somewhere else"
  file:
    src: /usr/share/javascript
    dest: "{{ wordpress_web_root }}/javascript"
    state: link
  tags:
    - wordpress
    - webservices

- import_tasks: mysql.yml