ansible/playbook.yml
---
- 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
...