SlideShare a Scribd company logo
1 of 56
Download to read offline
www.oss4b.it
Infrastructure as data with
Ansible
for easier Continuous Delivery
Carlo Bonamico
carlo.bonamico@nispro.it
http://www.carlobonamico.com/blog/
@carlobonamico
OSS4B 2013 - Open Source Software for Business
19-20 September 2013, Monash University Prato Centre
Prato, Tuscany, Italy
www.oss4b.it
Do you like
• Staying up late to reconfigure a server?
• Having to rely on a server that took a week to setup,
– and lose it because of an HD failure?
• Worrying about late and “frightening” releases?
• Spend hours/days troubleshooting
– Only to discover a minor difference in OS/app config
• Being unable to deploy a critical fix
– because the upgrade process is so fragile and long that “it is better
not to touch the system”?
• Be unable to quickly scale your application on multiple
servers
– because the IT administration becomes too complex and
time-consuming?
www.oss4b.it
Ansible Hello World
If the answer to these question is
NO!
Then this talk is for you...
Discuss how to improve our software delivery...
www.oss4b.it
Or better...
• Find a better way of delivering value to users / customers
– Reduce the time between when new needs arise and when IT
satisfies them
– Even anticipating them...
• How long does it take to deploy a single line change into
production?
– (crucial question by Mary Poppendieck)
• Any work (code, configuration, setup...) available only to
developers and testers, but not to users
– Is (almost) worthless!
We need
a better process
(and some tools)
www.oss4b.it
Why this is not easy?
• Time spent on tasks not effective
– waste in Lean terms
• Long Test times and costs ↔ Low Quality
• Duration and complexity of deployments
– Releasing/Deployment means Risk
– So to avoid risk, we deploy less often...
• → This actually increases risk!
www.oss4b.it
www.oss4b.it
Continuous Delivery
• Avoid huge manual changes
– 1-2 macro releases per year
– Each requiring seven people each one of which has intimate detail
of a single issue in the process
• If they go wrong, long service outages
– Unacceptable risk level
–
• Transition to many incremental steps
– Every week / day / even hours...
– Less risky (and more easily rolled back)
– Ideally automated
• Jez Humble, David Farley
– http://www.slideshare.net/jezhumble/continuous-delivery-5359386
Our highest priority is to satisfy the customer
through early and continuous delivery of valuable software
The Agile Manifesto
www.oss4b.it
Advantages
• Widely adopted at
– IBM, Amazon, Facebook, Google, ...
– Premium Credit Limited, London Multi-Asset Exchange,
Commonwealth Bank
– RCS Media Group, Siemens, HP
• Best practice recommended by IBM and Toughtworks
among many others.
WHY?
• IT + Business managed and improved together
– Decrease Lead Time
– Increase opportunities for Learning / Innovation / Optimization
• Achieve both Quality AND Productivity
www.oss4b.it
Principles of Continuous Delivery
• The process for releasing/deploying software MUST be
repeatable and reliable
• Automate everything!
• If somethings difficult or painful, do it more often
• Keep everything in source control
• Done means “released”
• Build quality in
• Everybody has responsibility for the release process
• Improve continuously
• http://java.dzone.com/articles/8-principles-continuous
www.oss4b.it
Continuous Delivery Practices
• Build binaries only once
• Use precisely the same mechanism to deploy to every
environment
• Smoke test your deployment
• If anything fails, stop the line!
• Low Risk Releases
– incremental
– decouple deployment and release
– focus on reducing batch size
– optimize for resilience
• See also
– http://continuousdelivery.com/2012/02/four-principles-of-low-risk-s
oftware-releases/
www.oss4b.it
Ok, I want to do Continuous Delivery...
– to get advantages in term of efficiency, quality and reduction of
time-to-market
• The part about incremental code changes and releases is
familiar to me
– See Continuous Integration, Agile methods
• But how do I Continuously evolve my infrastructure?
– OS configuration
– Installed packages
– Security settings
– Performance tuning
– …
• This still requires manual work by ops people...
– We do not have time/resources to change our way of working
www.oss4b.it
What would I need...
• Manage BOTH code and infrastructure through a
www.oss4b.it
The ideal Infrastructure management process is
• Automatic
• Repeatable and consistent
– Recreate as many time as needed
• Across environments (DEV → TEST → PROD)
• Across hosts (clusters - cloud)
• Versionable
• Robust and resilient to
– network failures
– hardware failures
• Self-checking
www.oss4b.it
AND “easy”
• In addition to that, lightweight, EASY to setup, use and
learn
– with limited or no additional effort with respect to manual
approaches
– by both Developers and Operations
– lending itself to incremental introduction
–
• What if infrastructure management was easier than
hacking with keyboard and shell scripts?
Simplicity – the art of maximizing the amount of work
NOT done – is essential
The Agile Manifesto
www.oss4b.it
Ansible
• What if setting up and configuring your cloud / private
infrastructure were even simpler than writing a shell script?
• Based on the concept of Infrastructure as Data
– simplicity as key design requirement
– powerful
– easy to learn for Dev and Ops people alike
• Created by Michael De Haan of Cobbler fame
– Open Source @ https://github.com/ansible/ansible/
– now supported by http://www.ansibleworks.com/
• Well documented
• Growing, active and supportive community
www.oss4b.it
Ansible provides
• Node inventory
• Three key capabilities:
– remote execution across multiple machines
• actions and commands
– file, package and configuration distribution
– automated configuration and deployment
orchestrated across machines
www.oss4b.it
What's inside?
• Modular, agentless, secure architecture
– Python core, modules in any language
www.oss4b.it
How does Ansible work?
• Work on all Unix/Linuxes
– currently limited Windows support
• Transport over SSH by default
– or encrypted socket for performance
• accelerated mode
– pluggable transport protocols
• Text-based and versioning friendly
– inventory, configuration and playbooks in YAML
• No DB is involved
– but CMDBs can be integrated via API
www.oss4b.it
Getting Ansible
• Minimal install
– sudo add­apt­repository ppa:rquillo/ansible
– sudo apt­get update
– sudo apt­get install ansible ­y
• Or even from git checkout or pip
– http://www.ansibleworks.com/docs/gettingstarted.html
• Minimal requirements
– Python 2.6 on the commander
– Python 2.4 on the nodes
– Three phyton packages (autoinstalled by pip or apt )
• Paramiko, Jinjia2, PyYaml
www.oss4b.it
Pizzamatic Time!
• Infrastructure for a fictional
pizza-order-taking SAAS
www.oss4b.it
Pizzamatic infrastructure
• We start from “empty” Ubuntu Server
images and add
– front-end server with Apache2 and mod_proxy
– back-end application servers with Tomcat 7
– Postgresql DB
• Common features
– Ssh public key – passwordless login
– Ufw for firewall
• Assume initial user/pwd: manager/ansibledemo
www.oss4b.it
Getting Started
• Configure /etc/hosts or DNS
• Configure ansible_hosts
– .ini format
– Hosts
– Groups, with []
• Global in ~/ansible_hosts
• Local with -i <<path to ansible_hosts>>
www.oss4b.it
First steps
• ansible ­k ­m ping ­u manager 
pizzamatic­fe­test­01
–-k means ask password
–-m means module (ping)
–-u initial connection user
–Target host
www.oss4b.it
First steps (with Public Key)
• Setup passwordless initial login
– ssh­keygen ­b 2048 
» enter pizzamatic_rsa as filename
– ssh­add ~/.ssh/pizzamatic_rsa
– ssh­copy­id ­i ~/.ssh/pizzamatic_rsa 
manager@pizzamatic­ge­test­01
• Then
– ansible ­m ping ­u manager 
pizzamatic­fe­test­01
• If it hangs, either
– You forgot the -k, and a certificate was not installed (or viceversa)
– You added the -K (sudo password), and passwordless sudo is
enabled
www.oss4b.it
Move to Playbooks
• Efficient way of describing the desired
configuration of multiple hosts
– And then “apply” it
– Incrementally
• Auto-resume
• Synchronization
• Versioning
– Composition with Roles
• ansible-playbook pizzamatic.playbook
www.oss4b.it
Behaviour Driven Development - with Infrastructure???
• First, descrive desired infrastructure status
as plain text
– #pizzamatic service requires front­end
• #pizzamatic service requires apache2
• #etc
– #pizzamatic service requires application 
servers
• Then translate it incrementally in ansible
“actions” → execute it!
www.oss4b.it
Actions: an example
#Installing and configuring Apache 2
  ­ name: require Apache2 package installed
    action: apt pkg=apache2
  ­ name: Generate the virtual host configuration 
    action: template src=src/${service.name}­ssl.j2 
