agnostic continuous delivery
DESCRIPTION
Feedback on the implementation of an architecture allowing to do some Continuous Delivery in both PHP and Java environments for a leading company in the Telecom Industry. We will describe the methods and tools we have implemented as well as the limitations and difficulties we have encountered. Keywords : Industrialization, DevOps, Continuous Delivery, Ansible, Rundeck, Infrastructure As CodeTRANSCRIPT
Agnostic Continuous Delivery
Feedback on the implementation of an architecture allowing to do some Continuous Delivery in both PHP and Java
Hervé Leclerc - Alter Way
Agenda
•REMINDER
•CONTEXT
•GOAL
•PROCESS
•POC / COMPONENTS
•COOL / UNCOOL
•CONCLUSION
2
REMINDER
3
Context : WHO?
•A TOP 3 French Telecom Company
4
Context : WHAT?
•Company in a DIGITIZING Process
5
CONTEXT WHY ?
•To Stay Competitive and responsive
6
CONTEXT : HOW ?
•By Optimizing the TTM
7
GOALContinuous Delivery
8
Goal Constraints
•Solaris on prod - Linux on other env
•Non intrusive solutions (OPS)
•Low learning curve (DEV)
•Code Agnostic (JAVA / PHP)
•Flexible and figure out to deal with existing environments (CI in place)
•Open Source, and innovative
•Sustainable
9
Recipe : A DevOps attitude
10
Recipe : PeopleM
otiv
ated S
ponsors
Convinced Dev and OpsC
ertif
ied U
rbanis
ts
11
Methods
Dev Ops
12
Recipe Components
•Continuous Integration
CI
13
Recipe Components
•Automatic Delivery / Deployment
GUI for users
Deploy Framework
Ansible Extra Modules
Ansible launcher in Rundeck
14
Focus on Continuous Delivery
15
CI and CD PHP
PHPDepend
PHPLoc
PHPUnit
PHPCS
PHPMD
PHPDox
PHPBeautifier
PHPPear
SonatypeNexus
RPM repos
SVN
ECLIPSE
Jenkins
Rundeck
Applications
Ansible
Infras
SVN
C
Sonar
C
16
CI and CD JAVA
SonatypeNexus
RPM repos
SVN
ECLIPSE
Jenkins
Rundeck
Applications
Ansible
Infras
SVN
C
Sonar
C
17
Deployment Workflow
Get Artifact from Nexus
Deployment request
Pull recipes, inventory, manifest from SVN repos
Check nodes with application manifest
Update nodes
Deploy simultaneously on nodes
Checks
Commit Rollback
OK
OK
KO
KO
18
Why Ansible ?
• unlike puppet and chef Ansible is agent less. No need to bootstrap nodes
• works with SSH protocol
• can be used in pull or push mode
• Easy Learning curve
• Can handle both Configuration management and application deployment
• Recipes can read by :
• Dev / Ops,
• Project Supervisor / Project Owner
19
Screen Shots
Application Manifest 20
Screen Shots
Manifest Recipe
21
Screen Shots
Deploy Recipe 22
Screen Shots
Shell 23
Why Rundeck ?
•An open source tool to automate OPS jobs
•Create simple user interfaces to launch jobs
•REST API
•Jenkins plugin
•A simple solution until AWX
24
Screen Shots
Variables definition 25
Screen Shots
Resources ProvidersExecution
26
What’s Cool• All the scripts and recipe are
Versioned in repo
• All the scripts and recipes are fetched from repos before execution
• Inventory files are kept in repo
• Application Manifest
• used to check if the infrastructure can run application
• Describe the application in human language
27
What’s uncool• Fight Luddites
• Rundeck GUI
• No miracle for rollback process
• No nice Ansible output in Rundeck Console
28
WHAT’S Next?
•AWX ?
•Integration of new applications
•Deployment portal
•Create a service catalog
•provision Vms / Env
29
Conclusion
• POC is in production,
• The main thing is a question of culture
• Start by small projects with a solid devops team,
• Be humble,
• You will need Time,
• You must have convictions,
• You will need perseverance
30
31