Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Puppet

 Puppet

Puppet

Salimane Adjao Moustapha

August 14, 2013
Tweet

More Decks by Salimane Adjao Moustapha

Other Decks in Programming

Transcript

  1. • Web app depends on services that should be on

    the server, users access/permissions... • Capistrano expects folders, rvm to be in a certain location • You need to deploy many servers with different environments on staging, production... • Doing all that manually and you're setting yourself for “wtf!wtf! wtf!”...
  2. Insert Puppet... • Configuration management framework and tools • Ruby

    based • GPLv2/Apache licenses • From PuppetLabs (company)
  3. Deployment • Master – Run as daemon – Listen on

    a port – Serve configuration catalogs • Agent – Connect to master via ssh – Retrieve configuration catalog from master – Can run as a daemon or manually triggered • Puppet can also run in stand alone mode
  4. Config language/ Resource Abstraction file { ['/meltwater', '/meltwater/likealyzer']: ensure =>

    directory, owner => 'www-data', group => 'www-data', mode => '0644', require => User['www-data'], }
  5. Transactional layer • Agent uses facter to get details about

    itself • Agent send “facts” to Master • Master recognize, compile configuration “catalog” for that agent and send it back • Agent apply the “catalog” on itself then send a result report back
  6. Node definition node puppet-demo { file { ['/meltwater', '/meltwater/likealyzer']: ensure

    => directory, owner => 'vagrant', group => 'vagrant', mode => '0644' } }
  7. Module Definition • mymodule – files – templates – tests

    – spec • spec_helper.rb – manifests • init.pp