SlideShare a Scribd company logo
1 of 22
Download to read offline
ENTER
How to use Open Source Software to have near
production development and testing
environments
23.04.15 Matthias Klein
IntroductionIntroduction11
PuppetPuppet22
Package ManagementPackage Management33
JenkinsJenkins44
VagrantVagrant55
23.04.15 Matthias Klein 2
23.04.15 Matthias Klein 3
●
Since 6 years SysAdmin in browser gaming companies
●
Since 2 years responsible for internal systems @InnoGames,
including SysAdmin internals and centralised services for our games
●
InnoGames is a developer and provider of online games with 150
million registered players, located in Hamburg
About me
23.04.15 Matthias Klein 4
●
We are operating around 8000 servers, 90% are VMs
●
We are using Debian on almost all machines
●
For management, deployment and monitoring we use Puppet,
Jenkins, dpkg-deb and Icinga (+ mod_gearman)
●
We have our self written admintool (inventory system) which can
pass information to puppet
●
We rewrote apt-mirror to have a better handling of our repositories
About the infrastructure
23.04.15 Matthias Klein 5
You may know
new fancy code
Server
deployment
BOOM
23.04.15 Matthias Klein 6
●
Different software versions on dev/testing/production servers
●
Missing software on production machines
●
Deployment has also build steps
●
Configurations on dev/testing/production don't match
Things that cause trouble
23.04.15 Matthias Klein 7
How it could be
new fancy code
Server
deployment
Surrrr
23.04.15 Matthias Klein 8
●
Developers test locally in a vagrant machine which is provisioned
by the same puppet files as the production servers (WIP)
●
Jenkins is a job starter, tests are executed on VMs, also using the
puppet files from production
●
Jenkins builds a .deb package on demand, which then is made
available at the update server and tested on staging systems
●
The tested package is deployed to the production system
How did we achieve this?
IntroductionIntroduction11
PuppetPuppet22
Package ManagementPackage Management33
JenkinsJenkins44
VagrantVagrant55
23.04.15 Matthias Klein 9
23.04.15 Matthias Klein 10
●
Puppet is a configuration management system that allows you to
define the state of your IT infrastructure, then automatically
enforces the correct state. (https://puppetlabs.com)
●
Environments: have multiple Puppet masters glued into one with
possible interaction
●
external_nodes: instead of searching in site.pp, Puppet executes a
script which returns the classes to apply, the environment and other
useful variables defined by you
●
Hiera: define additional variables to use in different scopes and/or
environments
Puppet and extensions
23.04.15 Matthias Klein 11
One possibility
nginx-config.server1
…
server_name a.example.com
...
nginx-config.server2
…
server_name b.example.com
...
if ($::fqdn == server1) {
file { 'nginx-config':
source => 'nginx-config.server1'
}
}
elsif ($::fqdn == server2) {
file { 'nginx-config':
source => 'nginx-config.server2'
}
}
23.04.15 Matthias Klein 12
Using Hiera and environments
…
"project::servername": "a.example.com"
...
…
"project::servername": "b.example.com"
...
class project($servername)
…
file {'nginx-config':
template => 'nginx-config.erb'
...
nginx-config.erb
…
server_name <%= @servername %>;
...
23.04.15 Matthias Klein
IntroductionIntroduction11
PuppetPuppet22
Package ManagementPackage Management33
JenkinsJenkins44
VagrantVagrant55
13
23.04.15 Matthias Klein 14
●
Control which packages and versions are available
●
Use puppets 'latest' functionality
●
Make testing easier with dedicated repositories
●
Deploy your application with a package via 'apt-get install'
Why you need your own package server
23.04.15 Matthias Klein 15
●
Use apt-mirror to mirror one/multiple repositories to your server
●
Put the packages you need to a new folder (to save disk space use
hardlinks, don't forget the dependencies) => this will become your
new repository
●
Use apt-ftparchive to generate signatures and Packages files
●
Make sure you enabled the possibility to download the packages
(http/ftp)
●
Soon to be available: ig.mirror / ig.package => a more comfortable
way to handle your repositories
How to get your own package server
23.04.15 Matthias Klein 16
●
You should not allow other package sources except yours
(especially when using puppets 'latest' functionality)
●
You should check if every package installed on the machine is
available in your repository (you may miss updates)
●
You should check if the packages on your machine are the same
version as in your repositories
●
You should check if your repositories are up to date with the
upstream
●
You may have to explain to your Devs why they can't install most
packages anymore
Caveats
23.04.15 Matthias Klein
IntroductionIntroduction11
PuppetPuppet22
Package ManagementPackage Management33
JenkinsJenkins44
VagrantVagrant55
17
23.04.15 Matthias Klein 18
●
Tests aren't done on the Jenkins server anymore, Jenkins starts
them on dedicated VMs (easy to create thanks to Puppet)
●
We use XEN VMs because we had severe problems with vagrant for
testing:
– Start/Stop multiple vagrant boxes at the same time is a bad idea, at least with
VirtualBox
– Provisioning takes a long time (but can be reduced by suspending boxes)
– Overall perfomance is very bad (around 1/10th compared to XEN)
Jenkins does new things
23.04.15 Matthias Klein 19
●
You need a build trigger in Jenkins (we use the Tag event in gitlab)
●
You need your application built and put to the desired path
●
You need a control file in the DEBIAN folder, containing information
like name, version, dependencies, conflicts
●
You can add scripts to the DEBIAN/(pre|post)(inst|rm|upgrade) files
to do stuff your package needs to work (e.g. starting/stopping
daemons)
●
To build: dpkg-deb -b <SOURCE_DIR> <PACKAGE_DIR>
●
Push / pull the package to your repository and regenerate Packages
files
How to build a Debian package
23.04.15 Matthias Klein
IntroductionIntroduction11
PuppetPuppet22
Package ManagementPackage Management33
JenkinsJenkins44
VagrantVagrant55
20
23.04.15 Matthias Klein 21
●
Use the puppet_server provisioner, make sure you set up an
environment for vagrant => to not conflict with production use a
dedicated server
●
Teach your Devs how to configure their stuff in puppet, let them put
it to a VCS, check these definitions against the ones you are using
in production and merge/reject changes
●
You will have classes which you only use for the vagrant boxes, but
check them also and have them in production, because important
settings may hide there
Vagrant is for your Devs
23.04.15 Matthias Klein 22
Thanks for listening
Questions?
For additional information, availability of the repository scripts and
some nagios checks contact matthias.klein@innogames.com
The End

More Related Content

What's hot

Leveraging the Power of containerd Events - Evan Hazlett
Leveraging the Power of containerd Events - Evan HazlettLeveraging the Power of containerd Events - Evan Hazlett
Leveraging the Power of containerd Events - Evan HazlettDocker, Inc.
 
Docker session IV: Docker Compose and Docker Swarm
Docker session IV: Docker Compose and Docker SwarmDocker session IV: Docker Compose and Docker Swarm
Docker session IV: Docker Compose and Docker SwarmDegendra Sivakoti
 
Running Docker with OpenStack | Docker workshop #1
Running Docker with OpenStack | Docker workshop #1Running Docker with OpenStack | Docker workshop #1
Running Docker with OpenStack | Docker workshop #1dotCloud
 
Container Orchestration from Theory to Practice
Container Orchestration from Theory to PracticeContainer Orchestration from Theory to Practice
Container Orchestration from Theory to PracticeDocker, Inc.
 
Kubernetes Workshop
Kubernetes WorkshopKubernetes Workshop
Kubernetes WorkshopWalter Liu
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetesGöksel Pırnal
 
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...OpenNebula Project
 
How to Achieve Canary Deployment on Kubernetes
How to Achieve Canary Deployment on KubernetesHow to Achieve Canary Deployment on Kubernetes
How to Achieve Canary Deployment on KubernetesHanLing Shen
 
Introduction kubernetes 2017_12_24
Introduction kubernetes 2017_12_24Introduction kubernetes 2017_12_24
Introduction kubernetes 2017_12_24Sam Zheng
 
To Russia with Love: Deploying Kubernetes in Exotic Locations On Prem
To Russia with Love: Deploying Kubernetes in Exotic Locations On PremTo Russia with Love: Deploying Kubernetes in Exotic Locations On Prem
To Russia with Love: Deploying Kubernetes in Exotic Locations On PremCloudOps2005
 
Using Docker Swarm Mode to Deploy Service Without Loss by Dongluo Chen & Nish...
Using Docker Swarm Mode to Deploy Service Without Loss by Dongluo Chen & Nish...Using Docker Swarm Mode to Deploy Service Without Loss by Dongluo Chen & Nish...
Using Docker Swarm Mode to Deploy Service Without Loss by Dongluo Chen & Nish...Docker, Inc.
 
In-Cluster Continuous Testing Framework for Docker Containers
In-Cluster Continuous Testing Framework for Docker ContainersIn-Cluster Continuous Testing Framework for Docker Containers
In-Cluster Continuous Testing Framework for Docker ContainersNeil Gehani
 
Monitoring kubernetes with prometheus
Monitoring kubernetes with prometheusMonitoring kubernetes with prometheus
Monitoring kubernetes with prometheusBrice Fernandes
 
Docker Networking in OpenStack: What you need to know now
Docker Networking in OpenStack: What you need to know nowDocker Networking in OpenStack: What you need to know now
Docker Networking in OpenStack: What you need to know nowPLUMgrid
 
OpenNebulaConf2017EU: One (Windows) Image to Rule them All by Paul Batchelor,...
OpenNebulaConf2017EU: One (Windows) Image to Rule them All by Paul Batchelor,...OpenNebulaConf2017EU: One (Windows) Image to Rule them All by Paul Batchelor,...
OpenNebulaConf2017EU: One (Windows) Image to Rule them All by Paul Batchelor,...OpenNebula Project
 
AtlasCamp 2015: The age of orchestration: From Docker basics to cluster manag...
AtlasCamp 2015: The age of orchestration: From Docker basics to cluster manag...AtlasCamp 2015: The age of orchestration: From Docker basics to cluster manag...
AtlasCamp 2015: The age of orchestration: From Docker basics to cluster manag...Atlassian
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to KubernetesImesh Gunaratne
 
OpenNebulaConf2017EU: Alternative Context for Windows by Paul Batchelor, Blac...
OpenNebulaConf2017EU: Alternative Context for Windows by Paul Batchelor, Blac...OpenNebulaConf2017EU: Alternative Context for Windows by Paul Batchelor, Blac...
OpenNebulaConf2017EU: Alternative Context for Windows by Paul Batchelor, Blac...OpenNebula Project
 

What's hot (20)

Leveraging the Power of containerd Events - Evan Hazlett
Leveraging the Power of containerd Events - Evan HazlettLeveraging the Power of containerd Events - Evan Hazlett
Leveraging the Power of containerd Events - Evan Hazlett
 
Docker session IV: Docker Compose and Docker Swarm
Docker session IV: Docker Compose and Docker SwarmDocker session IV: Docker Compose and Docker Swarm
Docker session IV: Docker Compose and Docker Swarm
 
Running Docker with OpenStack | Docker workshop #1
Running Docker with OpenStack | Docker workshop #1Running Docker with OpenStack | Docker workshop #1
Running Docker with OpenStack | Docker workshop #1
 
Container Orchestration from Theory to Practice
Container Orchestration from Theory to PracticeContainer Orchestration from Theory to Practice
Container Orchestration from Theory to Practice
 
Kubernetes Workshop
Kubernetes WorkshopKubernetes Workshop
Kubernetes Workshop
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...
OpenNebulaConf 2016 - Evolution of OpenNebula at Netways by Sebastian Saemann...
 
Docker / Ansible
Docker / AnsibleDocker / Ansible
Docker / Ansible
 
How to Achieve Canary Deployment on Kubernetes
How to Achieve Canary Deployment on KubernetesHow to Achieve Canary Deployment on Kubernetes
How to Achieve Canary Deployment on Kubernetes
 
Introduction kubernetes 2017_12_24
Introduction kubernetes 2017_12_24Introduction kubernetes 2017_12_24
Introduction kubernetes 2017_12_24
 
To Russia with Love: Deploying Kubernetes in Exotic Locations On Prem
To Russia with Love: Deploying Kubernetes in Exotic Locations On PremTo Russia with Love: Deploying Kubernetes in Exotic Locations On Prem
To Russia with Love: Deploying Kubernetes in Exotic Locations On Prem
 
Using Docker Swarm Mode to Deploy Service Without Loss by Dongluo Chen & Nish...
Using Docker Swarm Mode to Deploy Service Without Loss by Dongluo Chen & Nish...Using Docker Swarm Mode to Deploy Service Without Loss by Dongluo Chen & Nish...
Using Docker Swarm Mode to Deploy Service Without Loss by Dongluo Chen & Nish...
 
In-Cluster Continuous Testing Framework for Docker Containers
In-Cluster Continuous Testing Framework for Docker ContainersIn-Cluster Continuous Testing Framework for Docker Containers
In-Cluster Continuous Testing Framework for Docker Containers
 
Monitoring kubernetes with prometheus
Monitoring kubernetes with prometheusMonitoring kubernetes with prometheus
Monitoring kubernetes with prometheus
 
Docker Networking in OpenStack: What you need to know now
Docker Networking in OpenStack: What you need to know nowDocker Networking in OpenStack: What you need to know now
Docker Networking in OpenStack: What you need to know now
 
kubernetes for beginners
kubernetes for beginnerskubernetes for beginners
kubernetes for beginners
 
OpenNebulaConf2017EU: One (Windows) Image to Rule them All by Paul Batchelor,...
OpenNebulaConf2017EU: One (Windows) Image to Rule them All by Paul Batchelor,...OpenNebulaConf2017EU: One (Windows) Image to Rule them All by Paul Batchelor,...
OpenNebulaConf2017EU: One (Windows) Image to Rule them All by Paul Batchelor,...
 
AtlasCamp 2015: The age of orchestration: From Docker basics to cluster manag...
AtlasCamp 2015: The age of orchestration: From Docker basics to cluster manag...AtlasCamp 2015: The age of orchestration: From Docker basics to cluster manag...
AtlasCamp 2015: The age of orchestration: From Docker basics to cluster manag...
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
OpenNebulaConf2017EU: Alternative Context for Windows by Paul Batchelor, Blac...
OpenNebulaConf2017EU: Alternative Context for Windows by Paul Batchelor, Blac...OpenNebulaConf2017EU: Alternative Context for Windows by Paul Batchelor, Blac...
OpenNebulaConf2017EU: Alternative Context for Windows by Paul Batchelor, Blac...
 

Viewers also liked

Viewers also liked (14)

How Long Do You Have to Retain Payroll Records?
How Long Do You Have to Retain Payroll Records?How Long Do You Have to Retain Payroll Records?
How Long Do You Have to Retain Payroll Records?
 
Re live
Re liveRe live
Re live
 
Crianasndigo leecarroll
Crianasndigo leecarrollCrianasndigo leecarroll
Crianasndigo leecarroll
 
New york- Presentación para Inglés
New york- Presentación para InglésNew york- Presentación para Inglés
New york- Presentación para Inglés
 
Andrew Fogg, Founder & CDO at import.io: "Sex, Drugs & Data: UK GDP Redux"
Andrew Fogg, Founder & CDO at import.io: "Sex, Drugs & Data: UK GDP Redux"Andrew Fogg, Founder & CDO at import.io: "Sex, Drugs & Data: UK GDP Redux"
Andrew Fogg, Founder & CDO at import.io: "Sex, Drugs & Data: UK GDP Redux"
 
Production roles aoife
Production roles  aoifeProduction roles  aoife
Production roles aoife
 
Ambulatório Amawta
Ambulatório AmawtaAmbulatório Amawta
Ambulatório Amawta
 
aati_brochure_rev 8
aati_brochure_rev 8aati_brochure_rev 8
aati_brochure_rev 8
 
PI PRODUK HEWAN SEGAR
PI PRODUK HEWAN SEGARPI PRODUK HEWAN SEGAR
PI PRODUK HEWAN SEGAR
 
Ripley Utility Tool WS 1 - Mid-Span Cable Stripper 8-20mm
Ripley Utility Tool WS 1 - Mid-Span Cable Stripper 8-20mmRipley Utility Tool WS 1 - Mid-Span Cable Stripper 8-20mm
Ripley Utility Tool WS 1 - Mid-Span Cable Stripper 8-20mm
 
PI PRODUK HEWAN OLAHAN
PI PRODUK HEWAN OLAHANPI PRODUK HEWAN OLAHAN
PI PRODUK HEWAN OLAHAN
 
150 words story
150 words story150 words story
150 words story
 
European Commitment signed in Rome by 12 countries
European Commitment signed in Rome by 12 countriesEuropean Commitment signed in Rome by 12 countries
European Commitment signed in Rome by 12 countries
 
Ejemploresumidodeinvestigacinaccin 121003195825-phpapp02
Ejemploresumidodeinvestigacinaccin 121003195825-phpapp02Ejemploresumidodeinvestigacinaccin 121003195825-phpapp02
Ejemploresumidodeinvestigacinaccin 121003195825-phpapp02
 

Similar to OSDC 2015: Matthias Klein | How to use Open Source Software to have near Production Development and Testing Environments

Heroku to Kubernetes & Gihub to Gitlab success story
Heroku to Kubernetes & Gihub to Gitlab success storyHeroku to Kubernetes & Gihub to Gitlab success story
Heroku to Kubernetes & Gihub to Gitlab success storyJérémy Wimsingues
 
Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)DECK36
 
Troubleshooting containerized triple o deployment
Troubleshooting containerized triple o deploymentTroubleshooting containerized triple o deployment
Troubleshooting containerized triple o deploymentSadique Puthen
 
ContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureYury Tsarev
 
Container orchestration and microservices world
Container orchestration and microservices worldContainer orchestration and microservices world
Container orchestration and microservices worldKarol Chrapek
 
Deploying PostgreSQL on Kubernetes
Deploying PostgreSQL on KubernetesDeploying PostgreSQL on Kubernetes
Deploying PostgreSQL on KubernetesJimmy Angelakos
 
Introduction to Jenkins X
Introduction to Jenkins XIntroduction to Jenkins X
Introduction to Jenkins XFaithlin Paul
 
Automating Mendix application deployments with Nix
Automating Mendix application deployments with NixAutomating Mendix application deployments with Nix
Automating Mendix application deployments with NixSander van der Burg
 
Kubernetes laravel and kubernetes
Kubernetes   laravel and kubernetesKubernetes   laravel and kubernetes
Kubernetes laravel and kubernetesWilliam Stewart
 
Monitoring hybrid container environments
Monitoring hybrid container environments Monitoring hybrid container environments
Monitoring hybrid container environments Samuel Vandamme
 
6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production 6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production Hung Lin
 
CI/CD Across Multiple Environments
CI/CD Across Multiple EnvironmentsCI/CD Across Multiple Environments
CI/CD Across Multiple EnvironmentsKarl Isenberg
 
NGINX Installation and Tuning
NGINX Installation and TuningNGINX Installation and Tuning
NGINX Installation and TuningNGINX, Inc.
 
Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Mohamad Hassan
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdfAbid Malik
 
Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3Velocidex Enterprises
 
nix-processmgmt: An experimental Nix-based process manager-agnostic framework
nix-processmgmt: An experimental Nix-based process manager-agnostic frameworknix-processmgmt: An experimental Nix-based process manager-agnostic framework
nix-processmgmt: An experimental Nix-based process manager-agnostic frameworkSander van der Burg
 
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...Nicolas Brousse
 
Simplify and run your development environments with Vagrant on OpenStack
Simplify and run your development environments with Vagrant on OpenStackSimplify and run your development environments with Vagrant on OpenStack
Simplify and run your development environments with Vagrant on OpenStackB1 Systems GmbH
 

Similar to OSDC 2015: Matthias Klein | How to use Open Source Software to have near Production Development and Testing Environments (20)

Heroku to Kubernetes & Gihub to Gitlab success story
Heroku to Kubernetes & Gihub to Gitlab success storyHeroku to Kubernetes & Gihub to Gitlab success story
Heroku to Kubernetes & Gihub to Gitlab success story
 
Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)
 
Troubleshooting containerized triple o deployment
Troubleshooting containerized triple o deploymentTroubleshooting containerized triple o deployment
Troubleshooting containerized triple o deployment
 
ContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven Infrastructure
 
Container orchestration and microservices world
Container orchestration and microservices worldContainer orchestration and microservices world
Container orchestration and microservices world
 
Deploying PostgreSQL on Kubernetes
Deploying PostgreSQL on KubernetesDeploying PostgreSQL on Kubernetes
Deploying PostgreSQL on Kubernetes
 
Dockerized maven
Dockerized mavenDockerized maven
Dockerized maven
 
Introduction to Jenkins X
Introduction to Jenkins XIntroduction to Jenkins X
Introduction to Jenkins X
 
Automating Mendix application deployments with Nix
Automating Mendix application deployments with NixAutomating Mendix application deployments with Nix
Automating Mendix application deployments with Nix
 
Kubernetes laravel and kubernetes
Kubernetes   laravel and kubernetesKubernetes   laravel and kubernetes
Kubernetes laravel and kubernetes
 
Monitoring hybrid container environments
Monitoring hybrid container environments Monitoring hybrid container environments
Monitoring hybrid container environments
 
6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production 6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production
 
CI/CD Across Multiple Environments
CI/CD Across Multiple EnvironmentsCI/CD Across Multiple Environments
CI/CD Across Multiple Environments
 
NGINX Installation and Tuning
NGINX Installation and TuningNGINX Installation and Tuning
NGINX Installation and Tuning
 
Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017Splunk n-box-splunk conf-2017
Splunk n-box-splunk conf-2017
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdf
 
Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3Digital Forensics and Incident Response in The Cloud Part 3
Digital Forensics and Incident Response in The Cloud Part 3
 
nix-processmgmt: An experimental Nix-based process manager-agnostic framework
nix-processmgmt: An experimental Nix-based process manager-agnostic frameworknix-processmgmt: An experimental Nix-based process manager-agnostic framework
nix-processmgmt: An experimental Nix-based process manager-agnostic framework
 
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
 
Simplify and run your development environments with Vagrant on OpenStack
Simplify and run your development environments with Vagrant on OpenStackSimplify and run your development environments with Vagrant on OpenStack
Simplify and run your development environments with Vagrant on OpenStack
 

Recently uploaded

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 

OSDC 2015: Matthias Klein | How to use Open Source Software to have near Production Development and Testing Environments

  • 1. ENTER How to use Open Source Software to have near production development and testing environments 23.04.15 Matthias Klein
  • 3. 23.04.15 Matthias Klein 3 ● Since 6 years SysAdmin in browser gaming companies ● Since 2 years responsible for internal systems @InnoGames, including SysAdmin internals and centralised services for our games ● InnoGames is a developer and provider of online games with 150 million registered players, located in Hamburg About me
  • 4. 23.04.15 Matthias Klein 4 ● We are operating around 8000 servers, 90% are VMs ● We are using Debian on almost all machines ● For management, deployment and monitoring we use Puppet, Jenkins, dpkg-deb and Icinga (+ mod_gearman) ● We have our self written admintool (inventory system) which can pass information to puppet ● We rewrote apt-mirror to have a better handling of our repositories About the infrastructure
  • 5. 23.04.15 Matthias Klein 5 You may know new fancy code Server deployment BOOM
  • 6. 23.04.15 Matthias Klein 6 ● Different software versions on dev/testing/production servers ● Missing software on production machines ● Deployment has also build steps ● Configurations on dev/testing/production don't match Things that cause trouble
  • 7. 23.04.15 Matthias Klein 7 How it could be new fancy code Server deployment Surrrr
  • 8. 23.04.15 Matthias Klein 8 ● Developers test locally in a vagrant machine which is provisioned by the same puppet files as the production servers (WIP) ● Jenkins is a job starter, tests are executed on VMs, also using the puppet files from production ● Jenkins builds a .deb package on demand, which then is made available at the update server and tested on staging systems ● The tested package is deployed to the production system How did we achieve this?
  • 10. 23.04.15 Matthias Klein 10 ● Puppet is a configuration management system that allows you to define the state of your IT infrastructure, then automatically enforces the correct state. (https://puppetlabs.com) ● Environments: have multiple Puppet masters glued into one with possible interaction ● external_nodes: instead of searching in site.pp, Puppet executes a script which returns the classes to apply, the environment and other useful variables defined by you ● Hiera: define additional variables to use in different scopes and/or environments Puppet and extensions
  • 11. 23.04.15 Matthias Klein 11 One possibility nginx-config.server1 … server_name a.example.com ... nginx-config.server2 … server_name b.example.com ... if ($::fqdn == server1) { file { 'nginx-config': source => 'nginx-config.server1' } } elsif ($::fqdn == server2) { file { 'nginx-config': source => 'nginx-config.server2' } }
  • 12. 23.04.15 Matthias Klein 12 Using Hiera and environments … "project::servername": "a.example.com" ... … "project::servername": "b.example.com" ... class project($servername) … file {'nginx-config': template => 'nginx-config.erb' ... nginx-config.erb … server_name <%= @servername %>; ...
  • 13. 23.04.15 Matthias Klein IntroductionIntroduction11 PuppetPuppet22 Package ManagementPackage Management33 JenkinsJenkins44 VagrantVagrant55 13
  • 14. 23.04.15 Matthias Klein 14 ● Control which packages and versions are available ● Use puppets 'latest' functionality ● Make testing easier with dedicated repositories ● Deploy your application with a package via 'apt-get install' Why you need your own package server
  • 15. 23.04.15 Matthias Klein 15 ● Use apt-mirror to mirror one/multiple repositories to your server ● Put the packages you need to a new folder (to save disk space use hardlinks, don't forget the dependencies) => this will become your new repository ● Use apt-ftparchive to generate signatures and Packages files ● Make sure you enabled the possibility to download the packages (http/ftp) ● Soon to be available: ig.mirror / ig.package => a more comfortable way to handle your repositories How to get your own package server
  • 16. 23.04.15 Matthias Klein 16 ● You should not allow other package sources except yours (especially when using puppets 'latest' functionality) ● You should check if every package installed on the machine is available in your repository (you may miss updates) ● You should check if the packages on your machine are the same version as in your repositories ● You should check if your repositories are up to date with the upstream ● You may have to explain to your Devs why they can't install most packages anymore Caveats
  • 17. 23.04.15 Matthias Klein IntroductionIntroduction11 PuppetPuppet22 Package ManagementPackage Management33 JenkinsJenkins44 VagrantVagrant55 17
  • 18. 23.04.15 Matthias Klein 18 ● Tests aren't done on the Jenkins server anymore, Jenkins starts them on dedicated VMs (easy to create thanks to Puppet) ● We use XEN VMs because we had severe problems with vagrant for testing: – Start/Stop multiple vagrant boxes at the same time is a bad idea, at least with VirtualBox – Provisioning takes a long time (but can be reduced by suspending boxes) – Overall perfomance is very bad (around 1/10th compared to XEN) Jenkins does new things
  • 19. 23.04.15 Matthias Klein 19 ● You need a build trigger in Jenkins (we use the Tag event in gitlab) ● You need your application built and put to the desired path ● You need a control file in the DEBIAN folder, containing information like name, version, dependencies, conflicts ● You can add scripts to the DEBIAN/(pre|post)(inst|rm|upgrade) files to do stuff your package needs to work (e.g. starting/stopping daemons) ● To build: dpkg-deb -b <SOURCE_DIR> <PACKAGE_DIR> ● Push / pull the package to your repository and regenerate Packages files How to build a Debian package
  • 20. 23.04.15 Matthias Klein IntroductionIntroduction11 PuppetPuppet22 Package ManagementPackage Management33 JenkinsJenkins44 VagrantVagrant55 20
  • 21. 23.04.15 Matthias Klein 21 ● Use the puppet_server provisioner, make sure you set up an environment for vagrant => to not conflict with production use a dedicated server ● Teach your Devs how to configure their stuff in puppet, let them put it to a VCS, check these definitions against the ones you are using in production and merge/reject changes ● You will have classes which you only use for the vagrant boxes, but check them also and have them in production, because important settings may hide there Vagrant is for your Devs
  • 22. 23.04.15 Matthias Klein 22 Thanks for listening Questions? For additional information, availability of the repository scripts and some nagios checks contact matthias.klein@innogames.com The End