18
APPLICATION DEPLOYMENT USING ANSIBLE Cliffano Subagio | @cliffano | Sensis

Application Deployment Using Ansible

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Application Deployment Using Ansible

APPLICATION DEPLOYMENT USING ANSIBLECliffano Subagio | @cliffano | Sensis

Page 2: Application Deployment Using Ansible

/me> Continuous Integration/Deployment/Delivery> Most important lesson: Never ever write a deployment framework in Ant!

Page 3: Application Deployment Using Ansible

/project> Micro-services architecture> 15 applications> 2 data centers> 2 x 10 app servers> 2 x 3 db servers> Hundreds of deployments to date

Page 4: Application Deployment Using Ansible

ansible> Orchestration + automation engine> Application deployment> System provisioning

Page 5: Application Deployment Using Ansible

why ansible> Push via SSH> No agents on remote systems> Readable playbook> Tasks executed in order> Built-in + custom modules> Community growth

Page 6: Application Deployment Using Ansible

sample usageansible-playbook --inventory-file=hosts.ini --module-path=path/to/custom-modules --extra-vars=”ENV=test VERSION=1.2.3” --tags ci -u username --verbose app-playbook.yml

Page 7: Application Deployment Using Ansible

sample inventory file[foo-dev]devhost1.some.domain.com

[foo-test]testhost1.some.domain.comtesthost2.some.domain.com

[bar-test]testhost1.some.domain.com

Page 8: Application Deployment Using Ansible

sample playbook- hosts: foo-$ENV vars: BASE=/app/ tasks: - name: Send artifact file to remote system copy: src=foo-$VERSION.tar.gz dest=$BASE/builds tags: - ci

Page 9: Application Deployment Using Ansible

separation of concerns> Playbook defines how to deploy an app> Inventory file defines where to deploy those apps

Page 10: Application Deployment Using Ansible

artifacts

app1playbook.yml

app2playbook.yml

app3playbook.yml

app4playbook.yml

app5playbook.yml

app6playbook.yml

projectinventoryfilepackage.json

> Avoid monolithic deployment configuration

Page 11: Application Deployment Using Ansible

deployment flow

artifact-repoapp6-0.0.3.tar.gz

jenkins

deploy-server

devsource-repo

test

stage

prodrelease-repoproject-2.3.4.tar.gz

Page 12: Application Deployment Using Ansible

custom module> Usage: cleanbuilds dir=/app/foo/builds/ keep=5 > Keeps the last N builds> Controls disk usage> Written in python

Page 13: Application Deployment Using Ansible

gnu parallel> Improve deployment time> (echo app1 && echo app2) | parallel ansible-playbook ...> Grouping and ordering of stdout & stderr> Optimised to available CPU cores

Page 14: Application Deployment Using Ansible

what’s next

> Write more common Ansible modules> ControlMaster, 0mq> AnsibleWorks AWX

Page 15: Application Deployment Using Ansible

AWX

Page 16: Application Deployment Using Ansible

conclusions> Ansible really works (no pun intended)> Modules encourage reusability> I’m not writing a deployment framework> Collaboration between dev, devops, ops teams

Page 17: Application Deployment Using Ansible

questions + discussion