SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
Highly available Puppet : automate the
deployment of new masters
Puppet Camp Paris
Guillaume Espanel April 8th 2014
Guillaume Espanel
I do devops at Objectif Libre
Linux "background"
Eager to learn new technologies
Objectif Libre
French Open Source company specialized in Linux Infrastructure:
Setting up / audit
Management
Training
Big focused on modern and innovative tools :
Parc management (Puppet and GLPI)
Virtualization (KVM, LXC, OpenStack..)
The problem
Infrastructures either grow or die.
The problem
Puppet needs to grow with it !
Solutions Outline
Use Puppet to deploy new masters
Synchronize manifests and modules with r10k
Setup a load balancing system : either SRV records or a
reverse proxy
Solutions Outline
Deploying new masters
What is a Puppetmaster
HTTPS server and Puppetmaster code
Manifests and modules
Certificates and a CRL
A Puppetmaster is also a Puppet agent.
Deploying new masters
Creating a new master
We want to take a server and turn it into a fully functionnal master.
Deploying new masters
Get certified!
A good master certificate is usually valid for :
hostname.example.com
puppet.example.com
hostname
puppet
Deploying new masters
But
An agent certificate is only valid for its own name. We have to re­generate
a nice master­grade certificate.
This is hard to automate since Puppet needs a signed certificate in order
to receive a catalog.
Deploying new masters
Solution
Change dns_alt_names before running the agent :
[main]
#...
dns_alt_names=puppet,puppet.example.com
#...
Deploying new masters
Installing the master role
The secondary masters should not act as certificate authorities.
Other than that, secondary masters are identical with the primary one.
That means we have to take care of setting up the PuppetDB connection,
the ENC, the reports processors, hiera ...
Deploying new masters
Example manifest
$is_primary_master =false
$dashboard_host ='dashboard.example.com:3000'
$storeconfigs_dbserver ='puppetmaster1.example.com'
class{'::puppet::master':
ca =>false,
reports =>'http',
reporturl =>"http://${dashboard_host}/reports/upload",
storeconfigs =>true,
storeconfigs_dbserver=>$storeconfigs_dbserver,
ssl_cert =>"/var/lib/puppet/ssl/certs/${::clientcert}.pem",
ssl_key =>"/var/lib/puppet/ssl/private_keys/${::clientcert}.pem",
ssl_chain =>'/var/lib/puppet/ssl/certs/ca.pem',
ssl_ca =>'/var/lib/puppet/ssl/certs/ca.pem',
ssl_crl =>'/var/lib/puppet/ssl/crl.pem',
}
class{'::puppet::agent':
puppet_server=>"puppet.example.com",
}
Synchronizing the modules and manifests
This part is identical on all our Puppet masters.
We will use r10k to pull our configuration out of a git repository.
Synchronizing the modules and manifests
Environments
r10k supports deploying multiple environments. For the sake of simplicity,
we will only use a standard production environment.
Our repository will only have a production branch.
Synchronizing the modules and manifests
What do we need?
A git repository containing the modules and manifests
r10k and its configuration
Synchronizing the modules and manifests
Example manifest
class{'::r10k':
remote=>'git@git.example.com:puppet/environments.git',
}
Synchronizing the modules and manifests
Pulling through SSH
You can use an ssh_config file in order to associate an identity file to the
git server :
Hostgit.example.com
IdentityFile~/.ssh/puppetmaster.key
Synchronizing the modules and manifests
r10k autorun
The nice zack/r10k module ships with two ways of pulling the
environments from the git repository :
includer10k::prerun_command
or
includer10k::mcollective
Synchronizing the modules and manifests
Where do we go?
By now, should have a running secondary master.
We need to make it available for our nodes.
Mechanisms for load balancing and high availability
Classic web application load balancing
SRV Records
Mechanisms for load balancing and high availability
Classic scaling
With haproxy (or any other TCP proxy, really) :
1.  Listen on port 8140 in TCP mode
2.  Round­robin requests to the masters
3.  Point your puppet.example.com DNS record to the reverse
proxy
4.  ...
5.  PROFIT
Mechanisms for load balancing and high availability
Note
When deploying new agents, make sure they contact the "main" master
for CA stuff.
[main]
#...
ca_server=puppetmaster1.example.com
in the agent's puppet.conf
Mechanisms for load balancing and high availability
Haproxy configuration
The configuration should go along these lines :
listenpuppetmaster0.0.0.0:8140
modetcp
optionssl-hello-chk
optiontcplog
balancesource
serverinst1puppetmaster1.example.com:8140checkinter2000fall3
serverinst2puppetmaster2.example.com:8140checkinter2000fall3
Mechanisms for load balancing and high availability
Puppetizing haproxy
Puppetlabs' haproxy module dooes a great job at configuring haproxy :
On the reverse proxy :
includehaproxy
haproxy::listen{'puppetmaster':
ipaddress=>'0.0.0.0',
ports =>'8140',
balance =>'source',
options =>['ssl-hello-chk','tcplog'],
mode =>'tcp',
}
Mechanisms for load balancing and high availability
Puppetizing haproxy
And on each master :
@@haproxy::balancermember{"${::clientcert}_8140":
listening_service=>'puppetmaster',
server_names =>$::clientcert,
ipaddresses =>$::clientcert,
ports =>'8140',
options =>['checkinter2000','fall3'],
}
Mechanisms for load balancing and high availability
Puppetizing haproxy
The haproxy::listen resource will collect all the
haproxy::balancermember resources and add the new masters to the
pool.
Mechanisms for load balancing and high availability
SRV Records
SRV is for service
An SRV record looks like this :
_service._proto.name. TTL class SRV priority weight port target.
Mechanisms for load balancing and high availability
Puppet SRV Records
_x­puppet._tcp.example.com. 1800 IN SRV 0 5 8140
puppetmaster1.example.com.
_x­puppet._tcp.example.com. 1800 IN SRV 0 5 8140
puppetmaster2.example.com.
This declares two masters on example.com with a weight of 5.
Mechanisms for load balancing and high availability
What about the CA?
Theres an SRV record for that :
_x­puppet­ca._tcp.example.com. 86400 IN SRV 0 5 8140
puppetmaster1.example.com.
Mechanisms for load balancing and high availability
Tell the agents to use the SRV records
Edit their puppet.conf file :
[main]
#...
use_srv_records=true
srv_domain=example.com
Putting it all together
We wrote a nice ha_puppet module that takes care of
Setting up Puppet and Passanger
Installing and configuring r10k
Deploying a reverse proxy
How to use it
node/^puppetmasterd+.objectif-libre.corp$/{
class{'ha_puppet':
server =>'puppet-main.objectif-libre.corp',
proxy_listener =>'puppetproxy',
repo_url =>'git@git.objectif-libre.com:ol/puppetops.git',
}
}
node/^puppetproxyd+.objectif-libre.corp$/{
class{'ha_puppet::proxy':
proxy_listener=>'puppetproxy',
}
}
Thanks and links
@steverjuk :
@acidprime : 
objectiflibre/ha_puppet :
https://github.com/stephenrjohnson/puppetmodule
https://github.com/acidprime/r10k
http://forge.puppetlabs.com/objectiflibre/ha_puppet
Questions ?
Or later... guillaume.espanel@objectif­libre.com
Twitter: @objectiflibre

