Ansible playbook for configuring development and production servers with WordPress.
This playbook will install and configure MySQL, WordPress, Nginx, and PHP-FPM. Vagrant is used to provision development servers and this comes with a basic Vagrantfile for an easy setup.
Install vagrant-vbguest to always keep VirtualBox Guest Additions up-to-date (optional):
$ vagrant plugin install vagrant-vbguestAdd hostname to /etc/hosts.
Run vagrant up to create and provision virtual machine.
Create an inventory file and a group vars file, both named production. See development files for details.
Provision Amazon EC2 instances with:
$ ansible-playbook site.yml --private-key <private_key.pem> -i production -u ubuntuIf you want to run specific tasks, add --tags <tag> when running ansible-playbook.
All Ansible configration is done in YAML.
The following must always be defined as group variables:
envdevelopmenthostexample.devsite_nameExample Sitewp_admin_email[email protected]wp_admin_passwordpasswordwp_db_passwordpasswordwp_root/srv/example.com/wordpress
A database can be imported by specifying the dump path as wp_db_import. Ansible will automatically replace site URL with hostname and all user passwords to wp_admin_password.
# group_vars/development
wp_db_import: database.sql.gzPlugins can be installed automatically by defining wp_plugins.
# group_vars/wordpress
wp_plugins:
- { name: akismet, version: 3.0.1 }
- { name: jetpack, version: 3.0.2 }Delete all WordPress content (sample comments, posts etc.) with:
# group_vars/development
wp_delete_content: trueImportant: Remember to remove the wp_delete_content variable or set it to false before provisioning the server again.
More role defaults can be found in roles/<role>/defaults/main.yml and easily overwritten using group variables.
Enable virtual machine folder sync in your Vagrantfile.
# Vagrantfile
Vagrant.configure("2") do |config|
config.vm.synced_folder "../example-theme", "/srv/example.com/wordpress/wp-content/themes/example-theme", nfs: true
endMIT © Richard Käll