dest=/etc/apache2/sites­available
  ­ name: Ensure the site is up (custom command)
    action: command a2ensite ${service.name}­ssl
  
  ­ action: service name=apache2 state=started
www.oss4b.it
Ansible Actions
• Not ideal term! Very often “actions” do
nothing!
– Because the system is already in the desired
state
• action: file dest=/home state=present
• They do something only if the system is not
in the desired state
www.oss4b.it
Ansible Actions
• Most Ansible Actions are Idempotent
– “big word” meaning that you can repeat them as many
times as you want and always get the same result
• In the real world
– Turning a glass upside down to empty it is idempotent
– Filling a glass with water is NOT idempotent
• In practice, it's what makes ansible useful
www.oss4b.it
BDD with Infrastructure???
• Red
–Error
• Yellow
–Applied, changed
• Green
–Already in the desired state
www.oss4b.it
Red: error
www.oss4b.it
Yellow: change performed
www.oss4b.it
Green: state already ok
www.oss4b.it
Infrastructure as what?
Ansible = Infrastructure as Data
You describe your infrastructure
You version the description
“Applying” the description and actually ensuring that
the infrastructure exists and is in the desired state is
an implementation detail
- (and up to ansible, not you)
www.oss4b.it
Ansible Modules
• Clean and modular way of defining actions
– encapsulate best practices
– A single ansible action encapsulates lines and lines
of shell scripts
• Very strong emphasis on reuse
–And abstraction
www.oss4b.it
Ansible Modules
• Implemented in any
language
– Python, java, bash...
– Core modules are in
python
• Input:
– parameter string
• Output:
– json data
– Including state
• Cloud
– ec2, linode, openstack,
rackspace, vmware
• Commands
– command, shell, ...
• Database
– mongodb, mysql, postgresql,
redis...
• Files
– assemble, copy, fetch,
lineinfile, template
• Inventory
– add_host, group_by
And many more!
www.oss4b.it
Ansible Modules
• Messaging
– rabbitmq
• Monitoring
– airbrake, boundary, datadog,
nagios, pagerduty...
• Net Infrastructure
– arista, dnsmadeeasy, ...
• Network
– get_url, slurp, uri (REST
client)
• Notification
– mail, irc, jabber,...
• Packaging
– apt, easy_install, gem,
macports, npm, openbsd,
pip, rpm, yum, ...
• Source Control
– bzr, git, hg, subversion
• System
– authorized_key, cron, facter,
filesystem, group, lvg/lvol,
mount, selinux, service, user
• Utilities
– accelerate, debug, wait_for
• Web
– django_manage, htpasswd,
supervisorctl
www.oss4b.it
Variables
• Declared
–In the ansible_hosts file
–individual YAML files relative to the
inventory file
• e.g. host_vars/pizzamatic-fe-test-01
­­­
ntp_server: acme.example.org
www.oss4b.it
Facts
• Automatically collected facts about systems
involved in the playbook
– ${inventory_hostname}
– ${ansible_eth0.ipv4.address}
• Can be use as variables in playbook and
templates
• Check with ansible <<hosts>> ­m setup
• Can extended with commander fact
database (in facts.d)
www.oss4b.it
Templates
• Jinja2 templates
–very similar to java ${property} syntax
• Env.sh.j2
export JAVA_HOME=/home/
{{service.user}}/jdk1.7.0
export PATH=$PATH:$JAVA_HOME/bin
www.oss4b.it
Handlers
• Respond to asynchronous events
- template: src=template.j2 
dest=/etc/foo.conf
•   notify:
•      ­ restart apache
  handlers:
  ­ name: restart apache
    action: service name=apache2 
