Your SlideShare is downloading. ×
0
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Provisioning with Puppet
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Provisioning with Puppet

735

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
735
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Provisioning with PuppetPhoto: http://www.flickr.com/photos/vasta/4463786284/
  • 2. $ whoami Joe Ray Senior Systems Developer Future Publishing @jr261
  • 3. Overview• Why you should use provisioners• What is Puppet?• How do you use it?• Using Puppet with Vagrant• Using Puppet in production
  • 4. Why use provisioners?• Reproducible setup• Write less documentation• Same config for multiple platforms• Scale your setup • Easily move from development to production • Distribute amongst team • SSH access not necessary• Use associated tools
  • 5. What is Puppet?• Configuration management tool• Platform-agnostic (supports Linux, Free/OpenBSD, OSX, Windows, Solaris)• Description of systems configuration using manifests• Idempotent
  • 6. Resources• Building blocks of configuration: • packages • services • files • users / groups
  • 7. Resourcespackage { nginx: ensure => present,}user { joe: ensure => present, shell => /bin/zsh, home => /home/joe,}
  • 8. Modules• Self-contained, reusable sets of resources• Typical pattern: • Install package • Manage service • Provide configuration helpers (defined types)• http://forge.puppetlabs.com
  • 9. Modulesclass nginx($workers=1, $ensure=present) { package { nginx: ensure => $ensure, } service { nginx: ensure => $ensure, subscribe => File["/etc/nginx/nginx.conf"], require => File["/etc/nginx/nginx.conf"], } file { "/etc/nginx/nginx.conf": ensure => $ensure, content => template("nginx/nginx.conf.erb"), require => Package[nginx], }}
  • 10. Templatesserver {! listen 80;! server_name <%= domain %>;! root <%= root %>;! access_log /var/log/nginx/<%= domain %>.access.log;! keepalive_timeout 5;! location / { index index.html index.htm;! }}
  • 11. Using modulesinclude nginxclass { nginx: workers => 5,}nginx::site { www.mywebsite.com: config => www.mywebsite.com, root => /data/www.mywebsite.com,}
  • 12. Using withVagrant::Config.run do |config| config.vm.provision :puppet do |puppet| puppet.manifests_path = "manifests" puppet.manifest_file = "my_manifest.pp" endend
  • 13. Facts• How Puppet knows about your system$ facterarchitecture => amd64domain => vagrantup.comfacterversion => 1.6.17fqdn => debian6.vagrantup.comhardwareisa => unknownhardwaremodel => x86_64hostname => debian6id => vagrantinterfaces => eth0,loipaddress => 10.0.2.15etc...
  • 14. Using withVagrant::Config.run do |config| config.vm.provision :puppet, :facts =>{"vagrant" => "vagrant"} do |puppet| puppet.manifests_path = "manifests" puppet.manifest_file = "my_manifest.pp" endend
  • 15. Using withserver {! listen 80;! server_name <%= domain %>;! root <%= root %>; <% if @vagrant %> satisfy any; deny all; allow 192.168.33.1; allow 10.0.2.2; <% end %>! access_log /var/log/nginx/<%= domain %>.access.log;! keepalive_timeout 5;! location / { index index.html index.htm;! }}
  • 16. Using Puppet in production manifests / git / svn Puppetmaster modules / files or whatever REST over HTTPS Reports Client Client Client
  • 17. What next?• Example Puppet project at: github.com/ josno/puppet-example• Read the docs: docs.puppetlabs.com

×