SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
MCollective installed. And
now?
2013-28-11 | Puppet Camp Munich
SELF-INTRODUCTION
Just me: Thomas Gelf
Joined NETWAYS in 2010
Formerly more than 10 years:
Web (Application) Development
Routing/Switching (Bank- and ISP-Backbone)
ISP-Environment: architecturing and realizing highly available
plattforms (Mail, Hosting, SIP-Carrier, IPv6...)
Nationality: Italian. Mother tongue: German
SOUTH TYROLEAN!!!
DEVELOPERRRR!!! Since today :-)
Puppet and Netways

Puppet Labs Partner
Puppet Consulting
First provider of Puppet trainings in Germany
More: www.netways.de/training
What this talk is all about
MCollective
Quick introduction
Basic use cases
Architecture
Security
Extensions
Future ideas, suggestions
HANDS UP
INTRODUCTION
Facts about MCollective
Father: R.I.Pienaar
Age: 2.2.4 (2.3.3)
Language: Ruby
Profession: Orchestration framework
CV: http://puppetlabs.com/mcollective
MCollective components
It's soooo easy...
We send commands to a group of servers
They execute them and send replies
We need a middleware == black magic for lots of us
Honestly, there is more...
BASIC USE CASES
Use case I - Break the rules
It is "a puppet component" so we are allowed to use it
No more "defined state". Finally!
Use case II - puppet resource
puppet resource on steroids
Use case II - puppet resource
puppet resource on steroids
Conflicts with Puppet? Can be "solved":
plugin.puppet.resource_allow_managed_resources
Use case III - Emergency button
After rolling out new Puppet modules:
STOP all Puppet Agents
Find out what went wrong
Fix it. Somehow.
Use case III - Emergency button
If this is what you are usually doing...
...please. Please. PLEASE!!! have a look at
http://projects.puppetlabs.com/projects/1/wiki/Development_Writing_Tests
Use case IV - Archeology
How many different <SomeApplication> versions are in productional
use?
Is this you? Then it's time for a commercial break...
Puppet Enterprise
Use case V - Puppet health
It's great, but...
...do not forget about the colorful GUIs.
Reporting matters!
Use case VI - puppet kick
puppet kick replacement
mco
mco
mco
mco

service stop puppet
puppet runonce --batch 10 --batch-sleep 600
puppet runall 10
puppet (en|di)sable

Run on demand or triggered by centralized cronjob, Jenkins, GUI
(PE!)
Use case VI - puppet kick
You can combine this with ACLs
NOC: restart services in maintenance mode
Developers: everything. In THEIR environment.
Thomas: loves wildcards
"Action Policy Authorization Plugin"
Use case VII - for negative people
Double negative
I do not disagree
I haven't seen nothing
If you don't want to go nowhere...
Use case VII - for negative people
With Puppet, this is

--no-noop”
Use case VIII - Apply specific modules
mco puppet runonce --tag somespecialmodule
You should be VERY careful with tags!
Use case IX - CMDB grooming
YES, every change is processed in our CMDB
And then applied by Puppet
Or the other way round
mco inventory
factsource = facter
# VS
factsource = yaml
plugin.yaml = /etc/mcollective/facts.yaml

Report handler?
Use case X - manage certificates
We all love managing Puppet certificates
mco puppet resource exec 
'/bin/rm -rf $(puppet agent --configprint ssldir)/*'

Have a look at
plugin.puppet.resource_type_(black|white)list
WE SKIPPED SOME BASIC STUFF
Filters - simple ones
-F, --wf, --with-fact osfamily=Debian
-C, --wc, --with-class some::class
-W, --with customer=lovely my_roles::loadbalancer
Filters - oldschool
-A, --wa, --with-agent youragentplugin
-I, --wi, --with-identity certname

