Mikado helps managing your AWS infrastructure for WordPress sites by defining an out-of-box, highly available, easy-to-deploy setup.
The project goals are:
- Provide an oversimplified but flexible and resilient one-click WordPress deployment
- Create a widely used standardized WordPress infrastructure
- Implement performance, security and infrastructure best practices
- Have automated, auditable, and idempotent configuration
Mikado provides a fully automated way to deploy and maintain your infrastructure built with Terraform and Packer + Ansible with the following services integrated optionally:
- Fastly - CDN
- Statuscake - external monitoring
- Datadog - server monitoring & AWS resource monitoring
- Loggly - remote log collection
- Newrelic - application monitoring
- Mikado will create its own VPC with public and private subnets in all the available Availability Zones in the selected region - providing a geo-redundant highly-available setup
- The WordPress site will be deployed to an Multi-AZ Auto scaling group with a set of pre-defined but fine tunable up/down scaling rules
- Uploaded assets are stored on an EFS drive
- A Multi-AZ RDS cluster is used in the database layer
- Route53 used to manage DNS for the site
- Optionally you can deploy a Fastly service for your site to cache all your requests.
curl -s https://raw.githubusercontent.com/dominis/mikado/master/scripts/mikado-boom > /tmp/mikado-boom ; bash /tmp/mikado-boom
Mikado provides a Vagrant instance for local development with all the dependencies installed.
Also a dialog based installer provided.
Mikado has a very simple automated deploy workflow based on git and branches.
You need to set the site_repo variable in the env.mk file in the following format: https://YOUR_GITHUB_OAUTH_TOKEN:[email protected]/YOUR_GITHUB_USER/wordpress.example.com.git
More info on the token creation
Take a look at the example repository. The simplest way to start is forking this repo.
developbranch will be deployed to the test serverproductionbranch will be deployed to the prod server- the
wp-contents/uploadsdirectory should be ignored in the.gitignoreand shouldn't exists in the repo, a symlink is created pointing to the EFS mount here automatically - for the test/prod database config check out the wp-config.php
- this is the script which pulls the changes from git every minute on the instances
-
Q: How can I ssh to my instances
-
A: Both the test and prod ELB exposes ssh for the IP blocks in the internal SG (TF_VAR_allowed_cidrs env var), so you can simply
ssh [email protected]orssh [email protected]. -
Q: The following error is thrown during
vagrant up: The box 'bento/centos-7.1' could not be found or could not be accessed in the remote catalog. If this is a private box on HashiCorp's Atlas, please verify you're logged in viavagrant login. Also, please double-check the name. The expanded URL and error message are shown below: (sic!) -
A: On version 1.8.7 the embedded curl Vagrant uses had a bug. Workaround for v1.8.7:
sudo rm -rf /opt/vagrant/embedded/bin/curlOr, update Vagrant to v1.8.8