Building scalable applications while scaling your infrastructure by rhommel lamas

Post on 22-Jun-2015

168 views 2 download

Tags:

transcript

November 2013

Puppet at scale

Rhommel Lamas

Thursday, November 28, 13

Who am I?

Thursday, November 28, 13

Scale experience•Physical servers Xtratelecom.es.•AWS and other cloud providers at Wuaki.tv and 3scale.net.

Who am I?

Thursday, November 28, 13

Scale experience•Physical servers Xtratelecom.es.•AWS and other cloud providers at Wuaki.tv and 3scale.net.

Who am I?

Config Management• Worked with CFEngine2 for 2 years.• Puppet user since 2009.

Thursday, November 28, 13

Scale experience•Physical servers Xtratelecom.es.•AWS and other cloud providers at Wuaki.tv and 3scale.net.

Who am I?

Config Management• Worked with CFEngine2 for 2 years.• Puppet user since 2009.

Obsessed about config management and I use Emacs.

Thursday, November 28, 13

What is 3scale?3scale provides tools such as traffic

management, API administration, traffic reports, and more, to help companies

publicize their APIs easily and power new types of connected applications.

Thursday, November 28, 13

What does scaling stands for?

Thursday, November 28, 13

Scalability is the ability of a system, network, or process to handle a growing amount of

work in a capable manner or its ability to be enlarged to accommodate that growth.

Wikipedia

What does scaling stands for?

Thursday, November 28, 13

What are our scaling needs?

Thursday, November 28, 13

• How many people do we need to scale our system infrastructure?

What are our scaling needs?

Thursday, November 28, 13

• How many people do we need to scale our system infrastructure?

• How many environments and systems can our team maintain?

What are our scaling needs?

Thursday, November 28, 13

• How many people do we need to scale our system infrastructure?

• How many environments and systems can our team maintain?

• Can we delegate configurations easily to our team members?

What are our scaling needs?

Thursday, November 28, 13

Puppet dynamic environments

Thursday, November 28, 13

• Purpose of Puppet environments.

Puppet dynamic environments

Thursday, November 28, 13

• Purpose of Puppet environments.

• Puppet base environments at 3scale.

Puppet dynamic environments

Thursday, November 28, 13

/etc/puppet

auth.conf

autosign.conf

config.ru

hiera.yaml

hipchat.yaml

fileserver.conf

unicorn.rb

environments

Puppet environments at 3scaleenvironments

production

manifests

production.pp

preview.pp

nodes

production

webserver.pp

preview

webserver.pp

modules

nginx

hieradata

common.yaml

production.yaml

preview.yaml

Capfile

preview

staging

Thursday, November 28, 13

[main] server = puppet.example.com environment = production[master] environment = production manifest = $confdir/environments/$environment/manifests/site.pp modulepath = $confdir/environments/$environment/modules

Thursday, November 28, 13

[main] server = puppet.example.com environment = production[master] environment = production manifest = $confdir/environments/$environment/manifests/$environment.pp modulepath = $confdir/environments/$environment/modules

# production.pp

import 'nodes/production/nodes.pp'import 'nodes/production/*.pp

Thursday, November 28, 13

:hierarchy: - '%{::osfamily}' - '%{::environment}' - common:backends: - yaml - json:yaml: :datadir: "/etc/puppet/environments/%{environment}/hieradata"

Thursday, November 28, 13

Thursday, November 28, 13

• Purpose of Puppet environments.

• Puppet environments at 3scale.

• Puppet development workflow (Git).• Puppet-lint• Puppet-rspec• Code Review

Puppet dynamic environments

Thursday, November 28, 13

Thursday, November 28, 13

Thursday, November 28, 13

Thursday, November 28, 13

Puppet at 3scale.

Thursday, November 28, 13

• Since July 2013 we are running Puppet 3.0+.

Puppet at 3scale.

Thursday, November 28, 13

• Since July 2013 we are running Puppet 3.0+.

• 2 Puppet master’s.

Puppet at 3scale.

Thursday, November 28, 13

• Since July 2013 we are running Puppet 3.0+.

• 2 Puppet master’s.• Nginx + Unicorn.

Puppet at 3scale.

Thursday, November 28, 13

• Since July 2013 we are running Puppet 3.0+.

• 2 Puppet master’s.• Nginx + Unicorn.• 15 minutes splay with a splaylimit $runinterval/2.

Puppet at 3scale.

Thursday, November 28, 13