When delivering MCO config, do NOT trust facts
identity = <%= lookupvar('::certname') %>
Filters - the cool stuff
-S, --select FILTER
-S "resource('Service[apache2]').managed = true"
-S "fstat('/etc/hosts').md5=/^0c9d/ and environment=dev"
Based on data plugins
SECURITY
SECURITY MATTERS!
puppet module install puppetlabs-mcollective

They had a reason for writing this.
SECURITY MATTERS!
Please do not deploy without reading A LOT
No plaintext messages
No preshared keys
Re-use Puppet certs for the transport
Create one certificate per client to sign bodies
IT DOESN'T STOP HERE
Search for plugins!
Monitoring: replace nrpe
Manage your iptables rules "live"
Handle processes
Read about registration...
...unless your network is your only source of truth
Start writing simple RPC Agents - harmless
module MCollective
module Agent
class Helloworld<RPC::Agent
action 'echo' do
validate :msg, String
reply[:msg] = request[:msg]
end
end
end
end
Start writing simple RPC Agents - harmful
action 'exec' do
validate :msg, String
reply[:status] = run(
request[:command], :stdout => :out, :stderr => :err
)
reply[:stdout].chomp!
reply[:stderr].chomp!
end
action 'perlrulez' do
implemented_by "/some/script.pl"
end
http://docs.puppetlabs.com/mcollective/simplerpc/agents.html
Write SimpleRPC clients
require 'mcollective'
include MCollective::RPC
mc = rpcclient("helloworld")
mc.echo(:msg => "hello world").each do |resp|
printf("%-40s: %sn", resp[:sender], resp[:data][:msg])
end
This is where real orchestration starts
Bad news: you are on your own
LAB
Thank you for your attention!
Questions?

class puppetcamp {
package { 'questions':
ensure => answered
}
}

Thomas Gelf <thomas.gelf@netways.de>

Mais conteúdo relacionado

Semelhante a MCollective installed. And now? by Thomas Gelf

Integrating cloud stack with puppet
Integrating cloud stack with puppetIntegrating cloud stack with puppet
Integrating cloud stack with puppet
Puppet
 
5 minute intro to virtualenv
5 minute intro to virtualenv5 minute intro to virtualenv
5 minute intro to virtualenv
amenasse
 
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
Jean-Sebastien Delfino
 
Puppet for dummies - PHPBenelux UG edition
Puppet for dummies - PHPBenelux UG editionPuppet for dummies - PHPBenelux UG edition
Puppet for dummies - PHPBenelux UG edition
Joshua Thijssen
 
Rapid scaling in_the_cloud_with_puppet
Rapid scaling in_the_cloud_with_puppetRapid scaling in_the_cloud_with_puppet
Rapid scaling in_the_cloud_with_puppet
Carl Caum
 

Semelhante a MCollective installed. And now? by Thomas Gelf (20)

One-Man Ops
One-Man OpsOne-Man Ops
One-Man Ops
 
Mcollective introduction
Mcollective introductionMcollective introduction
Mcollective introduction
 
Integrating cloud stack with puppet
Integrating cloud stack with puppetIntegrating cloud stack with puppet
Integrating cloud stack with puppet
 
Puppet for Sys Admins
Puppet for Sys AdminsPuppet for Sys Admins
Puppet for Sys Admins
 
Puppet for SysAdmins
Puppet for SysAdminsPuppet for SysAdmins
Puppet for SysAdmins
 
Muduo network library
Muduo network libraryMuduo network library
Muduo network library
 
Getting Started with Pelican
Getting Started with PelicanGetting Started with Pelican
Getting Started with Pelican
 
Puppet Camp Düsseldorf 2014: Puppet CA Certificates Explained
Puppet Camp Düsseldorf 2014: Puppet CA Certificates ExplainedPuppet Camp Düsseldorf 2014: Puppet CA Certificates Explained
Puppet Camp Düsseldorf 2014: Puppet CA Certificates Explained
 
