Yohann76/TodoList

View on GitHub
ansible/playbook.yml

Summary

Maintainability
Test Coverage
---
- name: Server Install
  hosts: all
  remote_user: root

  vars_files:
    - ./vars/vault.yml
    - ./vars/vars.yml

  vars_prompt:
    #- name: symfony_env
      #prompt: "Enter the environment for your Symfony app (prod|dev|test)"
      #default: prod
      #private: no

  environment:
    SYMFONY_ENV: "prod"
    #SYMFONY_ENV: "{{ symfony_env|lower }}"

  tasks:
    - ping: ~

    - name: apt-get update
      become: true
      apt:
        update_cache: yes

    - name: Create project directory and set its permissions
      become: true
      file:
        path: "{{ symfony_root_dir }}"
        state: directory
        recurse: yes

    - name: Git clone
      git:
        repo: https://github.com/Yohann76/TodoList
        dest: "{{ symfony_root_dir }}"
        force: yes
        clone: yes

    - name: Install Git VCS
      become: true
      apt:
        name: git
        state: latest

    - name: Fix var directory permissions
      file:
        path: "{{ symfony_var_dir }}"
        state: directory
        mode: 0777
        recurse: yes

    - name: Fix bin/console permissions
      file:
        path: "{{ symfony_console_path }}"
        mode: 0777

    ###### .env ######
    - name: Add SQL connexion information in .env file ( with a new admin SQL User )
      become: true
      lineinfile:
        dest: "{{ symfony_root_dir }}/.env"
        # replace
        regexp: 'DATABASE_URL=mysql://root@localhost:3306/TodoList #Wamp'
        # for
        line: DATABASE_URL=mysql://{{ sql_user }}:{{ sql_pass }}@localhost:3306/todolist

    - name: Add mail connexion information in .env file
      become: true
      lineinfile:
        dest: "{{ symfony_root_dir }}/.env"
        regexp: ''
        insertafter: ''
        line: MAILER_URL=gmail://{{ mail }}:{{ mail_password }}@localhost?encryption=tls&auth_mode=oauth

    - name: apt-get install composer
      become: true
      apt:
        name: composer
        state: latest

    - name: Fix var directory permissionss
      file:
        path: "{{ symfony_var_dir }}"
        state: directory
        mode: 0777
        recurse: yes

    - name: Check for Composer
      stat:
        path: /usr/local/bin/composer
      register: composer_stat

    #- name: Make sure composer is at its latest version
      #composer:
        #working_dir: "{{ symfony_root_dir }}"
        #command: self-update
      #register: composer_self_update
      #changed_when: "not composer_self_update.stdout|search('You are already using composer version')"
      #when: composer_stat.stat.exists

    - name: Download composer
      get_url:
        url: https://getcomposer.org/installer
        dest: "{{ installer }}"

    - name: Install composer
      command: "{{ item }}"
      with_items:
        - "php {{ installer }}"
        - mv composer.phar /usr/local/bin/composer
      notify: Restart Nginx

    - name: Set permissions on Composer
      become: true
      file:
        path: /usr/bin/composer
        mode: "a+x"

    - name: Install Composer's dependencies
      become: true
      composer:
        working_dir: "{{ symfony_root_dir }}"
        no_dev: no

    # Symfony console commands
    - name: Create DB if not exists
      command: '{{ symfony_console_path }} doctrine:database:create --if-not-exists --no-interaction'

    - name: Doctrine schema update
      command: '{{ symfony_console_path }} d:s:u --force'

    #- name: make migration
      #command: '{{ symfony_console_path }} make:migration'

    #- name: Execute migrations
      #command: '{{ symfony_console_path }} doctrine:migrations:migrate --no-interaction'

    - name: Load data fixtures
      command: '{{ symfony_console_path }} doctrine:fixtures:load --no-interaction'
      #when: symfony_env != "prod"

    - name: Clear cache
      command: '{{ symfony_console_path }} cache:clear --env=prod'

  roles:
    - php
    - nginx
    - mysql

  handlers:
    - name: Restart Nginx
      become: true
      service:
        name: nginx
        state: restarted

    - name: Restart PHP-FPM
      become: true
      service:
        name: php7.3-fpm
        state: restarted
...