Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Automated, platform-independent deployment

No description
by

Ernst Kuschke

on 10 March 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Automated, platform-independent deployment

Automated, platform-independent deployment
our journey at Allan Gray
Product Backlog
Prioritised
Independently shippable
Shared
Living
Development
Unit Tests
Writing Code
Source Control
Continuous Integration
Local
environment
Quality Control
Integration tests
Regression testing
User Acceptance Testing
Shared defect list
Isolated
environment
The Twelve-Factor App
1 Codebase
2 Dependencies
3 Config
4 Backing Services
5 Build, release, run
6 Processes
7 Port binding
8 Concurrency
9 Disposability
10 Dev/Prod parity
11 Logs
12 Admin processes
http://12factor.net/
Development
Build Server
Package
Package Repository
C#.net
Scala
SQL
Windows
Linux
Jenkins
Bamboo
debian
nuget
chocolatey
gem
npm
bower
...
Artifactory
Environment
UAT
QA
Pre-Prod
Production
EnvX
...
Deploy Server
Package vX.X.X
Source Control
Git
Subversion
Windows / Linux
Environment
Config
Config Repository
(Ansible scripts in Git)
Environment
hosts
credentials (encrypted)
Roles
Apply to host
iis-webserver
bpm-api
(typically delivers a package)
Templates
Filled in with Env variables
Delivered to hosts
Important
Environments
Environments are not precious
Can safely be destroyed and re-created
Roles
Environment unaware
Sequence of steps
Applied to hosts
Hosts
Defined per Environment
Define platform
(Windows/Linux/etc)
Packages
Config independent
Dependency hierarchy
Versioned
Can be rebuilt at any time
Platform-specific
Example: public website
Chocolatey package, depends on other choco packages:
powerYaml
ag-iis
ag-iis-urlrewrite
ag-newrelic-web
Config:
UAT environment hosts:


[public-site-frontend]
public-site[1:2].uat.gray.net

[public-site-cms]
public-site-admin[1:2].uat.gray.net

[public-site:children]
public-site-frontend
public-site-cms
... more config (credentials, templates, etc)
Deployments
No agents on hosts
Access via ssh/win-rm
Role:
public-site role
Depends no chocolatey role
Database migrations (flyway)
Deliver configuration
Deploy packages
Our journey at Allan Gray
This is not easy
Ansible is geared for Linux (Windows support via Ansible-Extras)
Chocolatey is young and immature (yet the best option)
Ansible to provision Virtual Machines in future
Ansible to deploy Docker-swarms in future (Docker runs on Windows 2014+)
Lots to learn, as this is brand new
All the trouble is absolutely worth the effort - orchestrating a complex, multi-node deploy with the click of a button is a beautiful thing!
Ernst Kuschke
@ernstk
Full transcript