playbook-unarchive_wordpress

# ansible-playbook -i inventory playbook-unarchive_wordpress.yml

---
- hosts: all
  become: yes
  tasks:
    - name: Get Wordpress archive
      ansible.builtin.unarchive:
        src: https://fr.wordpress.org/wordpress-5.8-fr_FR.tar.gz
        dest: /tmp/wordpress_5.8
        remote_src: true #obligatoire pour recupérer un fichier distant via URL
        creates: /tmp/wordpress_5.8/wordpress/wp-settings.php #Skip si le fichier existe
      delegate_to: 127.0.0.1

    
    - name: Create a directory if it does not exist
      ansible.builtin.file:
        path: /var/www/html/wordpress/
        state: directory
        mode: '0755'

    # - name: Copie des fichiers sur les postes distants
    #   ansible.builtin.copy:
    #     force: no #Ne force pas la réécriture
    #     src: /tmp/wordpress_5.8/
    #     dest: /var/www/html/wordpress/
    #    #owner: tbr
    #    #group: tbr
    #    #mode: '0644'
    
    - name: Install php
      ansible.builtin.package:
        name: 
          - apache2
          - php
          - php-mysql
          - libapache2-mod-php7.3
          - mariadb-server
        state: present
      notify: restart apache2

    # - name: backup config file
    #   command: cp /var/www/html/wordpress/wordpress/wp-config.php /var/www/html/wordpress/wordpress/wp-config.php.old

    - name: Copy sample config file
      ansible.builtin.copy:
        remote_src: true
        src: /var/www/html/wordpress/wordpress/wp-config-sample.php
        dest: /var/www/html/wordpress/wordpress/wp-config.php

    - name: Update Wordpress config file
      lineinfile:
        path: /var/www/html/wordpress/wordpress/wp-config.php
        regexp: "{{item.regexp}}"
        line: "{{item.line}}"
      with_items:
        - {'regexp': "define\\( 'DB_NAME', '(.)+' \\);", 'line': "define( 'DB_NAME', 'wordpress' );"}
        - {'regexp': "define\\( 'DB_USER', '(.)+' \\);", 'line': "define( 'DB_USER', 'wpuser' );"}
        - {'regexp': "define\\( 'DB_PASSWORD', '(.)+' \\);", 'line': "define( 'DB_PASSWORD', 'wpuserpassword' );"}

    - name: Update ownership to Apache user
      file:
        path: /var/www/html/wordpress/wordpress/
        state: directory
        recurse: yes
        owner: www-data

    - name: Set the correct permissions on Wordpress directories
      command: find /var/www/html/wordpress/wordpress/ -type d -exec chmod 750 {} \;

    - name: Set the correct permissions for Wordpress files
      command: find /var/www/html/wordpress/wordpress/ -type f -exec chmod 640 {} \;

##########################

    - name: Create a new database called wordpress
      mysql_db:
        login_user: root
        login_password: ""
        name: wordpress
        state: present

    - name: Configure new MySQL user called wpuser
      mysql_user:
        login_user: root
        login_password: ""
        name: wpuser
        password: wpuserpassword
        priv: 'wordpress.*:ALL'
        state: present

##########################

    - name: Restart service httpd, in all cases
      ansible.builtin.service:
        name: apache2
        state: restarted

    - name: Restart service mariadb, in all cases
      ansible.builtin.service:
        name: mariadb
        state: restarted

##########################



  handlers:
  - name: restart apache2
    ansible.builtin.service:
      name: apache2
      state: restarted