state=restarted
www.oss4b.it
Playbook Structure
---
  ­ hosts: pizzamatic­fe­test­01
  gather_facts: yes
  user: pizzamatic
  sudo: yes
  
  vars_files:
    ­ pizzamatic.yml
  
  vars:
    name: pizzamatic
  tasks:
  ­ include: pizzamatic­fe.playbook #child sees parent 
variables and params    
www.oss4b.it
Roles
• Encapsulate a reusable service definition including
– Actions
– Variables
– Templates
– Files
• Defined in standard directory structure (subproject-like)
• A host / group can have multiple roles
• A role can be applied to multiple groups
• E.g.
– Roles: common, postgres, tomcat, apache
– In DEV: all roles on a single machine
– In TEST/PROD: common on all machines, other roles to multiple
machines in the cluster
www.oss4b.it
Roles example
­­­
­ hosts: pizzamatic
  gather_facts: no
  sudo: yes
  user: manager
  roles:
    ­ common
    ­ jdk7
    ­ postgres
    ­ tomcat
    ­ apache
  tasks:
   ­ debug: "Generic task for {{service.user}}"
www.oss4b.it
File management and transfer
• To the nodes
– ansible atlanta ­m copy ­a "src=/etc/hosts dest=/tmp/hosts"
– ansible webservers ­m file ­a "dest=/srv/foo/b.txt mode=600 
owner=mdehaan group=mdehaan"
– ansible webservers ­m file ­a "dest=/path/to/c mode=644 
owner=mdehaan group=mdehaan state=directory"
– ansible webservers ­m file ­a "dest=/path/to/c state=absent"
• From the nodes
– Use the fetch module
www.oss4b.it
Case Studies
www.oss4b.it
Case A) Advertising project
• Platform for deliverying innovative advertising clips to
digital cinemas across Italy
– Central server
– N local players at each venue
• Challenge: high cost of in-site intervention
• Everything installed with Ansible
– Including video drivers, audio volume settings…
• Automatic configuration and software upgrades
– Even with intermittent connectivity
• Lessons learned
– Essential for an innovative project where cycle time and reliability
where needed to meet demanding business deadlines
– Mitigated hardware problems
www.oss4b.it
Case B) Alfresco platform setup
• Used to be fairly time consuming
– OS / LVM for storage
– Postgresql DB
• And tablespace configuration
– JDK
– Alfresco
• Configuration
• Active Directory integration
• Ansible script developed in 1-2 days
– Setup time: 15 minutes
• Easily adapted to three different projects / customers
– Even more reuse with the “roles” feature added in 1.2
www.oss4b.it
Advantages
• Significantly more reuse with respect to shell scripts
– Comparable effort on the first install
– Huge time saving on the following
• Tests are much more reliable
– Exactly replicate PROD environment
• Support for incremental, always-on Green/Blue
deployments
www.oss4b.it
Best Practices
• Good old Software Engineering Principles
still apply!
– Don't Repeat Yourself
– Good Names make the difference
– Be simple
– S.O.L.I.D.
• http://butunclebob.com/ArticleS.UncleBob.Pri
nciplesOfOod
www.oss4b.it
Useful Tools
• Yaml Editor for Eclipse
–https://code.google.com/p/yedit/
–https://code.google.com/p/yamleditor/
• Git & Mercurial
www.oss4b.it
References - Ansible
• Ansible Home & Ansible Docs
– http://www.ansibleworks.com/docs/
• Presentations
– https://speakerdeck.com/mpdehaan/ansible
• AnsibleWorks
– http://www.ansibleworks.com/
• This tutorial
– https://github.com/carlobonamico/ansible-tutorial
And
the very active
google group
ansible-project
www.oss4b.it
Tips and Tricks
• Speed up SSH with Control Persist
– http://blogs.perl.org/users/smylers/2011/08/ssh-productivity-tips.ht
ml
www.oss4b.it
References - Continuous Delivery
• General
– http://continuousdelivery.com/
– http://www.slideshare.net/eduardsi/continuous-delivery-18191261
– http://www.thoughtworks.com/sites/www.thoughtworks.com/files/fil
es/us-format-continuous-delivery-brochure-online.pdf
• Maturity model
– http://info.thoughtworks.com/rs/thoughtworks2/images/Continuous
%20Delivery%20_%20A%20Maturity%20Assessment
%20ModelFINAL.pdf
• Patterns
– http://refcardz.dzone.com/refcardz/continuous-delivery-patterns
www.oss4b.it
References
• My blog
– http://www.carlobonamico.com
– http://slideshare.net/carlo.bonamico
• Contact me
– carlo.bonamico@nispro.it
• JUG Genova
– http://juggenova.net
• Twitter
– @carlobonamico - #ansible
Thank you
for your attention!
www.oss4b.it
License
• Creative Commons:
– Attribution-Non-Commercial-Share Alike 3.0
– You are free:
• to copy, distribute, display, and perform the work
• to make derivative works
– Under the following conditions:
• Attribution. You must give the original author credit.
• Non-Commercial. You may not use this work for commercial purposes.
• Share Alike. If you alter, transform, or build upon this work, you may
distribute the resulting work only under a licence identical to this one.

More Related Content

What's hot

Vue micro frontend implementation patterns
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patternsAlbert Brand
 