Mais conteúdo relacionado

Destaque

Protecting confidential files using SE-Linux
Protecting confidential files using SE-LinuxProtecting confidential files using SE-Linux
Protecting confidential files using SE-Linux
Giuseppe Paterno'
 

Destaque (20)

Introduction to orchestration using Mcollective
Introduction to orchestration using McollectiveIntroduction to orchestration using Mcollective
Introduction to orchestration using Mcollective
 
Protecting confidential files using SE-Linux
Protecting confidential files using SE-LinuxProtecting confidential files using SE-Linux
Protecting confidential files using SE-Linux
 
SHOWDOWN: Threat Stack vs. Red Hat AuditD
SHOWDOWN: Threat Stack vs. Red Hat AuditDSHOWDOWN: Threat Stack vs. Red Hat AuditD
SHOWDOWN: Threat Stack vs. Red Hat AuditD
 
Audit
AuditAudit
Audit
 
Linux audit framework
Linux audit frameworkLinux audit framework
Linux audit framework
 
How To Train Your Python
How To Train Your PythonHow To Train Your Python
How To Train Your Python
 
Open Audit
Open AuditOpen Audit
Open Audit
 
Dealing with Linux Malware
Dealing with Linux MalwareDealing with Linux Malware
Dealing with Linux Malware
 
Everyone Matters In Infosec 2014
Everyone Matters In Infosec 2014Everyone Matters In Infosec 2014
Everyone Matters In Infosec 2014
 
Bringing Infosec Into The Devops Tribe: Q&A With Gene Kim and Pete Cheslock
Bringing Infosec Into The Devops Tribe: Q&A With Gene Kim and Pete CheslockBringing Infosec Into The Devops Tribe: Q&A With Gene Kim and Pete Cheslock
Bringing Infosec Into The Devops Tribe: Q&A With Gene Kim and Pete Cheslock
 
Whitepaper: User Audit Options for Linux and Solaris
Whitepaper: User Audit Options for Linux and SolarisWhitepaper: User Audit Options for Linux and Solaris
Whitepaper: User Audit Options for Linux and Solaris
 
Python build your security tools.pdf
Python build your security tools.pdfPython build your security tools.pdf
Python build your security tools.pdf
 
MySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise EditionMySQL Day Paris 2016 - MySQL Enterprise Edition
MySQL Day Paris 2016 - MySQL Enterprise Edition
 
2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview
2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview
2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview
 
Network Security and Analysis with Python
Network Security and Analysis with PythonNetwork Security and Analysis with Python
Network Security and Analysis with Python
 
Linux Security Scanning with Lynis
Linux Security Scanning with LynisLinux Security Scanning with Lynis
Linux Security Scanning with Lynis
 
Handling of compromised Linux systems
Handling of compromised Linux systemsHandling of compromised Linux systems
Handling of compromised Linux systems
 