• Since July 2013 we are running Puppet 3.0+.

• 2 Puppet master’s.• Nginx + Unicorn.• 15 minutes splay with a splaylimit $runinterval/2. • Using DNS SRV records.

Puppet at 3scale.

Thursday, November 28, 13

• Since July 2013 we are running Puppet 3.0+.

• 2 Puppet master’s.• Nginx + Unicorn.• 15 minutes splay with a splaylimit $runinterval/2. • Using DNS SRV records.• The foreman as our ENC.

Puppet at 3scale.

Thursday, November 28, 13

• Since July 2013 we are running Puppet 3.0+.

• 2 Puppet master’s.• Nginx + Unicorn.• 15 minutes splay with a splaylimit $runinterval/2. • Using DNS SRV records.• The foreman as our ENC.• Puppetdb and hiera.

Puppet at 3scale.

Thursday, November 28, 13

• Since July 2013 we are running Puppet 3.0+.

• 2 Puppet master’s.• Nginx + Unicorn.• 15 minutes splay with a splaylimit $runinterval/2. • Using DNS SRV records.• The foreman as our ENC.• Puppetdb and hiera.

•MCollective with Rabbitmq connector.

Puppet at 3scale.

Thursday, November 28, 13

ROUTE53

_x-puppet._tcp.3scale.net_x-puppet-ca._tcp.3scale.net

PuppetMaster

+RabbitMQ

Cluster+

MCollectiveClient

+PuppetDB

+The

Foreman

RabbitMQ Load Balancer

PostgreSQLRDS

MultiAZ

PuppetMaster

+RabbitMQ

Cluster+

MCollectiveClient

+PuppetDB

+The

Foreman

PuppetMaster

+RabbitMQ

Cluster+

MCollectiveClient

+PuppetDB

+The

Foreman

Puppet Agent

+ Mcollective

Server

Puppet Agent

+ Mcollective

Server

Puppet Agent

+ Mcollective

Server

Thursday, November 28, 13

Thursday, November 28, 13

What nobody will tell you about puppet.

Thursday, November 28, 13

• Puppet-lint is your friend and it will help others to understand your code, so USE IT.

What nobody will tell you about puppet.

Thursday, November 28, 13

• Puppet-lint is your friend and it will help others to understand your code, so USE IT.• Puppet-rspec will help you find errors on early stages so TEST your modules.

What nobody will tell you about puppet.

Thursday, November 28, 13

• Puppet-lint is your friend and it will help others to understand your code, so USE IT.• Puppet-rspec will help you find errors on early stages so TEST your modules.• Don’t code remotely on your servers, use your local development environment and git.

What nobody will tell you about puppet.

Thursday, November 28, 13

• Puppet-lint is your friend and it will help others to understand your code, so USE IT.• Puppet-rspec will help you find errors on early stages so TEST your modules.• Don’t code remotely on your servers, use your local development environment and git.• Read puppet documentation on every version.

What nobody will tell you about puppet.

Thursday, November 28, 13

• Puppet-lint is your friend and it will help others to understand your code, so USE IT.• Puppet-rspec will help you find errors on early stages so TEST your modules.• Don’t code remotely on your servers, use your local development environment and git.• Read puppet documentation on every version.• Be careful about dependencies.

What nobody will tell you about puppet.

Thursday, November 28, 13

• Puppet-lint is your friend and it will help others to understand your code, so USE IT.• Puppet-rspec will help you find errors on early stages so TEST your modules.• Don’t code remotely on your servers, use your local development environment and git.• Read puppet documentation on every version.• Be careful about dependencies.• Once you start to puppetize you become an Addict.

What nobody will tell you about puppet.

Thursday, November 28, 13

Rhommel LamasTwitter: @rhoml

Questions?at 3scale

we’re hiringhttp://3scale.net/jobs

Thursday, November 28, 13

Rhommel LamasTwitter: @rhoml

Thank you.at 3scale

we’re hiringhttp://3scale.net/jobs

Thursday, November 28, 13

Thursday, November 28, 13

Useful links

Thursday, November 28, 13

• http://docs.puppetlabs.com/guides/scaling_multiple_masters.html#option-4-dns-srv-records

Useful links

Thursday, November 28, 13

• http://docs.puppetlabs.com/guides/scaling_multiple_masters.html#option-4-dns-srv-records• http://docs.puppetlabs.com/puppetdb/latest/install_via_module.html

Useful links

Thursday, November 28, 13