Introduction to Puppet Scripting
Upcoming SlideShare
Loading in...5
×
 

Introduction to Puppet Scripting

on

  • 6,863 views

Shawn Smiley, Lead Architect, for Achieve Internet explains Puppet Scripting for SANDCamp 2013

Shawn Smiley, Lead Architect, for Achieve Internet explains Puppet Scripting for SANDCamp 2013

Statistics

Views

Total Views
6,863
Views on SlideShare
6,863
Embed Views
0

Actions

Likes
1
Downloads
28
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Startup an AWS instance and run puppet apply to show what puppet does.
  • Default modulepath: /etc/puppet/modules:/usr/share/puppet/modules
  • Show the File Structure and examples of some modules.
  • Defining an item is called a “Resource Declaration”
  • Demo a simple module: The Lynx module.

Introduction to Puppet Scripting Introduction to Puppet Scripting Presentation Transcript

  • Introduction to PuppetScriptingShawn S. SmileyLead ArchitectAchieve Internetshawn.smiley@achieveinternet.com
  • What is puppet? “Puppet is IT automation software that helps system administrators manage infrastructure throughout its lifecycle, from provisioning and configuration to patch management and compliance.”Source: www.puppetlabs.com/puppet/what-is-puppet
  • What does that mean? • You can setup a new server in minutes vs. hours! • You can be sure your server configurations are consistent. • You can easily deploy configuration changes to multiple servers.Image Source: http://www.forbes.com/sites/kenkrogue/2012/09/07/the-most-important-interview-question-never-asked/
  • Quick DemoImage source: http://gyaniji.blogspot.com/2011/12/demo-of-ad-posting-job.html
  • What happened?• Puppet analyzed the scripts to build a picture of what the server should look like.• Puppet then compared that to what the server actually looks like.• It then generates and executes scripts to make the server configuration match that in the puppet scripts.
  • How vs. What• Why is it better to describe what a system looks like rather than how to configure a system?• When you describe what a system looks like, you can repeatedly rerun the process without fear of breaking the system.• Can build platform independent scripts.
  • What are the pieces?• Puppet Software• Module Library• Node configuration file• [optional] Puppet Master
  • ModulesWhat are they?• Self-contained packages that describe an aspect of a system (e.g. “Apache” or “MySQL”)Are there existing packages I can leverage?• http://forge.puppetlabs.com• http://github.comWhere do I put them?• /usr/share/puppet/modules• /etc/puppet/modules
  • File Organization• manifests • site.pp • nodes.pp• modules • module1 • manifests  init.pp • files • templates • module2
  • Demo: Folder StructureImage source: http://gyaniji.blogspot.com/2011/12/demo-of-ad-posting-job.html
  • Basic Syntax• Follows basic Ruby language syntax.• Does not fully implement the Ruby language though, only a subset is allowed in your puppet files.To define an item: To execute an item:type title($arg1) { include “title” description of resource state} type {“title”: } type {“title”: arg1 => ‘hello’ }
  • Demo: Simple scriptImage source: http://gyaniji.blogspot.com/2011/12/demo-of-ad-posting-job.html
  • Resource Types• Are puppet libraries that are used to interact with the system.• Puppet comes with a wide range of resource types: • exec • package • file • service • notifyFull list:http://docs.puppetlabs.com/references/latest/type.html
  • FacterWhat are facts?• Global variables with information about the system that the script is running on.How do I see the available variables?• facter -pHow do I use them?• $::variable_name
  • Templates• Templates are files that use a simple markup language to insert dynamic values.• Templates have an .erb extension• Typically used with the File resource. e.g.: file {ntp.conf: path => /etc/ntp.conf, ensure => file, content => template(ntp/ntp.conf.erb), owner => root, mode => 0644, }
  • Relationships• Package[“ntp”] -> File[„ntp.conf‟] ~> Service[„ntpd‟]• “before”, “require”• “subscribe”, “notify”http://docs.puppetlabs.com/puppet/2.7/reference/lang_relationships.html#relationship-metaparametershttp://docs.puppetlabs.com/puppet/2.7/reference/lang_relationships.html#chaining-arrows
  • User-Defined Types• Similar to functions in most languages.• Only way to do iterations currently. • Call the Type with an array. define apache::vhost() { $docroot = “/var/www/${name}” } $sites = [‘site1’, ‘site2’] apache::vhost {$sites: }
  • ReferencesBooks• Managing Infrastructure with Puppet (ISBN: 978-1-4493-0763-9)• Pro Puppet (ISBN: 978-1-4302-3057-1)Websites• http://www.puppetlabs.com• http://docs.puppetlabs.com/• http://forge.puppetlabs.com/
  • Q&A