Top Banner
MCollective installed. And now? 2013-28-11 | Puppet Camp Munich
42

MCollective installed. And now? by Thomas Gelf

May 10, 2015

Download

Technology

NETWAYS

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.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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 }

}