Puppet Camp Duesseldorf 2014: Thomas Gelf - Puppet CA: certificates explained
Puppet Camp Duesseldorf 2014: Thomas Gelf - Puppet CA: certificates explainedPuppet Camp Duesseldorf 2014: Thomas Gelf - Puppet CA: certificates explained
Puppet Camp Duesseldorf 2014: Thomas Gelf - Puppet CA: certificates explained
 
CloudInit Introduction
CloudInit IntroductionCloudInit Introduction
CloudInit Introduction
 
Tastypie: Easy APIs to Make Your Work Easier
Tastypie: Easy APIs to Make Your Work EasierTastypie: Easy APIs to Make Your Work Easier
Tastypie: Easy APIs to Make Your Work Easier
 
5 minute intro to virtualenv
5 minute intro to virtualenv5 minute intro to virtualenv
5 minute intro to virtualenv
 
Deployment with capifony
Deployment with capifonyDeployment with capifony
Deployment with capifony
 
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
 
Deploy MediaWiki usgin Fiware Lab Facilities
Deploy MediaWiki usgin Fiware Lab FacilitiesDeploy MediaWiki usgin Fiware Lab Facilities
Deploy MediaWiki usgin Fiware Lab Facilities
 
Clash of the Titans: Releasing the Kraken | NodeJS @paypal
Clash of the Titans: Releasing the Kraken | NodeJS @paypalClash of the Titans: Releasing the Kraken | NodeJS @paypal
Clash of the Titans: Releasing the Kraken | NodeJS @paypal
 
Puppet for dummies - PHPBenelux UG edition
Puppet for dummies - PHPBenelux UG editionPuppet for dummies - PHPBenelux UG edition
Puppet for dummies - PHPBenelux UG edition
 
Perl Usage In Security and Penetration testing
Perl Usage In Security and Penetration testingPerl Usage In Security and Penetration testing
Perl Usage In Security and Penetration testing
 
Deploy Mediawiki Using FIWARE Lab Facilities
Deploy Mediawiki Using FIWARE Lab FacilitiesDeploy Mediawiki Using FIWARE Lab Facilities
Deploy Mediawiki Using FIWARE Lab Facilities
 
Rapid scaling in_the_cloud_with_puppet
Rapid scaling in_the_cloud_with_puppetRapid scaling in_the_cloud_with_puppet
Rapid scaling in_the_cloud_with_puppet
 

Último

+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...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
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
Safe Software
 

