Ansible - WordPress Install

Ansible Playbook to Install WordPress

====================================================================

---
- name: 'WordPress installation'
  hosts: all
  become: yes
  gather_facts: no
  vars_files:
    - vars.yml

  tasks:
    - name: 'Downloading Wordpress'
      get_url:
        url: "{{WP_URL}}"
        dest: "{{DEST}}/wordpress.tar.gz"

    - name: 'Extracting Wordpress Package'
      unarchive:
        src: "{{DEST}}/wordpress.tar.gz"
        dest: "{{DEST}}"
        remote_src: yes

    - name: 'Setting Permissions and ownership'
      file:
        dest: "{{DEST}}"
        owner: root
        group: root
        recurse: yes

    - name: "Creating Wordpress Database"
      mysql_db:
        login_user: root
        login_password: "{{MYSQL_ROOT}}"
        db: "{{DB_NAME}}"
        state: present
 
    - name: "Creating Wordpress User"
      mysql_user:
        login_user: root
        login_password: "{{MYSQL_ROOT}}"
        name: "{{DB_USER}}"
        host: localhost
        password: "{{DB_PASSWORD}}"
        priv: "{{DB_NAME}}.*:ALL"

    - name: 'Wordpress - Generating wp-config.php'
      template:
        src: wp-config.php.j2
        dest: "{{DEST}}/wordpress/wp-config.php"

====================================================================

vars.yml

====================================================================

---
MYSQL_ROOT: ans@root#mysql
DB_NAME: wp_db
DB_USER:  wp_ans
DB_PASSWORD: WP123!@#
WP_URL: https://wordpress.org/latest.tar.gz
DEST: /var/www/html/

==================================================================== 

wp-config.php.j2

====================================================================

<?php
define('DB_NAME', '{{DB_NAME}}');

define('DB_USER', '{{DB_USER}}');

define('DB_PASSWORD', '{{DB_PASSWORD}}');

define('DB_HOST', 'localhost');

define('DB_CHARSET', 'utf8');

define('DB_COLLATE', '');

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

$table_prefix  = 'wp_';

define('WP_DEBUG', false);

if ( !defined('ABSPATH') )
        define('ABSPATH', dirname(__FILE__) . '/');

require_once(ABSPATH . 'wp-settings.php');

====================================================================