+ All Categories
Home > Technology > MCollective installed. And now? by Thomas Gelf

MCollective installed. And now? by Thomas Gelf

Date post: 10-May-2015
Category:
Upload: netways
View: 824 times
Download: 1 times
Share this document with a friend
Description:
MCollective defines itself an orchestration framework. Once installed it will be able to show some funny tricks out of the box. However as the wording implies, a framework usually asks you to spend more than just a couple of minutes, at least if you want to get more benefit for real-world environments. This talk will introduce MCollective, quickly handle architectural and security questions and give some hints on how to start extending this framework. A few interesting examples want to inspire you to get more work done by MCollective.
Popular Tags:
42
MCollective installed. And now? 2013-28-11 | Puppet Camp Munich
Transcript
Page 1: MCollective installed. And now? by Thomas Gelf

MCollective installed. And

now?

2013-28-11 | Puppet Camp Munich

Page 2: MCollective installed. And now? by Thomas Gelf

SELF-INTRODUCTION

Page 3: MCollective installed. And now? by Thomas Gelf

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!!!

Page 4: MCollective installed. And now? by Thomas Gelf

DEVELOPERRRR!!! Since today :-)

Page 5: MCollective installed. And now? by Thomas Gelf

Puppet and Netways

Puppet Labs Partner

Puppet Consulting

First provider of Puppet trainings in Germany

More: www.netways.de/training

Page 6: MCollective installed. And now? by Thomas Gelf

What this talk is all about

MCollective

Quick introduction

Basic use cases

Architecture

Security

Extensions

Future ideas, suggestions

Page 7: MCollective installed. And now? by Thomas Gelf

HANDS UP

Page 8: MCollective installed. And now? by Thomas Gelf

INTRODUCTION

Page 9: MCollective installed. And now? by Thomas Gelf

Facts about MCollective

Father: R.I.Pienaar

Age: 2.2.4 (2.3.3)

Language: Ruby

Profession: Orchestration framework

CV: http://puppetlabs.com/mcollective

Page 10: MCollective installed. And now? by Thomas Gelf

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...

Page 11: MCollective installed. And now? by Thomas Gelf

BASIC USE CASES

Page 12: MCollective installed. And now? by Thomas Gelf

Use case I - Break the rules

It is "a puppet component" so we are allowed to use it

No more "defined state". Finally!

Page 13: MCollective installed. And now? by Thomas Gelf

Use case II - puppet resource

puppet resource on steroids

Page 14: MCollective installed. And now? by Thomas Gelf

Use case II - puppet resource

puppet resource on steroids

Conflicts with Puppet? Can be "solved":

plugin.puppet.resource_allow_managed_resources

Page 15: MCollective installed. And now? by Thomas Gelf

Use case III - Emergency button

After rolling out new Puppet modules:

STOP all Puppet Agents

Find out what went wrong

Fix it. Somehow.

Page 16: MCollective installed. And now? by Thomas Gelf

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

Page 17: MCollective installed. And now? by Thomas Gelf

Use case IV - Archeology

How many different <SomeApplication> versions are in productional

use?

Is this you? Then it's time for a commercial break...

Page 18: MCollective installed. And now? by Thomas Gelf

Puppet Enterprise

Page 19: MCollective installed. And now? by Thomas Gelf

Use case V - Puppet health

It's great, but...

...do not forget about the colorful GUIs.

Reporting matters!

Page 20: MCollective installed. And now? by Thomas Gelf

Use case VI - puppet kick

puppet kick replacement

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

Run on demand or triggered by centralized cronjob, Jenkins, GUI

(PE!)

Page 21: MCollective installed. And now? by Thomas Gelf

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"

Page 22: MCollective installed. And now? by Thomas Gelf

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...

Page 23: MCollective installed. And now? by Thomas Gelf

Use case VII - for negative people

With Puppet, this is

--no-noop”

Page 24: MCollective installed. And now? by Thomas Gelf

Use case VIII - Apply specific modules

mco puppet runonce --tag somespecialmodule

You should be VERY careful with tags!

Page 25: MCollective installed. And now? by Thomas Gelf

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# VSfactsource = yamlplugin.yaml = /etc/mcollective/facts.yaml

Report handler?

Page 26: MCollective installed. And now? by Thomas Gelf

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

Page 27: MCollective installed. And now? by Thomas Gelf

WE SKIPPED SOME BASIC STUFF

Page 28: MCollective installed. And now? by Thomas Gelf

Filters - simple ones

-F, --wf, --with-fact osfamily=Debian-C, --wc, --with-class some::class-W, --with customer=lovely my_roles::loadbalancer

Page 29: MCollective installed. And now? by Thomas Gelf

Filters - oldschool

-A, --wa, --with-agent youragentplugin-I, --wi, --with-identity certname

When delivering MCO config, do NOT trust facts

identity = <%= lookupvar('::certname') %>

Page 30: MCollective installed. And now? by Thomas Gelf

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

Page 31: MCollective installed. And now? by Thomas Gelf

SECURITY

Page 32: MCollective installed. And now? by Thomas Gelf

SECURITY MATTERS!

puppet module install puppetlabs-mcollective

They had a reason for writing this.

Page 33: MCollective installed. And now? by Thomas Gelf

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

Page 34: MCollective installed. And now? by Thomas Gelf

IT DOESN'T STOP HERE

Page 35: MCollective installed. And now? by Thomas Gelf

Search for plugins!

Monitoring: replace nrpe

Manage your iptables rules "live"

Handle processes

Page 36: MCollective installed. And now? by Thomas Gelf

Read about registration...

...unless your network is your only source of truth

Page 37: MCollective installed. And now? by Thomas Gelf

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 endend

Page 38: MCollective installed. And now? by Thomas Gelf

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

Page 39: MCollective installed. And now? by Thomas Gelf

Write SimpleRPC clients

require 'mcollective'include MCollective::RPCmc = rpcclient("helloworld")mc.echo(:msg => "hello world").each do |resp| printf("%-40s: %s\n", resp[:sender], resp[:data][:msg])end

This is where real orchestration starts

Bad news: you are on your own

Page 40: MCollective installed. And now? by Thomas Gelf

LAB

Page 41: MCollective installed. And now? by Thomas Gelf

Thank you for your attention!

Page 42: MCollective installed. And now? by Thomas Gelf

Thomas Gelf <[email protected]>

Questions?

class puppetcamp {

package { 'questions': ensure => answered }

}


Recommended