Último (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
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
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
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...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
+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...
 
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
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
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
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
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
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
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
 

MCollective installed. And now? by Thomas Gelf

  • 3. Just me: Thomas Gelf Joined NETWAYS in 2010 Formerly more than 10 years: Web (Application) Development Routing/Switching (Bank- and ISP-Backbone) ISP-Environment: architecturing and realizing highly available plattforms (Mail, Hosting, SIP-Carrier, IPv6...) Nationality: Italian. Mother tongue: German SOUTH TYROLEAN!!!
  • 5. Puppet and Netways Puppet Labs Partner Puppet Consulting First provider of Puppet trainings in Germany More: www.netways.de/training
  • 6. What this talk is all about MCollective Quick introduction Basic use cases Architecture Security Extensions Future ideas, suggestions
  • 9. Facts about MCollective Father: R.I.Pienaar Age: 2.2.4 (2.3.3) Language: Ruby Profession: Orchestration framework CV: http://puppetlabs.com/mcollective
  • 10. MCollective components It's soooo easy... We send commands to a group of servers They execute them and send replies We need a middleware == black magic for lots of us Honestly, there is more...
  • 12. Use case I - Break the rules It is "a puppet component" so we are allowed to use it No more "defined state". Finally!
  • 13. Use case II - puppet resource puppet resource on steroids
  • 14. Use case II - puppet resource puppet resource on steroids Conflicts with Puppet? Can be "solved": plugin.puppet.resource_allow_managed_resources
  • 15. Use case III - Emergency button After rolling out new Puppet modules: STOP all Puppet Agents Find out what went wrong Fix it. Somehow.
  • 16. Use case III - Emergency button If this is what you are usually doing... ...please. Please. PLEASE!!! have a look at http://projects.puppetlabs.com/projects/1/wiki/Development_Writing_Tests
  • 17. Use case IV - Archeology How many different <SomeApplication> versions are in productional use? Is this you? Then it's time for a commercial break...
  • 19. Use case V - Puppet health It's great, but... ...do not forget about the colorful GUIs. Reporting matters!
  • 20. Use case VI - puppet kick puppet kick replacement mco mco mco mco service stop puppet puppet runonce --batch 10 --batch-sleep 600 puppet runall 10 puppet (en|di)sable Run on demand or triggered by centralized cronjob, Jenkins, GUI (PE!)
  • 21. Use case VI - puppet kick You can combine this with ACLs NOC: restart services in maintenance mode Developers: everything. In THEIR environment. Thomas: loves wildcards "Action Policy Authorization Plugin"
  • 22. Use case VII - for negative people Double negative I do not disagree I haven't seen nothing If you don't want to go nowhere...
  • 23. Use case VII - for negative people With Puppet, this is --no-noop”
  • 24. Use case VIII - Apply specific modules mco puppet runonce --tag somespecialmodule You should be VERY careful with tags!
  • 25. Use case IX - CMDB grooming YES, every change is processed in our CMDB And then applied by Puppet Or the other way round mco inventory factsource = facter # VS factsource = yaml plugin.yaml = /etc/mcollective/facts.yaml Report handler?
  • 26. Use case X - manage certificates We all love managing Puppet certificates mco puppet resource exec '/bin/rm -rf $(puppet agent --configprint ssldir)/*' Have a look at plugin.puppet.resource_type_(black|white)list
  • 27. WE SKIPPED SOME BASIC STUFF
  • 28. Filters - simple ones -F, --wf, --with-fact osfamily=Debian -C, --wc, --with-class some::class -W, --with customer=lovely my_roles::loadbalancer
  • 29. Filters - oldschool -A, --wa, --with-agent youragentplugin -I, --wi, --with-identity certname When delivering MCO config, do NOT trust facts identity = <%= lookupvar('::certname') %>
  • 30. Filters - the cool stuff -S, --select FILTER -S "resource('Service[apache2]').managed = true" -S "fstat('/etc/hosts').md5=/^0c9d/ and environment=dev" Based on data plugins
  • 32. SECURITY MATTERS! puppet module install puppetlabs-mcollective They had a reason for writing this.
  • 33. SECURITY MATTERS! Please do not deploy without reading A LOT No plaintext messages No preshared keys Re-use Puppet certs for the transport Create one certificate per client to sign bodies
  • 35. Search for plugins! Monitoring: replace nrpe Manage your iptables rules "live" Handle processes
  • 36. Read about registration... ...unless your network is your only source of truth
  • 37. Start writing simple RPC Agents - harmless module MCollective module Agent class Helloworld<RPC::Agent action 'echo' do validate :msg, String reply[:msg] = request[:msg] end end end end
  • 38. Start writing simple RPC Agents - harmful action 'exec' do validate :msg, String reply[:status] = run( request[:command], :stdout => :out, :stderr => :err ) reply[:stdout].chomp! reply[:stderr].chomp! end action 'perlrulez' do implemented_by "/some/script.pl" end http://docs.puppetlabs.com/mcollective/simplerpc/agents.html
  • 39. Write SimpleRPC clients require 'mcollective' include MCollective::RPC mc = rpcclient("helloworld") mc.echo(:msg => "hello world").each do |resp| printf("%-40s: %sn", resp[:sender], resp[:data][:msg]) end This is where real orchestration starts Bad news: you are on your own
  • 40. LAB
  • 41. Thank you for your attention!
  • 42. Questions? class puppetcamp { package { 'questions': ensure => answered } } Thomas Gelf <thomas.gelf@netways.de>