Do Visualizations help during development? Using Moose while coding.
Do Visualizations help during development? Using Moose while coding.Do Visualizations help during development? Using Moose while coding.
Do Visualizations help during development? Using Moose while coding.ESUG
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Massimo Bonanni
 
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom SmalltalkAppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom SmalltalkESUG
 
How adding a further tool can be a good thing
How adding a further tool can be a good thingHow adding a further tool can be a good thing
How adding a further tool can be a good thingBelsoft
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015DotNetCampus
 
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Serdar Basegmez
 
"Building Cross-platform Without Sacrificing Performance" by Simon Sturmer (K...
"Building Cross-platform Without Sacrificing Performance" by Simon Sturmer (K..."Building Cross-platform Without Sacrificing Performance" by Simon Sturmer (K...
"Building Cross-platform Without Sacrificing Performance" by Simon Sturmer (K...Tech in Asia ID
 
Progressive Web Apps. What, why and how
Progressive Web Apps. What, why and howProgressive Web Apps. What, why and how
Progressive Web Apps. What, why and howRiza Fahmi
 
Reasons to migrate to modern web development with JavaScript
Reasons to migrate to modern web development with JavaScriptReasons to migrate to modern web development with JavaScript
Reasons to migrate to modern web development with JavaScriptDavid Amend
 
Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Stephen Chin
 
JavaFX and HTML5 - Like Curds and Rice
JavaFX and HTML5 - Like Curds and RiceJavaFX and HTML5 - Like Curds and Rice
JavaFX and HTML5 - Like Curds and RiceStephen Chin
 
JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)Stephen Chin
 
How to Implement Micro Frontend Architecture using Angular Framework
How to Implement Micro Frontend Architecture using Angular FrameworkHow to Implement Micro Frontend Architecture using Angular Framework
How to Implement Micro Frontend Architecture using Angular FrameworkRapidValue
 
Modern Web Application Development Workflow - EclipseCon US 2014
Modern Web Application Development Workflow - EclipseCon US 2014Modern Web Application Development Workflow - EclipseCon US 2014
Modern Web Application Development Workflow - EclipseCon US 2014Stéphane Bégaudeau
 
Your Future HTML: The Evolution of Site Design with Web Components
Your Future HTML: The Evolution of Site Design with Web ComponentsYour Future HTML: The Evolution of Site Design with Web Components
Your Future HTML: The Evolution of Site Design with Web ComponentsKen Tabor
 
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?Andrew Mleczko
 
Will the Real Public API Please Stand Up? Amir Zuker
Will the Real Public API Please Stand Up? Amir ZukerWill the Real Public API Please Stand Up? Amir Zuker
Will the Real Public API Please Stand Up? Amir ZukerCodeValue
 
5 best Java Frameworks
5 best Java Frameworks5 best Java Frameworks
5 best Java FrameworksAegis Softtech
 

What's hot (20)

Vue micro frontend implementation patterns
Vue micro frontend implementation patternsVue micro frontend implementation patterns
Vue micro frontend implementation patterns
 
Do Visualizations help during development? Using Moose while coding.
Do Visualizations help during development? Using Moose while coding.Do Visualizations help during development? Using Moose while coding.
Do Visualizations help during development? Using Moose while coding.
 
Java Framework comparison
Java Framework comparisonJava Framework comparison
Java Framework comparison
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
 
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom SmalltalkAppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
 
How adding a further tool can be a good thing
How adding a further tool can be a good thingHow adding a further tool can be a good thing
How adding a further tool can be a good thing
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
 
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
 
"Building Cross-platform Without Sacrificing Performance" by Simon Sturmer (K...
"Building Cross-platform Without Sacrificing Performance" by Simon Sturmer (K..."Building Cross-platform Without Sacrificing Performance" by Simon Sturmer (K...
"Building Cross-platform Without Sacrificing Performance" by Simon Sturmer (K...
 
Progressive Web Apps. What, why and how
Progressive Web Apps. What, why and howProgressive Web Apps. What, why and how
Progressive Web Apps. What, why and how
 
Reasons to migrate to modern web development with JavaScript
Reasons to migrate to modern web development with JavaScriptReasons to migrate to modern web development with JavaScript
Reasons to migrate to modern web development with JavaScript
 
Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5Moving to the Client - JavaFX and HTML5
Moving to the Client - JavaFX and HTML5
 
JavaFX and HTML5 - Like Curds and Rice
JavaFX and HTML5 - Like Curds and RiceJavaFX and HTML5 - Like Curds and Rice
JavaFX and HTML5 - Like Curds and Rice
 
JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)
 
How to Implement Micro Frontend Architecture using Angular Framework
How to Implement Micro Frontend Architecture using Angular FrameworkHow to Implement Micro Frontend Architecture using Angular Framework
How to Implement Micro Frontend Architecture using Angular Framework
 
Modern Web Application Development Workflow - EclipseCon US 2014
Modern Web Application Development Workflow - EclipseCon US 2014Modern Web Application Development Workflow - EclipseCon US 2014
Modern Web Application Development Workflow - EclipseCon US 2014
 
Your Future HTML: The Evolution of Site Design with Web Components
Your Future HTML: The Evolution of Site Design with Web ComponentsYour Future HTML: The Evolution of Site Design with Web Components
Your Future HTML: The Evolution of Site Design with Web Components
 
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
 
Will the Real Public API Please Stand Up? Amir Zuker
Will the Real Public API Please Stand Up? Amir ZukerWill the Real Public API Please Stand Up? Amir Zuker
Will the Real Public API Please Stand Up? Amir Zuker
 
5 best Java Frameworks
5 best Java Frameworks5 best Java Frameworks
5 best Java Frameworks
 

Similar to Infrastructure as Data with Ansible for easier Continuous Delivery

Picnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationPicnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationNick Josevski
 
Managing Exchange 2016 - Paul Robichaux
Managing Exchange 2016 - Paul RobichauxManaging Exchange 2016 - Paul Robichaux
Managing Exchange 2016 - Paul RobichauxSummit 7 Systems
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Brian Ritchie
 
Top 10 Tips for an Effective Postgres Deployment
Top 10 Tips for an Effective Postgres DeploymentTop 10 Tips for an Effective Postgres Deployment
Top 10 Tips for an Effective Postgres DeploymentEDB
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsAchievers Tech
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureSARCCOM
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Cultureifnu bima
 
Top10 list planningpostgresdeployment.2014
Top10 list planningpostgresdeployment.2014Top10 list planningpostgresdeployment.2014
Top10 list planningpostgresdeployment.2014EDB
 
The Hard Problems of Continuous Deployment
The Hard Problems of Continuous DeploymentThe Hard Problems of Continuous Deployment
The Hard Problems of Continuous DeploymentTimothy Fitz
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFxThomas Daly
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSaspyker
 
How Open Source Embiggens Salesforce.com
How Open Source Embiggens Salesforce.comHow Open Source Embiggens Salesforce.com
How Open Source Embiggens Salesforce.comSalesforce Engineering
 
Webinar: IBM Connections Adminblast
Webinar: IBM Connections AdminblastWebinar: IBM Connections Adminblast
Webinar: IBM Connections Adminblastpanagenda
 
Webinar: IBM Connections Adminblast
Webinar: IBM Connections AdminblastWebinar: IBM Connections Adminblast
Webinar: IBM Connections AdminblastNico Meisenzahl
 
JavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservicesJavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservicesBart Blommaerts
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?Eduard Tomàs
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...DevConFu
 
Introduction to the Typesafe Reactive Platform
Introduction to the Typesafe Reactive PlatformIntroduction to the Typesafe Reactive Platform
Introduction to the Typesafe Reactive PlatformBoldRadius Solutions
 

Similar to Infrastructure as Data with Ansible for easier Continuous Delivery (20)

Picnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationPicnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable application
 
Managing Exchange 2016 - Paul Robichaux
Managing Exchange 2016 - Paul RobichauxManaging Exchange 2016 - Paul Robichaux
Managing Exchange 2016 - Paul Robichaux
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
 
Top 10 Tips for an Effective Postgres Deployment
Top 10 Tips for an Effective Postgres DeploymentTop 10 Tips for an Effective Postgres Deployment
Top 10 Tips for an Effective Postgres Deployment
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering Culture
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Culture
 
Top10 list planningpostgresdeployment.2014
Top10 list planningpostgresdeployment.2014Top10 list planningpostgresdeployment.2014
Top10 list planningpostgresdeployment.2014
 
The Hard Problems of Continuous Deployment
The Hard Problems of Continuous DeploymentThe Hard Problems of Continuous Deployment
The Hard Problems of Continuous Deployment
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFx
 
Ci & proServer
Ci & proServerCi & proServer
Ci & proServer
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSS
 
How Open Source Embiggens Salesforce.com
How Open Source Embiggens Salesforce.comHow Open Source Embiggens Salesforce.com
How Open Source Embiggens Salesforce.com
 
Webinar: IBM Connections Adminblast
Webinar: IBM Connections AdminblastWebinar: IBM Connections Adminblast
Webinar: IBM Connections Adminblast
 
Webinar: IBM Connections Adminblast
Webinar: IBM Connections AdminblastWebinar: IBM Connections Adminblast
Webinar: IBM Connections Adminblast
 
JavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservicesJavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservices
 
Deploying PHP apps on the cloud
Deploying PHP apps on the cloudDeploying PHP apps on the cloud
Deploying PHP apps on the cloud
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
 
Introduction to the Typesafe Reactive Platform
Introduction to the Typesafe Reactive PlatformIntroduction to the Typesafe Reactive Platform
Introduction to the Typesafe Reactive Platform
 

More from Carlo Bonamico

Build Your Own Angular Component Library
Build Your Own Angular Component LibraryBuild Your Own Angular Component Library
Build Your Own Angular Component LibraryCarlo Bonamico
 
Angular Rebooted: Components Everywhere
Angular Rebooted: Components EverywhereAngular Rebooted: Components Everywhere
Angular Rebooted: Components EverywhereCarlo Bonamico
 
Continuous Security: Zap security bugs now Codemotion-2015
Continuous Security: Zap security bugs now Codemotion-2015Continuous Security: Zap security bugs now Codemotion-2015
Continuous Security: Zap security bugs now Codemotion-2015Carlo Bonamico
 
AngularJS Security: defend your Single Page Application
AngularJS Security: defend your Single Page Application AngularJS Security: defend your Single Page Application
AngularJS Security: defend your Single Page Application Carlo Bonamico
 
Web Application Security Reloaded for the HTML5 era
Web Application Security Reloaded for the HTML5 eraWeb Application Security Reloaded for the HTML5 era
Web Application Security Reloaded for the HTML5 eraCarlo Bonamico
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014Carlo Bonamico
 
Mobile HTML5 websites and Hybrid Apps with AngularJS
Mobile HTML5 websites and Hybrid Apps with AngularJSMobile HTML5 websites and Hybrid Apps with AngularJS
Mobile HTML5 websites and Hybrid Apps with AngularJSCarlo Bonamico
 
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013Carlo Bonamico
 
Infrastructure as Data with Ansible
Infrastructure as Data with AnsibleInfrastructure as Data with Ansible
Infrastructure as Data with AnsibleCarlo Bonamico
 
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...Carlo Bonamico
 
Maven 2 in the real world
Maven 2 in the real worldMaven 2 in the real world
Maven 2 in the real worldCarlo Bonamico
 
Nasa World Wind For Java (by Fabrizio Giudici)
Nasa World Wind For Java (by Fabrizio Giudici)Nasa World Wind For Java (by Fabrizio Giudici)
Nasa World Wind For Java (by Fabrizio Giudici)Carlo Bonamico
 
Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)Carlo Bonamico
 

More from Carlo Bonamico (14)

Build Your Own Angular Component Library
Build Your Own Angular Component LibraryBuild Your Own Angular Component Library
Build Your Own Angular Component Library
 
Angular Rebooted: Components Everywhere
Angular Rebooted: Components EverywhereAngular Rebooted: Components Everywhere
Angular Rebooted: Components Everywhere
 
Continuous Security: Zap security bugs now Codemotion-2015
Continuous Security: Zap security bugs now Codemotion-2015Continuous Security: Zap security bugs now Codemotion-2015
Continuous Security: Zap security bugs now Codemotion-2015
 
AngularJS Security: defend your Single Page Application
AngularJS Security: defend your Single Page Application AngularJS Security: defend your Single Page Application
AngularJS Security: defend your Single Page Application
 
Web Application Security Reloaded for the HTML5 era
Web Application Security Reloaded for the HTML5 eraWeb Application Security Reloaded for the HTML5 era
Web Application Security Reloaded for the HTML5 era
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 
Mobile HTML5 websites and Hybrid Apps with AngularJS
Mobile HTML5 websites and Hybrid Apps with AngularJSMobile HTML5 websites and Hybrid Apps with AngularJS
Mobile HTML5 websites and Hybrid Apps with AngularJS
 
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
 
Infrastructure as Data with Ansible
Infrastructure as Data with AnsibleInfrastructure as Data with Ansible
Infrastructure as Data with Ansible
 
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...
 
Maven 2 in the real world
Maven 2 in the real worldMaven 2 in the real world
Maven 2 in the real world
 
Nasa World Wind For Java (by Fabrizio Giudici)
Nasa World Wind For Java (by Fabrizio Giudici)Nasa World Wind For Java (by Fabrizio Giudici)
Nasa World Wind For Java (by Fabrizio Giudici)
 
Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)
 
Build Automation Tips
Build Automation TipsBuild Automation Tips
Build Automation Tips
 

Recently uploaded

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

Infrastructure as Data with Ansible for easier Continuous Delivery

  • 1. www.oss4b.it Infrastructure as data with Ansible for easier Continuous Delivery Carlo Bonamico carlo.bonamico@nispro.it http://www.carlobonamico.com/blog/ @carlobonamico OSS4B 2013 - Open Source Software for Business 19-20 September 2013, Monash University Prato Centre Prato, Tuscany, Italy
  • 2. www.oss4b.it Do you like • Staying up late to reconfigure a server? • Having to rely on a server that took a week to setup, – and lose it because of an HD failure? • Worrying about late and “frightening” releases? • Spend hours/days troubleshooting – Only to discover a minor difference in OS/app config • Being unable to deploy a critical fix – because the upgrade process is so fragile and long that “it is better not to touch the system”? • Be unable to quickly scale your application on multiple servers – because the IT administration becomes too complex and time-consuming?
  • 3. www.oss4b.it Ansible Hello World If the answer to these question is NO! Then this talk is for you... Discuss how to improve our software delivery...
  • 4. www.oss4b.it Or better... • Find a better way of delivering value to users / customers – Reduce the time between when new needs arise and when IT satisfies them – Even anticipating them... • How long does it take to deploy a single line change into production? – (crucial question by Mary Poppendieck) • Any work (code, configuration, setup...) available only to developers and testers, but not to users – Is (almost) worthless! We need a better process (and some tools)
  • 5. www.oss4b.it Why this is not easy? • Time spent on tasks not effective – waste in Lean terms • Long Test times and costs ↔ Low Quality • Duration and complexity of deployments – Releasing/Deployment means Risk – So to avoid risk, we deploy less often... • → This actually increases risk!
  • 7. www.oss4b.it Continuous Delivery • Avoid huge manual changes – 1-2 macro releases per year – Each requiring seven people each one of which has intimate detail of a single issue in the process • If they go wrong, long service outages – Unacceptable risk level – • Transition to many incremental steps – Every week / day / even hours... – Less risky (and more easily rolled back) – Ideally automated • Jez Humble, David Farley – http://www.slideshare.net/jezhumble/continuous-delivery-5359386 Our highest priority is to satisfy the customer through early and continuous delivery of valuable software The Agile Manifesto
  • 8. www.oss4b.it Advantages • Widely adopted at – IBM, Amazon, Facebook, Google, ... – Premium Credit Limited, London Multi-Asset Exchange, Commonwealth Bank – RCS Media Group, Siemens, HP • Best practice recommended by IBM and Toughtworks among many others. WHY? • IT + Business managed and improved together – Decrease Lead Time – Increase opportunities for Learning / Innovation / Optimization • Achieve both Quality AND Productivity
  • 9. www.oss4b.it Principles of Continuous Delivery • The process for releasing/deploying software MUST be repeatable and reliable • Automate everything! • If somethings difficult or painful, do it more often • Keep everything in source control • Done means “released” • Build quality in • Everybody has responsibility for the release process • Improve continuously • http://java.dzone.com/articles/8-principles-continuous
  • 10. www.oss4b.it Continuous Delivery Practices • Build binaries only once • Use precisely the same mechanism to deploy to every environment • Smoke test your deployment • If anything fails, stop the line! • Low Risk Releases – incremental – decouple deployment and release – focus on reducing batch size – optimize for resilience • See also – http://continuousdelivery.com/2012/02/four-principles-of-low-risk-s oftware-releases/
  • 11. www.oss4b.it Ok, I want to do Continuous Delivery... – to get advantages in term of efficiency, quality and reduction of time-to-market • The part about incremental code changes and releases is familiar to me – See Continuous Integration, Agile methods • But how do I Continuously evolve my infrastructure? – OS configuration – Installed packages – Security settings – Performance tuning – … • This still requires manual work by ops people... – We do not have time/resources to change our way of working
  • 12. www.oss4b.it What would I need... • Manage BOTH code and infrastructure through a
  • 13. www.oss4b.it The ideal Infrastructure management process is • Automatic • Repeatable and consistent – Recreate as many time as needed • Across environments (DEV → TEST → PROD) • Across hosts (clusters - cloud) • Versionable • Robust and resilient to – network failures – hardware failures • Self-checking
  • 14. www.oss4b.it AND “easy” • In addition to that, lightweight, EASY to setup, use and learn – with limited or no additional effort with respect to manual approaches – by both Developers and Operations – lending itself to incremental introduction – • What if infrastructure management was easier than hacking with keyboard and shell scripts? Simplicity – the art of maximizing the amount of work NOT done – is essential The Agile Manifesto
  • 15. www.oss4b.it Ansible • What if setting up and configuring your cloud / private infrastructure were even simpler than writing a shell script? • Based on the concept of Infrastructure as Data – simplicity as key design requirement – powerful – easy to learn for Dev and Ops people alike • Created by Michael De Haan of Cobbler fame – Open Source @ https://github.com/ansible/ansible/ – now supported by http://www.ansibleworks.com/ • Well documented • Growing, active and supportive community
  • 16. www.oss4b.it Ansible provides • Node inventory • Three key capabilities: – remote execution across multiple machines • actions and commands – file, package and configuration distribution – automated configuration and deployment orchestrated across machines
  • 17. www.oss4b.it What's inside? • Modular, agentless, secure architecture – Python core, modules in any language
  • 18. www.oss4b.it How does Ansible work? • Work on all Unix/Linuxes – currently limited Windows support • Transport over SSH by default – or encrypted socket for performance • accelerated mode – pluggable transport protocols • Text-based and versioning friendly – inventory, configuration and playbooks in YAML • No DB is involved – but CMDBs can be integrated via API
  • 19. www.oss4b.it Getting Ansible • Minimal install – sudo add­apt­repository ppa:rquillo/ansible – sudo apt­get update – sudo apt­get install ansible ­y • Or even from git checkout or pip – http://www.ansibleworks.com/docs/gettingstarted.html • Minimal requirements – Python 2.6 on the commander – Python 2.4 on the nodes – Three phyton packages (autoinstalled by pip or apt ) • Paramiko, Jinjia2, PyYaml
  • 20. www.oss4b.it Pizzamatic Time! • Infrastructure for a fictional pizza-order-taking SAAS
  • 21. www.oss4b.it Pizzamatic infrastructure • We start from “empty” Ubuntu Server images and add – front-end server with Apache2 and mod_proxy – back-end application servers with Tomcat 7 – Postgresql DB • Common features – Ssh public key – passwordless login – Ufw for firewall • Assume initial user/pwd: manager/ansibledemo
  • 22. www.oss4b.it Getting Started • Configure /etc/hosts or DNS • Configure ansible_hosts – .ini format – Hosts – Groups, with [] • Global in ~/ansible_hosts • Local with -i <<path to ansible_hosts>>
  • 23. www.oss4b.it First steps • ansible ­k ­m ping ­u manager  pizzamatic­fe­test­01 –-k means ask password –-m means module (ping) –-u initial connection user –Target host
  • 24. www.oss4b.it First steps (with Public Key) • Setup passwordless initial login – ssh­keygen ­b 2048  » enter pizzamatic_rsa as filename – ssh­add ~/.ssh/pizzamatic_rsa – ssh­copy­id ­i ~/.ssh/pizzamatic_rsa  manager@pizzamatic­ge­test­01 • Then – ansible ­m ping ­u manager  pizzamatic­fe­test­01 • If it hangs, either – You forgot the -k, and a certificate was not installed (or viceversa) – You added the -K (sudo password), and passwordless sudo is enabled
  • 25. www.oss4b.it Move to Playbooks • Efficient way of describing the desired configuration of multiple hosts – And then “apply” it – Incrementally • Auto-resume • Synchronization • Versioning – Composition with Roles • ansible-playbook pizzamatic.playbook
  • 26. www.oss4b.it Behaviour Driven Development - with Infrastructure??? • First, descrive desired infrastructure status as plain text – #pizzamatic service requires front­end • #pizzamatic service requires apache2 • #etc – #pizzamatic service requires application  servers • Then translate it incrementally in ansible “actions” → execute it!
  • 28. www.oss4b.it Ansible Actions • Not ideal term! Very often “actions” do nothing! – Because the system is already in the desired state • action: file dest=/home state=present • They do something only if the system is not in the desired state
  • 29. www.oss4b.it Ansible Actions • Most Ansible Actions are Idempotent – “big word” meaning that you can repeat them as many times as you want and always get the same result • In the real world – Turning a glass upside down to empty it is idempotent – Filling a glass with water is NOT idempotent • In practice, it's what makes ansible useful
  • 30. www.oss4b.it BDD with Infrastructure??? • Red –Error • Yellow –Applied, changed • Green –Already in the desired state
  • 34. www.oss4b.it Infrastructure as what? Ansible = Infrastructure as Data You describe your infrastructure You version the description “Applying” the description and actually ensuring that the infrastructure exists and is in the desired state is an implementation detail - (and up to ansible, not you)
  • 35. www.oss4b.it Ansible Modules • Clean and modular way of defining actions – encapsulate best practices – A single ansible action encapsulates lines and lines of shell scripts • Very strong emphasis on reuse –And abstraction
  • 36. www.oss4b.it Ansible Modules • Implemented in any language – Python, java, bash... – Core modules are in python • Input: – parameter string • Output: – json data – Including state • Cloud – ec2, linode, openstack, rackspace, vmware • Commands – command, shell, ... • Database – mongodb, mysql, postgresql, redis... • Files – assemble, copy, fetch, lineinfile, template • Inventory – add_host, group_by And many more!
  • 37. www.oss4b.it Ansible Modules • Messaging – rabbitmq • Monitoring – airbrake, boundary, datadog, nagios, pagerduty... • Net Infrastructure – arista, dnsmadeeasy, ... • Network – get_url, slurp, uri (REST client) • Notification – mail, irc, jabber,... • Packaging – apt, easy_install, gem, macports, npm, openbsd, pip, rpm, yum, ... • Source Control – bzr, git, hg, subversion • System – authorized_key, cron, facter, filesystem, group, lvg/lvol, mount, selinux, service, user • Utilities – accelerate, debug, wait_for • Web – django_manage, htpasswd, supervisorctl
  • 38. www.oss4b.it Variables • Declared –In the ansible_hosts file –individual YAML files relative to the inventory file • e.g. host_vars/pizzamatic-fe-test-01 ­­­ ntp_server: acme.example.org
  • 39. www.oss4b.it Facts • Automatically collected facts about systems involved in the playbook – ${inventory_hostname} – ${ansible_eth0.ipv4.address} • Can be use as variables in playbook and templates • Check with ansible <<hosts>> ­m setup • Can extended with commander fact database (in facts.d)
  • 40. www.oss4b.it Templates • Jinja2 templates –very similar to java ${property} syntax • Env.sh.j2 export JAVA_HOME=/home/ {{service.user}}/jdk1.7.0 export PATH=$PATH:$JAVA_HOME/bin
  • 41. www.oss4b.it Handlers • Respond to asynchronous events - template: src=template.j2  dest=/etc/foo.conf •   notify: •      ­ restart apache   handlers:   ­ name: restart apache     action: service name=apache2  state=restarted
  • 43. www.oss4b.it Roles • Encapsulate a reusable service definition including – Actions – Variables – Templates – Files • Defined in standard directory structure (subproject-like) • A host / group can have multiple roles • A role can be applied to multiple groups • E.g. – Roles: common, postgres, tomcat, apache – In DEV: all roles on a single machine – In TEST/PROD: common on all machines, other roles to multiple machines in the cluster
  • 45. www.oss4b.it File management and transfer • To the nodes – ansible atlanta ­m copy ­a "src=/etc/hosts dest=/tmp/hosts" – ansible webservers ­m file ­a "dest=/srv/foo/b.txt mode=600  owner=mdehaan group=mdehaan" – ansible webservers ­m file ­a "dest=/path/to/c mode=644  owner=mdehaan group=mdehaan state=directory" – ansible webservers ­m file ­a "dest=/path/to/c state=absent" • From the nodes – Use the fetch module
  • 47. www.oss4b.it Case A) Advertising project • Platform for deliverying innovative advertising clips to digital cinemas across Italy – Central server – N local players at each venue • Challenge: high cost of in-site intervention • Everything installed with Ansible – Including video drivers, audio volume settings… • Automatic configuration and software upgrades – Even with intermittent connectivity • Lessons learned – Essential for an innovative project where cycle time and reliability where needed to meet demanding business deadlines – Mitigated hardware problems
  • 48. www.oss4b.it Case B) Alfresco platform setup • Used to be fairly time consuming – OS / LVM for storage – Postgresql DB • And tablespace configuration – JDK – Alfresco • Configuration • Active Directory integration • Ansible script developed in 1-2 days – Setup time: 15 minutes • Easily adapted to three different projects / customers – Even more reuse with the “roles” feature added in 1.2
  • 49. www.oss4b.it Advantages • Significantly more reuse with respect to shell scripts – Comparable effort on the first install – Huge time saving on the following • Tests are much more reliable – Exactly replicate PROD environment • Support for incremental, always-on Green/Blue deployments
  • 50. www.oss4b.it Best Practices • Good old Software Engineering Principles still apply! – Don't Repeat Yourself – Good Names make the difference – Be simple – S.O.L.I.D. • http://butunclebob.com/ArticleS.UncleBob.Pri nciplesOfOod
  • 51. www.oss4b.it Useful Tools • Yaml Editor for Eclipse –https://code.google.com/p/yedit/ –https://code.google.com/p/yamleditor/ • Git & Mercurial
  • 52. www.oss4b.it References - Ansible • Ansible Home & Ansible Docs – http://www.ansibleworks.com/docs/ • Presentations – https://speakerdeck.com/mpdehaan/ansible • AnsibleWorks – http://www.ansibleworks.com/ • This tutorial – https://github.com/carlobonamico/ansible-tutorial And the very active google group ansible-project
  • 53. www.oss4b.it Tips and Tricks • Speed up SSH with Control Persist – http://blogs.perl.org/users/smylers/2011/08/ssh-productivity-tips.ht ml
  • 54. www.oss4b.it References - Continuous Delivery • General – http://continuousdelivery.com/ – http://www.slideshare.net/eduardsi/continuous-delivery-18191261 – http://www.thoughtworks.com/sites/www.thoughtworks.com/files/fil es/us-format-continuous-delivery-brochure-online.pdf • Maturity model – http://info.thoughtworks.com/rs/thoughtworks2/images/Continuous %20Delivery%20_%20A%20Maturity%20Assessment %20ModelFINAL.pdf • Patterns – http://refcardz.dzone.com/refcardz/continuous-delivery-patterns
  • 55. www.oss4b.it References • My blog – http://www.carlobonamico.com – http://slideshare.net/carlo.bonamico • Contact me – carlo.bonamico@nispro.it • JUG Genova – http://juggenova.net • Twitter – @carlobonamico - #ansible Thank you for your attention!
  • 56. www.oss4b.it License • Creative Commons: – Attribution-Non-Commercial-Share Alike 3.0 – You are free: • to copy, distribute, display, and perform the work • to make derivative works – Under the following conditions: • Attribution. You must give the original author credit. • Non-Commercial. You may not use this work for commercial purposes. • Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a licence identical to this one.