Linux Hardening
Linux HardeningLinux Hardening
Linux Hardening
 
PowerShell for Penetration Testers
PowerShell for Penetration TestersPowerShell for Penetration Testers
PowerShell for Penetration Testers
 
Linux Security for Developers
Linux Security for DevelopersLinux Security for Developers
Linux Security for Developers
 

Semelhante a Puppet Camp Paris 2014: Highly Available Puppet : Automate the deployment of new masters - Guillaume Espanel, Objectif Libre

Automation for the Modern Enterprise - 18 October 2017
Automation for the Modern Enterprise - 18 October 2017Automation for the Modern Enterprise - 18 October 2017
Automation for the Modern Enterprise - 18 October 2017
Claire Priester Papas
 

Semelhante a Puppet Camp Paris 2014: Highly Available Puppet : Automate the deployment of new masters - Guillaume Espanel, Objectif Libre (20)

Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...
Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...
Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...
 
PHP 4? OMG! A small vademecum for obsolete software migration.
PHP 4? OMG! A small vademecum for obsolete software migration.PHP 4? OMG! A small vademecum for obsolete software migration.
PHP 4? OMG! A small vademecum for obsolete software migration.
 
AWS EC2 Ubuntu Instance - Step-by-Step Deployment Guide
AWS EC2 Ubuntu Instance - Step-by-Step Deployment GuideAWS EC2 Ubuntu Instance - Step-by-Step Deployment Guide
AWS EC2 Ubuntu Instance - Step-by-Step Deployment Guide
 
Ansible Workshop for Pythonistas
Ansible Workshop for PythonistasAnsible Workshop for Pythonistas
Ansible Workshop for Pythonistas
 
Octopus Deploy @Erie Day of Code
Octopus Deploy @Erie Day of CodeOctopus Deploy @Erie Day of Code
Octopus Deploy @Erie Day of Code
 
Openstack win final
Openstack win finalOpenstack win final
Openstack win final
 
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
Workshop: Know Before You Push 'Go': Using the Beaker Acceptance Test Framewo...
 
Puppet and AWS is Easy...?
Puppet and AWS is Easy...?Puppet and AWS is Easy...?
Puppet and AWS is Easy...?
 
Puppet Camp Sydney 2015: Puppet and AWS is easy right.....?
Puppet Camp Sydney 2015: Puppet and AWS is easy right.....? Puppet Camp Sydney 2015: Puppet and AWS is easy right.....?
Puppet Camp Sydney 2015: Puppet and AWS is easy right.....?
 
Automation for the Modern Enterprise - 18 October 2017
Automation for the Modern Enterprise - 18 October 2017Automation for the Modern Enterprise - 18 October 2017
Automation for the Modern Enterprise - 18 October 2017
 
Transforming the Ceph Integration Tests with OpenStack
Transforming the Ceph Integration Tests with OpenStack Transforming the Ceph Integration Tests with OpenStack
Transforming the Ceph Integration Tests with OpenStack
 
Puppet Keynote by Ralph Luchs
Puppet Keynote by Ralph LuchsPuppet Keynote by Ralph Luchs
Puppet Keynote by Ralph Luchs
 
PuppetConf 2017: Puppet Enterprise Roadmap 2017- Ryan Coleman, Puppet
PuppetConf 2017: Puppet Enterprise Roadmap 2017- Ryan Coleman, PuppetPuppetConf 2017: Puppet Enterprise Roadmap 2017- Ryan Coleman, Puppet
PuppetConf 2017: Puppet Enterprise Roadmap 2017- Ryan Coleman, Puppet
 
Docker meetup
Docker meetupDocker meetup
Docker meetup
 
Using Puppet for Deploying Hyper-V OpenStack Compute Nodes - PuppetConf 2013
Using Puppet for Deploying Hyper-V OpenStack Compute Nodes - PuppetConf 2013Using Puppet for Deploying Hyper-V OpenStack Compute Nodes - PuppetConf 2013
Using Puppet for Deploying Hyper-V OpenStack Compute Nodes - PuppetConf 2013
 
How you can get ahead with linux certification
How you can get ahead with linux certificationHow you can get ahead with linux certification
How you can get ahead with linux certification
 
Puppet latest and greatest
Puppet latest and greatestPuppet latest and greatest
Puppet latest and greatest
 
Learn Puppet : Quest Guide for the Learning VM
Learn Puppet : Quest Guide for the Learning VMLearn Puppet : Quest Guide for the Learning VM
Learn Puppet : Quest Guide for the Learning VM
 
Hosting a Custom Forge with Pulp
Hosting a Custom Forge with PulpHosting a Custom Forge with Pulp
Hosting a Custom Forge with Pulp
 
Boston open stack meetup hyper v in openstack
Boston open stack meetup   hyper v in openstackBoston open stack meetup   hyper v in openstack
Boston open stack meetup hyper v in openstack
 

Mais de Puppet

2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
Puppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
Puppet
 

Mais de Puppet (20)

Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 

Último

Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 

Último (20)

%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 

Puppet Camp Paris 2014: Highly Available Puppet : Automate the deployment of new masters - Guillaume Espanel, Objectif Libre