SlideShare a Scribd company logo
Automating Deployments with
Deployer
@colinodell
@colinodell
Colin O'Dell
Lead Developer & DevOps Engineer
Unleashed Technologies
@colinodell
Frequent Deployments:
• New Initiatives
• Ongoing Growth & Maintenance
• In-House Development
Hassle-Free Deployments:
• Automated
• Repeatable / Reliable
• Minimal Downtime
• Standardized
• Executable by anyone
@colinodell
FTP / vim
@colinodell
@colinodell
git pull
@colinodell
@colinodell
bash script
@colinodell
@colinodell
bash script
@colinodell
@colinodell
bash script
@colinodell
@colinodell
capistrano
@colinodell
capistrano
@colinodell
docker
@colinodell
@colinodell
also docker
@colinodell
✔️
deployer
@colinodell
Overview
• Deployment Methodology
• Getting Started
• Recipes
• Configuration
• Hosts
• Tasks
• Customizations
• Q&A
@colinodell
Deployment Methodology
How Deployer Works Under-The-Hood
@colinodell
webroot
@colinodell
releases
1
current“web root”
@colinodell
releases
1
2
current“web root”
@colinodell
releases
1
2
current“web root”
@colinodell
releases
1
2
current“web root”
@colinodell
releases
1
current
releases
1
current
@colinodell
releases
1
2
current
releases
1
2
current
@colinodell
releases
1
2
current
releases
1
2
current
@colinodell
releases
1
2
current
releases
1
2
current
@colinodell
releases
1
2
current
releases
1
2
current
releases
1
2
current
releases
1
2
current
releases
1
2
current
releases
1
2
current
releases
1
2
current
releases
1
2
current
@colinodell
releases
1
current
shared
@colinodell
releases
1
current
web
settings.php
shared
uploads
@colinodell
releases
1
current
web
settings.php
shared
uploads
uploads
settings.php
src
web
index.php
1
@colinodell
releases
1
current
web
settings.php
shared
uploads
uploads
settings.php
src
web
index.php
1
22
@colinodell
releases
1
current
web
settings.php
shared
uploads
uploads
settings.php
src
web
index.php
1
src
web
index.php
22
@colinodell
releases
1
current
web
settings.php
shared
uploads
uploads
settings.php
src
web
index.php
1
uploads
settings.php
src
web
index.php
22
@colinodell
releases
1
current
web
settings.php
shared
uploads
uploads
settings.php
src
web
index.php
1
uploads
settings.php
src
web
index.php
22
@colinodell
releases
1
current
web
settings.php
shared
uploads
2
Shared Filesystem
(NFS)
releases
1
current
2
@colinodell
Getting Started
@colinodell
Installation
Install .phar globally:
Via Composer (.phar):
Via Composer (source):
Good for developing recipe
Better once completed
@colinodell
Initializing Deployer
@colinodell
deploy.php
@colinodell
@colinodell
“Recipes” (aka deployment script)
• Configuration
• Deployment settings
• Hosts
• Where does this deploy to
• Tasks
• What commands and tasks need to run
@colinodell
Configuration
• Key-value store
• Settings referenced in tasks
@colinodell
has()
set()
get()
@colinodell
has()
set()
get()
add()
@colinodell
Hosts
Define in deploy.php or separate YML file
@colinodell
Host Connection Settings
@colinodell
Multiple Hosts & Environments
@colinodell
Multiple Hosts & Roles
@colinodell
Flow
@colinodell
@colinodell
@colinodell
releases
shared
.dep
@colinodell
releases
shared
.dep
deploy.lock
@colinodell
releases
shared
.dep
deploy.lock
1
1
@colinodell
releases
shared
.dep
deploy.lock
1
1
src
web
index.php
composer.json
@colinodell
releases
shared
.dep
deploy.lock
1 src
web
index.php
1
uploads
settings.php
composer.json
@colinodell
releases
shared
.dep
deploy.lock
1 src
web
index.php
1
uploads
settings.php
composer.json
@colinodell
releases
shared
.dep
deploy.lock
1 src
web
index.php
1
uploads
settings.php
composer.json
vendor
@colinodell
releases
shared
.dep
deploy.lock
1 src
web
index.php
1
uploads
settings.php
composer.json
vendor
@colinodell
releases
shared
.dep
deploy.lock
1 src
web
index.php
1
uploads
settings.php
composer.json
vendor
current
@colinodell
releases
shared
.dep
deploy.lock
1 src
web
index.php
1
uploads
settings.php
composer.json
vendor
current
@colinodell
releases
shared
.dep
1 src
web
index.php
1
uploads
settings.php
composer.json
vendor
current
@colinodell
releases
shared
.dep
1 src
web
index.php
1
uploads
settings.php
composer.json
vendor
current
@colinodell
@colinodell
Making Deployments
@colinodell
Making Verbose Deployments
@colinodell
Making Very Verbose Deployments
@colinodell
Making Very Very Verbose Deployments
@colinodell
Making Very Very Verbose Deployments
@colinodell
Making Very Very Verbose Deployments
@colinodell
Default Task Execution
Host 1
Task 1
Host 2 Host 3
Task 1
Task 1
Task 2
Task 2
Task 2
Host 4
Task 1
Task 2
@colinodell
Parallel Task Execution: --parallel
Host 1
Task 1
Host 2 Host 3
Task 1 Task 1
Task 2 Task 2 Task 2
Host 4
Task 1
Task 2
Task 3 Task 3 Task 3 Task 3
@colinodell
Parallel Task Execution: --parallel --limit=2
Host 1
Task 1
Host 2 Host 3
Task 1
Task 2 Task 2
Task 1
Host 4
Task 1
Task 2 Task 2
@colinodell
Other Commands
@colinodell
Other Recipes
@colinodell
Other Recipes:
WordPress
@colinodell
Other Recipes:
Laravel
@colinodell
Other Recipes:
Laravel
@colinodell
Customization
Defining custom tasks & recipes
@colinodell
Custom Tasks
@colinodell
Custom
Tasks
@colinodell
Custom
Tasks
@colinodell
Custom
Tasks
@colinodell
Custom Tasks
@colinodell
Custom Tasks
@colinodell
Custom Tasks
@colinodell
Custom Tasks
@colinodell
@colinodell
Custom Tasks
@colinodell
Questions?
Feedback Appreciated!
https://joind.in/talk/e3775
Learn More about Deployer:
https://deployer.org/docs
Slides:
Twitter: @colinodell

More Related Content

Automating Deployments with Deployer - php[world] 2018