From 940e0f4bbe01a8edbe8ee71cdac907435d14b5fe Mon Sep 17 00:00:00 2001 From: Dirk Pahl Date: Sun, 5 Feb 2017 21:49:58 +0100 Subject: [PATCH] Transfer ansible playbooks to roles, closes #30 --- Readme.md | 7 ++++-- Vagrantfile | 3 ++- .../base.yml => roles/base/tasks/main.yml} | 4 ++- .../roles/laravel-quickstart/meta/main.yml | 6 +++++ .../laravel-quickstart/tasks/main.yml} | 22 ++++++++++------ .../laravel-quickstart/templates}/.env.j2 | 0 .../templates/nginx.conf.j2} | 0 .../templates/php-fpm.conf.j2} | 0 .../mysql.yml => roles/mysql/tasks/main.yml} | 0 playbooks/roles/nginx/handlers/main.yml | 2 ++ .../nginx.yml => roles/nginx/tasks/main.yml} | 2 +- .../nginx/templates}/nginx.conf.j2 | 0 .../php-devtools/tasks/main.yml} | 0 playbooks/roles/php-fpm/handlers/main.yml | 2 ++ playbooks/roles/php-fpm/meta/main.yml | 3 +++ .../php-fpm/tasks/main.yml} | 0 playbooks/roles/php/defaults/main.yml | 2 ++ .../php.yml => roles/php/tasks/main.yml} | 7 +++++- .../roles/symfony-standard/meta/main.yml | 6 +++++ .../symfony-standard/tasks/main.yml} | 18 +++++++------ .../symfony-standard/templates/nginx.conf.j2} | 0 .../templates/parameters.yml.j2} | 0 .../templates/php-fpm.conf.j2} | 0 playbooks/vagrant.yml | 25 ++++++++----------- 24 files changed, 72 insertions(+), 37 deletions(-) rename playbooks/{tasks/base.yml => roles/base/tasks/main.yml} (72%) create mode 100644 playbooks/roles/laravel-quickstart/meta/main.yml rename playbooks/{tasks/laravel-quickstart.yml => roles/laravel-quickstart/tasks/main.yml} (74%) rename playbooks/{templates/laravel => roles/laravel-quickstart/templates}/.env.j2 (100%) rename playbooks/{templates/nginx/laravel.conf.j2 => roles/laravel-quickstart/templates/nginx.conf.j2} (100%) rename playbooks/{templates/php-fpm/laravel.conf.j2 => roles/laravel-quickstart/templates/php-fpm.conf.j2} (100%) rename playbooks/{tasks/mysql.yml => roles/mysql/tasks/main.yml} (100%) create mode 100644 playbooks/roles/nginx/handlers/main.yml rename playbooks/{tasks/nginx.yml => roles/nginx/tasks/main.yml} (91%) rename playbooks/{templates/nginx => roles/nginx/templates}/nginx.conf.j2 (100%) rename playbooks/{tasks/php-devtools.yml => roles/php-devtools/tasks/main.yml} (100%) create mode 100644 playbooks/roles/php-fpm/handlers/main.yml create mode 100644 playbooks/roles/php-fpm/meta/main.yml rename playbooks/{tasks/php-fpm.yml => roles/php-fpm/tasks/main.yml} (100%) create mode 100644 playbooks/roles/php/defaults/main.yml rename playbooks/{tasks/php.yml => roles/php/tasks/main.yml} (71%) create mode 100644 playbooks/roles/symfony-standard/meta/main.yml rename playbooks/{tasks/symfony-standard.yml => roles/symfony-standard/tasks/main.yml} (75%) rename playbooks/{templates/nginx/symfony.conf.j2 => roles/symfony-standard/templates/nginx.conf.j2} (100%) rename playbooks/{templates/symfony/symfony_parameters.yml.j2 => roles/symfony-standard/templates/parameters.yml.j2} (100%) rename playbooks/{templates/php-fpm/symfony.conf.j2 => roles/symfony-standard/templates/php-fpm.conf.j2} (100%) diff --git a/Readme.md b/Readme.md index 29eecb1..6ed4c8c 100644 --- a/Readme.md +++ b/Readme.md @@ -8,7 +8,7 @@ Installation * Install [VirtualBox](https://www.virtualbox.org/) * Install vagrant using the installation instructions in the [Getting Started document](https://www.vagrantup.com/docs/getting-started/) * Clone this repository and cd into it -* Run ```vagrant up``` in order to set up the box using the ansible provisioner +* Run ```vagrant up``` in order to set up the box using the ```ansible_local``` provisioner * You should now have your working * Symfony2 Standard Edition under http://192.168.50.4:8081/ * Laravel Quickstart example app under http://192.168.50.4:8082/ @@ -43,9 +43,12 @@ Changes ------- ### unreleased + +* Transfer ansible playbooks to roles #31 + ### v1.3.0 -* Switch provisioner to ansible +* Switch provisioner to ansible #18 ### v1.0.0 diff --git a/Vagrantfile b/Vagrantfile index a985db8..84affb3 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -10,7 +10,8 @@ Vagrant.configure(2) do |config| # See https://github.com/mitchellh/vagrant/issues/5005 config.ssh.insert_key = false - config.vm.provision "ansible" do |ansible| + # Run Ansible from the Vagrant VM + config.vm.provision "ansible_local" do |ansible| ansible.verbose = "vv" ansible.playbook = "playbooks/vagrant.yml" end diff --git a/playbooks/tasks/base.yml b/playbooks/roles/base/tasks/main.yml similarity index 72% rename from playbooks/tasks/base.yml rename to playbooks/roles/base/tasks/main.yml index c7ba5ef..3681c69 100644 --- a/playbooks/tasks/base.yml +++ b/playbooks/roles/base/tasks/main.yml @@ -3,4 +3,6 @@ with_items: - curl - git - - python-mysqldb \ No newline at end of file + - python-mysqldb + - zip + - unzip \ No newline at end of file diff --git a/playbooks/roles/laravel-quickstart/meta/main.yml b/playbooks/roles/laravel-quickstart/meta/main.yml new file mode 100644 index 0000000..14db65e --- /dev/null +++ b/playbooks/roles/laravel-quickstart/meta/main.yml @@ -0,0 +1,6 @@ +--- +dependencies: + - { role: base } + - { role: mysql } + - { role: php-fpm } + - { role: nginx } \ No newline at end of file diff --git a/playbooks/tasks/laravel-quickstart.yml b/playbooks/roles/laravel-quickstart/tasks/main.yml similarity index 74% rename from playbooks/tasks/laravel-quickstart.yml rename to playbooks/roles/laravel-quickstart/tasks/main.yml index aac91ab..05f1376 100644 --- a/playbooks/tasks/laravel-quickstart.yml +++ b/playbooks/roles/laravel-quickstart/tasks/main.yml @@ -9,35 +9,41 @@ git: repo=https://github.com/laravel/quickstart-basic dest=/vagrant/laravel-quickstart update=no + become: true + become_user: "{{ www_user }}" - name: Copy across new .env file template: - src=laravel/.env.j2 + src=.env.j2 dest=/vagrant/laravel-quickstart/.env - -- stat: path=/vagrant/laravel-quickstart/vendor - register: p + become: true + become_user: "{{ www_user }}" - name: Install Laravel project dependencies - shell: cd /vagrant/laravel-quickstart && composer install - when: p.stat.isdir is not defined + shell: cd /vagrant/laravel-quickstart && COMPOSER_PROCESS_TIMEOUT={{composer_process_timeout}} composer install + become: true + become_user: "{{ www_user }}" - name: Generate laravel key shell: cd /vagrant/laravel-quickstart && php artisan key:generate + become: true + become_user: "{{ www_user }}" - name: Execute migrations for the quickstart example shell: cd /vagrant/laravel-quickstart && php artisan migrate + become: true + become_user: "{{ www_user }}" - name: Copy across new php-fpm pool config for laravel template: - src=php-fpm/laravel.conf.j2 + src=php-fpm.conf.j2 dest=/etc/php/5.6/fpm/pool.d/laravel.conf notify: - restart php-fpm - name: Copy across new virtual host for laravel template: - src=nginx/laravel.conf.j2 + src=nginx.conf.j2 dest=/etc/nginx/sites-available/laravel.conf notify: - restart nginx diff --git a/playbooks/templates/laravel/.env.j2 b/playbooks/roles/laravel-quickstart/templates/.env.j2 similarity index 100% rename from playbooks/templates/laravel/.env.j2 rename to playbooks/roles/laravel-quickstart/templates/.env.j2 diff --git a/playbooks/templates/nginx/laravel.conf.j2 b/playbooks/roles/laravel-quickstart/templates/nginx.conf.j2 similarity index 100% rename from playbooks/templates/nginx/laravel.conf.j2 rename to playbooks/roles/laravel-quickstart/templates/nginx.conf.j2 diff --git a/playbooks/templates/php-fpm/laravel.conf.j2 b/playbooks/roles/laravel-quickstart/templates/php-fpm.conf.j2 similarity index 100% rename from playbooks/templates/php-fpm/laravel.conf.j2 rename to playbooks/roles/laravel-quickstart/templates/php-fpm.conf.j2 diff --git a/playbooks/tasks/mysql.yml b/playbooks/roles/mysql/tasks/main.yml similarity index 100% rename from playbooks/tasks/mysql.yml rename to playbooks/roles/mysql/tasks/main.yml diff --git a/playbooks/roles/nginx/handlers/main.yml b/playbooks/roles/nginx/handlers/main.yml new file mode 100644 index 0000000..3f5ca39 --- /dev/null +++ b/playbooks/roles/nginx/handlers/main.yml @@ -0,0 +1,2 @@ +- name: restart nginx + service: name=nginx state=restarted \ No newline at end of file diff --git a/playbooks/tasks/nginx.yml b/playbooks/roles/nginx/tasks/main.yml similarity index 91% rename from playbooks/tasks/nginx.yml rename to playbooks/roles/nginx/tasks/main.yml index a32ad21..b48b1c5 100644 --- a/playbooks/tasks/nginx.yml +++ b/playbooks/roles/nginx/tasks/main.yml @@ -4,7 +4,7 @@ - name: Copy across new nginx config template: - src=nginx/nginx.conf.j2 + src=nginx.conf.j2 dest=/etc/nginx/nginx.conf notify: - restart nginx diff --git a/playbooks/templates/nginx/nginx.conf.j2 b/playbooks/roles/nginx/templates/nginx.conf.j2 similarity index 100% rename from playbooks/templates/nginx/nginx.conf.j2 rename to playbooks/roles/nginx/templates/nginx.conf.j2 diff --git a/playbooks/tasks/php-devtools.yml b/playbooks/roles/php-devtools/tasks/main.yml similarity index 100% rename from playbooks/tasks/php-devtools.yml rename to playbooks/roles/php-devtools/tasks/main.yml diff --git a/playbooks/roles/php-fpm/handlers/main.yml b/playbooks/roles/php-fpm/handlers/main.yml new file mode 100644 index 0000000..7e4941b --- /dev/null +++ b/playbooks/roles/php-fpm/handlers/main.yml @@ -0,0 +1,2 @@ +- name: restart php-fpm + service: name=php5.6-fpm state=restarted \ No newline at end of file diff --git a/playbooks/roles/php-fpm/meta/main.yml b/playbooks/roles/php-fpm/meta/main.yml new file mode 100644 index 0000000..cf2a637 --- /dev/null +++ b/playbooks/roles/php-fpm/meta/main.yml @@ -0,0 +1,3 @@ +--- +dependencies: + - { role: php } \ No newline at end of file diff --git a/playbooks/tasks/php-fpm.yml b/playbooks/roles/php-fpm/tasks/main.yml similarity index 100% rename from playbooks/tasks/php-fpm.yml rename to playbooks/roles/php-fpm/tasks/main.yml diff --git a/playbooks/roles/php/defaults/main.yml b/playbooks/roles/php/defaults/main.yml new file mode 100644 index 0000000..263d07f --- /dev/null +++ b/playbooks/roles/php/defaults/main.yml @@ -0,0 +1,2 @@ +--- +composer_process_timeout: 900 \ No newline at end of file diff --git a/playbooks/tasks/php.yml b/playbooks/roles/php/tasks/main.yml similarity index 71% rename from playbooks/tasks/php.yml rename to playbooks/roles/php/tasks/main.yml index 223e742..b53f9ae 100644 --- a/playbooks/tasks/php.yml +++ b/playbooks/roles/php/tasks/main.yml @@ -15,9 +15,14 @@ - php5.6-intl - php5.6-cli - php5.6-mcrypt + - php5.6-mbstring + - php5.6-dom - name: Enable the MCrypt extension shell: phpenmod mcrypt - name: Install composer - shell: curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer \ No newline at end of file + shell: curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer + +- name: Configure composer cache directory to avoid using slow NFS + shell: composer config --global cache-dir /dev/shm/composer/cache \ No newline at end of file diff --git a/playbooks/roles/symfony-standard/meta/main.yml b/playbooks/roles/symfony-standard/meta/main.yml new file mode 100644 index 0000000..14db65e --- /dev/null +++ b/playbooks/roles/symfony-standard/meta/main.yml @@ -0,0 +1,6 @@ +--- +dependencies: + - { role: base } + - { role: mysql } + - { role: php-fpm } + - { role: nginx } \ No newline at end of file diff --git a/playbooks/tasks/symfony-standard.yml b/playbooks/roles/symfony-standard/tasks/main.yml similarity index 75% rename from playbooks/tasks/symfony-standard.yml rename to playbooks/roles/symfony-standard/tasks/main.yml index 008354a..73018a1 100644 --- a/playbooks/tasks/symfony-standard.yml +++ b/playbooks/roles/symfony-standard/tasks/main.yml @@ -9,29 +9,31 @@ git: repo=https://github.com/symfony/symfony-standard.git dest=/vagrant/symfony-standard update=no + become: true + become_user: "{{ www_user }}" - name: Copy across new parameters.yml template: - src=symfony/symfony_parameters.yml.j2 + src=parameters.yml.j2 dest=/vagrant/symfony-standard/app/config/parameters.yml - -- stat: path=/vagrant/symfony-standard/vendor - register: p + become: true + become_user: "{{ www_user }}" - name: Install Symfony2 project dependencies - shell: cd /vagrant/symfony-standard && composer install - when: p.stat.isdir is not defined + shell: cd /vagrant/symfony-standard && COMPOSER_PROCESS_TIMEOUT={{composer_process_timeout}} composer install + become: true + become_user: "{{ www_user }}" - name: Copy across new php-fpm pool config for symfony template: - src=php-fpm/symfony.conf.j2 + src=php-fpm.conf.j2 dest=/etc/php/5.6/fpm/pool.d/symfony.conf notify: - restart php-fpm - name: Copy across new virtual host for symfony template: - src=nginx/symfony.conf.j2 + src=nginx.conf.j2 dest=/etc/nginx/sites-available/symfony.conf notify: - restart nginx diff --git a/playbooks/templates/nginx/symfony.conf.j2 b/playbooks/roles/symfony-standard/templates/nginx.conf.j2 similarity index 100% rename from playbooks/templates/nginx/symfony.conf.j2 rename to playbooks/roles/symfony-standard/templates/nginx.conf.j2 diff --git a/playbooks/templates/symfony/symfony_parameters.yml.j2 b/playbooks/roles/symfony-standard/templates/parameters.yml.j2 similarity index 100% rename from playbooks/templates/symfony/symfony_parameters.yml.j2 rename to playbooks/roles/symfony-standard/templates/parameters.yml.j2 diff --git a/playbooks/templates/php-fpm/symfony.conf.j2 b/playbooks/roles/symfony-standard/templates/php-fpm.conf.j2 similarity index 100% rename from playbooks/templates/php-fpm/symfony.conf.j2 rename to playbooks/roles/symfony-standard/templates/php-fpm.conf.j2 diff --git a/playbooks/vagrant.yml b/playbooks/vagrant.yml index 26f88c5..4841caa 100644 --- a/playbooks/vagrant.yml +++ b/playbooks/vagrant.yml @@ -5,20 +5,15 @@ document_root: /vagrant www_user: vagrant www_group: vagrant - handlers: - - name: restart nginx - service: name=nginx state=restarted - - name: restart php-fpm - service: name=php5.6-fpm state=restarted pre_tasks: - name: update apt cache - apt: update_cache=yes - tasks: - - include: tasks/base.yml - - include: tasks/nginx.yml - - include: tasks/mysql.yml - - include: tasks/php.yml - - include: tasks/php-devtools.yml - - include: tasks/php-fpm.yml - - include: tasks/symfony-standard.yml - - include: tasks/laravel-quickstart.yml \ No newline at end of file + apt: update_cache=yes cache_valid_time=3600 + roles: + - base + - nginx + - mysql + - php + - php-devtools + - php-fpm + - symfony-standard + - laravel-quickstart \ No newline at end of file