SlideShare une entreprise Scribd logo
1  sur  115
Pinto + Stratopan + Love

      San Francisco Perl Mongers
           October 30, 2012


         Jeffrey Thalhammer
          thaljef@cpan.org
Pinto
The $!@#% Problem
The $!@#% Problem


• The public CPAN is unstable & unreliable.
The $!@#% Problem


• The public CPAN is unstable & unreliable.
• Tool chain lacks precise dependency control.
The $!@#% Problem


• The public CPAN is unstable & unreliable.
• Tool chain lacks precise dependency control.
• Hard to make consistent, repeatable builds.
The $!@#% Problem


• The public CPAN is unstable & unreliable.
• Tool chain lacks precise dependency control.
• Hard to make consistent, repeatable builds.
• Existing solutions are weak.
Pinto To The Rescue
Pinto To The Rescue


• A turn-key solution for managing Perl modules.
Pinto To The Rescue


• A turn-key solution for managing Perl modules.
• Works for both CPAN and local modules.
Pinto To The Rescue


• A turn-key solution for managing Perl modules.
• Works for both CPAN and local modules.
• Constructs a CPAN-like repository.
Pinto To The Rescue


• A turn-key solution for managing Perl modules.
• Works for both CPAN and local modules.
• Constructs a CPAN-like repository.
• Compatible with the existing tool chain.
Pinto Feature Recap
Pinto Feature Recap

• A Pinto repository has multiple indexes (stacks).
Pinto Feature Recap

• A Pinto repository has multiple indexes (stacks).
• You can have multiple versions of a module.
Pinto Feature Recap

• A Pinto repository has multiple indexes (stacks).
• You can have multiple versions of a module.
• Also provides a way to fix versions (pins).
Pinto Feature Recap

• A Pinto repository has multiple indexes (stacks).
• You can have multiple versions of a module.
• Also provides a way to fix versions (pins).
• A coherent workflow for managing change.
Pinto Feature Recap

• A Pinto repository has multiple indexes (stacks).
• You can have multiple versions of a module.
• Also provides a way to fix versions (pins).
• A coherent workflow for managing change.
• Works with the standard Perl tool chain.
Pinto Feature Recap

• A Pinto repository has multiple indexes (stacks).
• You can have multiple versions of a module.
• Also provides a way to fix versions (pins).
• A coherent workflow for managing change.
• Works with the standard Perl tool chain.
• Results in consistent and reliable builds.
New Pinto Features
New Pinto Features

• A version control mechanism.
New Pinto Features

• A version control mechanism.
• Records each set of changes to the stack.
New Pinto Features

• A version control mechanism.
• Records each set of changes to the stack.
• Can examine who, what, why it changed.
New Pinto Features

• A version control mechanism.
• Records each set of changes to the stack.
• Can examine who, what, why it changed.
• Can revert to a prior revision of the stack.
New Pinto Features

• A version control mechanism.
• Records each set of changes to the stack.
• Can examine who, what, why it changed.
• Can revert to a prior revision of the stack.
• Not a full-fledged VCS, but good enough.
Basic Pinto Setup
Basic Pinto Setup
   pinto -r ~/repo init
Basic Pinto Setup
          pinto -r ~/repo init

pinto -r ~/repo pull Moose -m ‘Did stuff’
Basic Pinto Setup
          pinto -r ~/repo init

pinto -r ~/repo pull Moose -m ‘Did stuff’

          pinto -r ~/repo list
Basic Pinto Setup
            pinto -r ~/repo init

 pinto -r ~/repo pull Moose -m ‘Did stuff’

            pinto -r ~/repo list


...
rf Moose          2.06   DOY/Moose-2.06.tar.gz
rf Moose::Error   2.06   DOY/Moose-2.06.tar.gz
rf Moose::Meta    2.06   DOY/Moose-2.06.tar.gz
...
What Happened?
What Happened?
  pinto -r ~/repo log
What Happened?
            pinto -r ~/repo log


--------------------------------------------
init@1 | jeff | Mon Oct 29 23:48:57 2012

Did Stuff

--------------------------------------------
init@0 | jeff | Mon Oct 29 23:46:21 2012

Created initial stack
Gory Details
Gory Details
pinto -r ~/repo log --detailed
Gory Details
       pinto -r ~/repo log --detailed


--------------------------------------------
init@23 | jeff | Mon Oct 29 23:48:57 2012

Did Stuff

D   DOY/Moose-2.05.tar.gz/Moose~2.05
A   DOY/Moose-2.06.tar.gz/Moose~2.06
D   DOY/Moose-2.05.tar.gz/Moose::Meta~2.05
A   DOY/Moose-2.06.tar.gz/Moose::Meta~2.06
Who Dunnit?
Who Dunnit?
pinto -r ~/repo blame
Who Dunnit?
                pinto -r ~/repo blame

...
 34   jeff   Moose          2.06   DOY/Moose-2.06.tar.gz
 34   jeff   Moose::Meta    2.06   DOY/Moose-2.06.tar.gz
  8   mike   Moose::Error   2.05   DOY/Moose-2.05.tar.gz
 72   suzy   URI            1.49   GAAS/URI-1.49.tar.gz
...
Go Back In Time
Go Back In Time
 pinto -r ~/repo revert
Go Back In Time
  pinto -r ~/repo revert

 pinto -r ~/repo revert -5
Go Back In Time
  pinto -r ~/repo revert

 pinto -r ~/repo revert -5

pinto -r ~/repo revert 362
Go Back In Time
     pinto -r ~/repo revert

   pinto -r ~/repo revert -5

   pinto -r ~/repo revert 362




Is That Cool Or What?
Stratopan
Great, Yet Another Tool
  I Have To Manage
Great, Yet Another Tool
     I Have To Manage

• Pinto is evolving rapidly.
Great, Yet Another Tool
    I Have To Manage

• Pinto is evolving rapidly.
• Pinto has lots of dependencies.
Great, Yet Another Tool
    I Have To Manage

• Pinto is evolving rapidly.
• Pinto has lots of dependencies.
• Like any service, requires care and feeding.
Great, Yet Another Tool
    I Have To Manage

• Pinto is evolving rapidly.
• Pinto has lots of dependencies.
• Like any service, requires care and feeding.
• You have better things to do with your time.
So Let Us Manage It For You
So Let Us Manage It For You


• Stratopan is a web service built on Pinto.
So Let Us Manage It For You


• Stratopan is a web service built on Pinto.
• Public or private repos hosted in the cloud.
So Let Us Manage It For You


• Stratopan is a web service built on Pinto.
• Public or private repos hosted in the cloud.
• Full control over modules with stacks & pins.
So Let Us Manage It For You


• Stratopan is a web service built on Pinto.
• Public or private repos hosted in the cloud.
• Full control over modules with stacks & pins.
• Access controls for teams & customers.
So Let Us Manage It For You


• Stratopan is a web service built on Pinto.
• Public or private repos hosted in the cloud.
• Full control over modules with stacks & pins.
• Access controls for teams & customers.
• Build/test/install your modules from anywhere.
Demonstration
Future Plans
Future Plans
• Expose more Pinto features.
Future Plans
• Expose more Pinto features.
• Access controls for teams.
Future Plans
• Expose more Pinto features.
• Access controls for teams.
• Update notifications.
Future Plans
• Expose more Pinto features.
• Access controls for teams.
• Update notifications.
• Social features.
Future Plans
• Expose more Pinto features.
• Access controls for teams.
• Update notifications.
• Social features.
• Dependency graphing.
Future Plans
• Expose more Pinto features.
• Access controls for teams.
• Update notifications.
• Social features.
• Dependency graphing.
• Command line interface.
Future Plans
• Expose more Pinto features.
• Access controls for teams.
• Update notifications.
• Social features.
• Dependency graphing.
• Command line interface.
• Could be a real business.
Love
What Are You Doing Now?
What Are You Doing Now?

• Our admin installs everything as root.
What Are You Doing Now?

• Our admin installs everything as root.
• We build everything into a directory in VCS.
What Are You Doing Now?

• Our admin installs everything as root.
• We build everything into a directory in VCS.
• We put all the tar.gz files into the VCS.
What Are You Doing Now?

• Our admin installs everything as root.
• We build everything into a directory in VCS.
• We put all the tar.gz files into the VCS.
• We use a private Mini-CPAN.
What Are You Doing Now?

• Our admin installs everything as root.
• We build everything into a directory in VCS.
• We put all the tar.gz files into the VCS.
• We use a private Mini-CPAN.
• Nothing.
What Are You Doing Now?

• Our admin installs everything as root.
• We build everything into a directory in VCS.
• We put all the tar.gz files into the VCS.
• We use a private Mini-CPAN.
• Nothing.
• Other.
You’re Doing It Wrong
You’re Doing It Wrong

• What if you upgrade Perl or change OS?
You’re Doing It Wrong

• What if you upgrade Perl or change OS?
• Can you rebuild your dependencies?
You’re Doing It Wrong

• What if you upgrade Perl or change OS?
• Can you rebuild your dependencies?
• Do you know what to test after upgrading?
You’re Doing It Wrong

• What if you upgrade Perl or change OS?
• Can you rebuild your dependencies?
• Do you know what to test after upgrading?
• Do you even know what modules you have?
You’re Doing It Wrong

• What if you upgrade Perl or change OS?
• Can you rebuild your dependencies?
• Do you know what to test after upgrading?
• Do you even know what modules you have?
• What if they are no longer on CPAN?
You’re Doing It Wrong

• What if you upgrade Perl or change OS?
• Can you rebuild your dependencies?
• Do you know what to test after upgrading?
• Do you even know what modules you have?
• What if they are no longer on CPAN?
• Do you have modules that you don’t even use?
Pinto Does It Right...With Ease
Pinto Does It Right...With Ease

• All your modules are stashed forever.
Pinto Does It Right...With Ease

• All your modules are stashed forever.
• Pinto knows what the dependency graph is.
Pinto Does It Right...With Ease

• All your modules are stashed forever.
• Pinto knows what the dependency graph is.
• Pinto works seamlessly with the toolchain.
Pinto Does It Right...With Ease

• All your modules are stashed forever.
• Pinto knows what the dependency graph is.
• Pinto works seamlessly with the toolchain.
• Pinto gives you tools to manage change.
Pinto Does It Right...With Ease

• All your modules are stashed forever.
• Pinto knows what the dependency graph is.
• Pinto works seamlessly with the toolchain.
• Pinto gives you tools to manage change.
• You can rebuild from scratch at any time.
Pinto Does It Right...With Ease

• All your modules are stashed forever.
• Pinto knows what the dependency graph is.
• Pinto works seamlessly with the toolchain.
• Pinto gives you tools to manage change.
• You can rebuild from scratch at any time.
• You will get the same result, every time.
Build From Scratch...
 Are You Serious?
Build From Scratch...
              Are You Serious?


• Why not?   The computer does all the work!
Build From Scratch...
            Are You Serious?


• Why not? The computer does all the work!
• Extension of continuous integration mentality.
Build From Scratch...
            Are You Serious?


• Why not? The computer does all the work!
• Extension of continuous integration mentality.
• Build as much as you can, as often as you can.
Build From Scratch...
            Are You Serious?


• Why not? The computer does all the work!
• Extension of continuous integration mentality.
• Build as much as you can, as often as you can.
• You might not build every thing every time.
Build From Scratch...
            Are You Serious?


• Why not? The computer does all the work!
• Extension of continuous integration mentality.
• Build as much as you can, as often as you can.
• You might not build every thing every time.
• But you WILL need to do it eventually.
Build From Scratch...
            Are You Serious?


• Why not? The computer does all the work!
• Extension of continuous integration mentality.
• Build as much as you can, as often as you can.
• You might not build every thing every time.
• But you WILL need to do it eventually.
• When that time comes, Pinto will save your ass.
We Use Vendor Packages, So Buzz Off
We Use Vendor Packages, So Buzz Off


• Vendor packages are great for disparate stuff,
  like databases, apache, etc.
We Use Vendor Packages, So Buzz Off


• Vendor packages are great for disparate stuff,
  like databases, apache, etc.

• Making/Finding vendor packages for Perl
  modules is a waste of time.
We Use Vendor Packages, So Buzz Off


• Vendor packages are great for disparate stuff,
  like databases, apache, etc.

• Making/Finding vendor packages for Perl
  modules is a waste of time.

• Perl already has an great packaging system.
We Use Vendor Packages, So Buzz Off


• Vendor packages are great for disparate stuff,
  like databases, apache, etc.

• Making/Finding vendor packages for Perl
  modules is a waste of time.

• Perl already has an great packaging system.
• Use Pinto and tool chain to build your Perl wad.
We Use Vendor Packages, So Buzz Off


• Vendor packages are great for disparate stuff,
  like databases, apache, etc.

• Making/Finding vendor packages for Perl
  modules is a waste of time.

• Perl already has an great packaging system.
• Use Pinto and tool chain to build your Perl wad.
• Then wrap the wad in a vendor package.
Why Should I Care?
 “Perl is my virtual machine.
   CPAN is my language.”
                      Matt Trout
What That Means For You
What That Means For You

• Applications are built from lots of components.
What That Means For You

• Applications are built from lots of components.
• Your source code is just the glue between them.
What That Means For You

• Applications are built from lots of components.
• Your source code is just the glue between them.
• We have great tools for managing source code.
What That Means For You

• Applications are built from lots of components.
• Your source code is just the glue between them.
• We have great tools for managing source code.
• But components are the real bulk of apps.
What That Means For You

• Applications are built from lots of components.
• Your source code is just the glue between them.
• We have great tools for managing source code.
• But components are the real bulk of apps.
• So you need to manage components too.
What That Means For You

• Applications are built from lots of components.
• Your source code is just the glue between them.
• We have great tools for managing source code.
• But components are the real bulk of apps.
• So you need to manage components too.
• Otherwise, you will be screwed (some day).
The Bottom Line

 Pinto and Statopan make it so easy
there is little reason not to use them.
Learn More
Learn More


• http://www.youtube.com/watch?v=oaBBVZFhJUk
Learn More


• http://www.youtube.com/watch?v=oaBBVZFhJUk
• https://github.com/thaljef/Pinto
Learn More


• http://www.youtube.com/watch?v=oaBBVZFhJUk
• https://github.com/thaljef/Pinto
• https://metacpan.org/release/Pinto
Learn More


• http://www.youtube.com/watch?v=oaBBVZFhJUk
• https://github.com/thaljef/Pinto
• https://metacpan.org/release/Pinto
• http://alpha.stratopan.com
Thanks For Your Time


      Jeffrey Thalhammer
       thaljef@cpan.org

Contenu connexe

Tendances

ZLM-Cython Build you first module
ZLM-Cython Build you first moduleZLM-Cython Build you first module
ZLM-Cython Build you first moduleVladimir Ulogov
 
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerModern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerJohn Anderson
 
Laravel Code Generators and Packages
Laravel Code Generators and PackagesLaravel Code Generators and Packages
Laravel Code Generators and PackagesPovilas Korop
 
Laravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionLaravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionJoe Ferguson
 
2021.laravelconf.tw.slides1
2021.laravelconf.tw.slides12021.laravelconf.tw.slides1
2021.laravelconf.tw.slides1LiviaLiaoFontech
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南Shengyou Fan
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer ToolboxPablo Godel
 
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014Puppet
 
PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with ComposerAdam Englander
 
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Puppet
 
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013Testing for Ops: Going Beyond the Manifest - PuppetConf 2013
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013Puppet
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
 
Frontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxFrontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxPhilip Tellis
 
Frontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy PersonFrontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy PersonPhilip Tellis
 

Tendances (20)

2021laravelconftwslides6
2021laravelconftwslides62021laravelconftwslides6
2021laravelconftwslides6
 
ZLM-Cython Build you first module
ZLM-Cython Build you first moduleZLM-Cython Build you first module
ZLM-Cython Build you first module
 
zlm-cython
zlm-cythonzlm-cython
zlm-cython
 
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerModern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl Programmer
 
CPAN Training
CPAN TrainingCPAN Training
CPAN Training
 
Laravel Code Generators and Packages
Laravel Code Generators and PackagesLaravel Code Generators and Packages
Laravel Code Generators and Packages
 
Laravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionLaravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello Production
 
2021.laravelconf.tw.slides1
2021.laravelconf.tw.slides12021.laravelconf.tw.slides1
2021.laravelconf.tw.slides1
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
 
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
Performance Tuning Your Puppet Infrastructure - PuppetConf 2014
 
PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with Composer
 
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
 
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013Testing for Ops: Going Beyond the Manifest - PuppetConf 2013
Testing for Ops: Going Beyond the Manifest - PuppetConf 2013
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 
Frontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxFrontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou Furieux
 
The problem with Perl
The problem with PerlThe problem with Perl
The problem with Perl
 
Frontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy PersonFrontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy Person
 

Similaire à Pinto+Stratopan+Love

Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development (2 - puppetconf 2013 edition)Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development (2 - puppetconf 2013 edition)Tomas Doran
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with PuppetKris Buytaert
 
The devops approach to monitoring, Open Source and Infrastructure as Code Style
The devops approach to monitoring, Open Source and Infrastructure as Code StyleThe devops approach to monitoring, Open Source and Infrastructure as Code Style
The devops approach to monitoring, Open Source and Infrastructure as Code StyleJulien Pivotto
 
Puppet and Software Delivery
Puppet and Software DeliveryPuppet and Software Delivery
Puppet and Software DeliveryJulien Pivotto
 
Open Source Monitoring in 2019
Open Source Monitoring in 2019 Open Source Monitoring in 2019
Open Source Monitoring in 2019 Kris Buytaert
 
systemd and configuration management
systemd and configuration managementsystemd and configuration management
systemd and configuration managementJulien Pivotto
 
20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortesting20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortestingKazuhiro Oinuma
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as CodeKris Buytaert
 
Pipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodePipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodeKris Buytaert
 
When traditional configuration management is to slow for your needs
When traditional configuration management is to slow for your needsWhen traditional configuration management is to slow for your needs
When traditional configuration management is to slow for your needsKris Buytaert
 
'Intro to Infrastructure as Code' - DevOps Belfast
'Intro to Infrastructure as Code' - DevOps Belfast'Intro to Infrastructure as Code' - DevOps Belfast
'Intro to Infrastructure as Code' - DevOps BelfastJohn Fitzpatrick
 
Integration
IntegrationIntegration
IntegrationStevoC
 
Continuous Deployment of Architectural Change
Continuous Deployment of Architectural ChangeContinuous Deployment of Architectural Change
Continuous Deployment of Architectural ChangeMatt Graham
 
Run stuff, Deploy Stuff, Jax London 2017 Edition
Run stuff, Deploy Stuff, Jax London 2017 EditionRun stuff, Deploy Stuff, Jax London 2017 Edition
Run stuff, Deploy Stuff, Jax London 2017 EditionKris Buytaert
 
Building and Deploying MediaSalsa, a drupal-based DAM as a Service
Building and Deploying MediaSalsa, a drupal-based DAM as a ServiceBuilding and Deploying MediaSalsa, a drupal-based DAM as a Service
Building and Deploying MediaSalsa, a drupal-based DAM as a ServiceJulien Pivotto
 
Pipfile, pipenv, pip… what?!
Pipfile, pipenv, pip… what?!Pipfile, pipenv, pip… what?!
Pipfile, pipenv, pip… what?!Ivan Chernoff
 
A call to give back puppetlabs-corosync to the community
A call to give back puppetlabs-corosync to the communityA call to give back puppetlabs-corosync to the community
A call to give back puppetlabs-corosync to the communityJulien Pivotto
 
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...ORAU
 

Similaire à Pinto+Stratopan+Love (20)

Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development (2 - puppetconf 2013 edition)Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development (2 - puppetconf 2013 edition)
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with Puppet
 
The devops approach to monitoring, Open Source and Infrastructure as Code Style
The devops approach to monitoring, Open Source and Infrastructure as Code StyleThe devops approach to monitoring, Open Source and Infrastructure as Code Style
The devops approach to monitoring, Open Source and Infrastructure as Code Style
 
Puppet and Software Delivery
Puppet and Software DeliveryPuppet and Software Delivery
Puppet and Software Delivery
 
Open Source Monitoring in 2019
Open Source Monitoring in 2019 Open Source Monitoring in 2019
Open Source Monitoring in 2019
 
Python+gradle
Python+gradlePython+gradle
Python+gradle
 
systemd and configuration management
systemd and configuration managementsystemd and configuration management
systemd and configuration management
 
20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortesting20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortesting
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
 
True Git
True Git True Git
True Git
 
Pipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodePipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as Code
 
When traditional configuration management is to slow for your needs
When traditional configuration management is to slow for your needsWhen traditional configuration management is to slow for your needs
When traditional configuration management is to slow for your needs
 
'Intro to Infrastructure as Code' - DevOps Belfast
'Intro to Infrastructure as Code' - DevOps Belfast'Intro to Infrastructure as Code' - DevOps Belfast
'Intro to Infrastructure as Code' - DevOps Belfast
 
Integration
IntegrationIntegration
Integration
 
Continuous Deployment of Architectural Change
Continuous Deployment of Architectural ChangeContinuous Deployment of Architectural Change
Continuous Deployment of Architectural Change
 
Run stuff, Deploy Stuff, Jax London 2017 Edition
Run stuff, Deploy Stuff, Jax London 2017 EditionRun stuff, Deploy Stuff, Jax London 2017 Edition
Run stuff, Deploy Stuff, Jax London 2017 Edition
 
Building and Deploying MediaSalsa, a drupal-based DAM as a Service
Building and Deploying MediaSalsa, a drupal-based DAM as a ServiceBuilding and Deploying MediaSalsa, a drupal-based DAM as a Service
Building and Deploying MediaSalsa, a drupal-based DAM as a Service
 
Pipfile, pipenv, pip… what?!
Pipfile, pipenv, pip… what?!Pipfile, pipenv, pip… what?!
Pipfile, pipenv, pip… what?!
 
A call to give back puppetlabs-corosync to the community
A call to give back puppetlabs-corosync to the communityA call to give back puppetlabs-corosync to the community
A call to give back puppetlabs-corosync to the community
 
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
Non equilibrium Molecular Simulations of Polymers under Flow Saving Energy th...
 

Pinto+Stratopan+Love

  • 1. Pinto + Stratopan + Love San Francisco Perl Mongers October 30, 2012 Jeffrey Thalhammer thaljef@cpan.org
  • 4. The $!@#% Problem • The public CPAN is unstable & unreliable.
  • 5. The $!@#% Problem • The public CPAN is unstable & unreliable. • Tool chain lacks precise dependency control.
  • 6. The $!@#% Problem • The public CPAN is unstable & unreliable. • Tool chain lacks precise dependency control. • Hard to make consistent, repeatable builds.
  • 7. The $!@#% Problem • The public CPAN is unstable & unreliable. • Tool chain lacks precise dependency control. • Hard to make consistent, repeatable builds. • Existing solutions are weak.
  • 8. Pinto To The Rescue
  • 9. Pinto To The Rescue • A turn-key solution for managing Perl modules.
  • 10. Pinto To The Rescue • A turn-key solution for managing Perl modules. • Works for both CPAN and local modules.
  • 11. Pinto To The Rescue • A turn-key solution for managing Perl modules. • Works for both CPAN and local modules. • Constructs a CPAN-like repository.
  • 12. Pinto To The Rescue • A turn-key solution for managing Perl modules. • Works for both CPAN and local modules. • Constructs a CPAN-like repository. • Compatible with the existing tool chain.
  • 14. Pinto Feature Recap • A Pinto repository has multiple indexes (stacks).
  • 15. Pinto Feature Recap • A Pinto repository has multiple indexes (stacks). • You can have multiple versions of a module.
  • 16. Pinto Feature Recap • A Pinto repository has multiple indexes (stacks). • You can have multiple versions of a module. • Also provides a way to fix versions (pins).
  • 17. Pinto Feature Recap • A Pinto repository has multiple indexes (stacks). • You can have multiple versions of a module. • Also provides a way to fix versions (pins). • A coherent workflow for managing change.
  • 18. Pinto Feature Recap • A Pinto repository has multiple indexes (stacks). • You can have multiple versions of a module. • Also provides a way to fix versions (pins). • A coherent workflow for managing change. • Works with the standard Perl tool chain.
  • 19. Pinto Feature Recap • A Pinto repository has multiple indexes (stacks). • You can have multiple versions of a module. • Also provides a way to fix versions (pins). • A coherent workflow for managing change. • Works with the standard Perl tool chain. • Results in consistent and reliable builds.
  • 21. New Pinto Features • A version control mechanism.
  • 22. New Pinto Features • A version control mechanism. • Records each set of changes to the stack.
  • 23. New Pinto Features • A version control mechanism. • Records each set of changes to the stack. • Can examine who, what, why it changed.
  • 24. New Pinto Features • A version control mechanism. • Records each set of changes to the stack. • Can examine who, what, why it changed. • Can revert to a prior revision of the stack.
  • 25. New Pinto Features • A version control mechanism. • Records each set of changes to the stack. • Can examine who, what, why it changed. • Can revert to a prior revision of the stack. • Not a full-fledged VCS, but good enough.
  • 27. Basic Pinto Setup pinto -r ~/repo init
  • 28. Basic Pinto Setup pinto -r ~/repo init pinto -r ~/repo pull Moose -m ‘Did stuff’
  • 29. Basic Pinto Setup pinto -r ~/repo init pinto -r ~/repo pull Moose -m ‘Did stuff’ pinto -r ~/repo list
  • 30. Basic Pinto Setup pinto -r ~/repo init pinto -r ~/repo pull Moose -m ‘Did stuff’ pinto -r ~/repo list ... rf Moose 2.06 DOY/Moose-2.06.tar.gz rf Moose::Error 2.06 DOY/Moose-2.06.tar.gz rf Moose::Meta 2.06 DOY/Moose-2.06.tar.gz ...
  • 32. What Happened? pinto -r ~/repo log
  • 33. What Happened? pinto -r ~/repo log -------------------------------------------- init@1 | jeff | Mon Oct 29 23:48:57 2012 Did Stuff -------------------------------------------- init@0 | jeff | Mon Oct 29 23:46:21 2012 Created initial stack
  • 35. Gory Details pinto -r ~/repo log --detailed
  • 36. Gory Details pinto -r ~/repo log --detailed -------------------------------------------- init@23 | jeff | Mon Oct 29 23:48:57 2012 Did Stuff D DOY/Moose-2.05.tar.gz/Moose~2.05 A DOY/Moose-2.06.tar.gz/Moose~2.06 D DOY/Moose-2.05.tar.gz/Moose::Meta~2.05 A DOY/Moose-2.06.tar.gz/Moose::Meta~2.06
  • 38. Who Dunnit? pinto -r ~/repo blame
  • 39. Who Dunnit? pinto -r ~/repo blame ... 34 jeff Moose 2.06 DOY/Moose-2.06.tar.gz 34 jeff Moose::Meta 2.06 DOY/Moose-2.06.tar.gz 8 mike Moose::Error 2.05 DOY/Moose-2.05.tar.gz 72 suzy URI 1.49 GAAS/URI-1.49.tar.gz ...
  • 40. Go Back In Time
  • 41. Go Back In Time pinto -r ~/repo revert
  • 42. Go Back In Time pinto -r ~/repo revert pinto -r ~/repo revert -5
  • 43. Go Back In Time pinto -r ~/repo revert pinto -r ~/repo revert -5 pinto -r ~/repo revert 362
  • 44. Go Back In Time pinto -r ~/repo revert pinto -r ~/repo revert -5 pinto -r ~/repo revert 362 Is That Cool Or What?
  • 46. Great, Yet Another Tool I Have To Manage
  • 47. Great, Yet Another Tool I Have To Manage • Pinto is evolving rapidly.
  • 48. Great, Yet Another Tool I Have To Manage • Pinto is evolving rapidly. • Pinto has lots of dependencies.
  • 49. Great, Yet Another Tool I Have To Manage • Pinto is evolving rapidly. • Pinto has lots of dependencies. • Like any service, requires care and feeding.
  • 50. Great, Yet Another Tool I Have To Manage • Pinto is evolving rapidly. • Pinto has lots of dependencies. • Like any service, requires care and feeding. • You have better things to do with your time.
  • 51. So Let Us Manage It For You
  • 52. So Let Us Manage It For You • Stratopan is a web service built on Pinto.
  • 53. So Let Us Manage It For You • Stratopan is a web service built on Pinto. • Public or private repos hosted in the cloud.
  • 54. So Let Us Manage It For You • Stratopan is a web service built on Pinto. • Public or private repos hosted in the cloud. • Full control over modules with stacks & pins.
  • 55. So Let Us Manage It For You • Stratopan is a web service built on Pinto. • Public or private repos hosted in the cloud. • Full control over modules with stacks & pins. • Access controls for teams & customers.
  • 56. So Let Us Manage It For You • Stratopan is a web service built on Pinto. • Public or private repos hosted in the cloud. • Full control over modules with stacks & pins. • Access controls for teams & customers. • Build/test/install your modules from anywhere.
  • 59. Future Plans • Expose more Pinto features.
  • 60. Future Plans • Expose more Pinto features. • Access controls for teams.
  • 61. Future Plans • Expose more Pinto features. • Access controls for teams. • Update notifications.
  • 62. Future Plans • Expose more Pinto features. • Access controls for teams. • Update notifications. • Social features.
  • 63. Future Plans • Expose more Pinto features. • Access controls for teams. • Update notifications. • Social features. • Dependency graphing.
  • 64. Future Plans • Expose more Pinto features. • Access controls for teams. • Update notifications. • Social features. • Dependency graphing. • Command line interface.
  • 65. Future Plans • Expose more Pinto features. • Access controls for teams. • Update notifications. • Social features. • Dependency graphing. • Command line interface. • Could be a real business.
  • 66. Love
  • 67. What Are You Doing Now?
  • 68. What Are You Doing Now? • Our admin installs everything as root.
  • 69. What Are You Doing Now? • Our admin installs everything as root. • We build everything into a directory in VCS.
  • 70. What Are You Doing Now? • Our admin installs everything as root. • We build everything into a directory in VCS. • We put all the tar.gz files into the VCS.
  • 71. What Are You Doing Now? • Our admin installs everything as root. • We build everything into a directory in VCS. • We put all the tar.gz files into the VCS. • We use a private Mini-CPAN.
  • 72. What Are You Doing Now? • Our admin installs everything as root. • We build everything into a directory in VCS. • We put all the tar.gz files into the VCS. • We use a private Mini-CPAN. • Nothing.
  • 73. What Are You Doing Now? • Our admin installs everything as root. • We build everything into a directory in VCS. • We put all the tar.gz files into the VCS. • We use a private Mini-CPAN. • Nothing. • Other.
  • 75. You’re Doing It Wrong • What if you upgrade Perl or change OS?
  • 76. You’re Doing It Wrong • What if you upgrade Perl or change OS? • Can you rebuild your dependencies?
  • 77. You’re Doing It Wrong • What if you upgrade Perl or change OS? • Can you rebuild your dependencies? • Do you know what to test after upgrading?
  • 78. You’re Doing It Wrong • What if you upgrade Perl or change OS? • Can you rebuild your dependencies? • Do you know what to test after upgrading? • Do you even know what modules you have?
  • 79. You’re Doing It Wrong • What if you upgrade Perl or change OS? • Can you rebuild your dependencies? • Do you know what to test after upgrading? • Do you even know what modules you have? • What if they are no longer on CPAN?
  • 80. You’re Doing It Wrong • What if you upgrade Perl or change OS? • Can you rebuild your dependencies? • Do you know what to test after upgrading? • Do you even know what modules you have? • What if they are no longer on CPAN? • Do you have modules that you don’t even use?
  • 81. Pinto Does It Right...With Ease
  • 82. Pinto Does It Right...With Ease • All your modules are stashed forever.
  • 83. Pinto Does It Right...With Ease • All your modules are stashed forever. • Pinto knows what the dependency graph is.
  • 84. Pinto Does It Right...With Ease • All your modules are stashed forever. • Pinto knows what the dependency graph is. • Pinto works seamlessly with the toolchain.
  • 85. Pinto Does It Right...With Ease • All your modules are stashed forever. • Pinto knows what the dependency graph is. • Pinto works seamlessly with the toolchain. • Pinto gives you tools to manage change.
  • 86. Pinto Does It Right...With Ease • All your modules are stashed forever. • Pinto knows what the dependency graph is. • Pinto works seamlessly with the toolchain. • Pinto gives you tools to manage change. • You can rebuild from scratch at any time.
  • 87. Pinto Does It Right...With Ease • All your modules are stashed forever. • Pinto knows what the dependency graph is. • Pinto works seamlessly with the toolchain. • Pinto gives you tools to manage change. • You can rebuild from scratch at any time. • You will get the same result, every time.
  • 88. Build From Scratch... Are You Serious?
  • 89. Build From Scratch... Are You Serious? • Why not? The computer does all the work!
  • 90. Build From Scratch... Are You Serious? • Why not? The computer does all the work! • Extension of continuous integration mentality.
  • 91. Build From Scratch... Are You Serious? • Why not? The computer does all the work! • Extension of continuous integration mentality. • Build as much as you can, as often as you can.
  • 92. Build From Scratch... Are You Serious? • Why not? The computer does all the work! • Extension of continuous integration mentality. • Build as much as you can, as often as you can. • You might not build every thing every time.
  • 93. Build From Scratch... Are You Serious? • Why not? The computer does all the work! • Extension of continuous integration mentality. • Build as much as you can, as often as you can. • You might not build every thing every time. • But you WILL need to do it eventually.
  • 94. Build From Scratch... Are You Serious? • Why not? The computer does all the work! • Extension of continuous integration mentality. • Build as much as you can, as often as you can. • You might not build every thing every time. • But you WILL need to do it eventually. • When that time comes, Pinto will save your ass.
  • 95. We Use Vendor Packages, So Buzz Off
  • 96. We Use Vendor Packages, So Buzz Off • Vendor packages are great for disparate stuff, like databases, apache, etc.
  • 97. We Use Vendor Packages, So Buzz Off • Vendor packages are great for disparate stuff, like databases, apache, etc. • Making/Finding vendor packages for Perl modules is a waste of time.
  • 98. We Use Vendor Packages, So Buzz Off • Vendor packages are great for disparate stuff, like databases, apache, etc. • Making/Finding vendor packages for Perl modules is a waste of time. • Perl already has an great packaging system.
  • 99. We Use Vendor Packages, So Buzz Off • Vendor packages are great for disparate stuff, like databases, apache, etc. • Making/Finding vendor packages for Perl modules is a waste of time. • Perl already has an great packaging system. • Use Pinto and tool chain to build your Perl wad.
  • 100. We Use Vendor Packages, So Buzz Off • Vendor packages are great for disparate stuff, like databases, apache, etc. • Making/Finding vendor packages for Perl modules is a waste of time. • Perl already has an great packaging system. • Use Pinto and tool chain to build your Perl wad. • Then wrap the wad in a vendor package.
  • 101. Why Should I Care? “Perl is my virtual machine. CPAN is my language.” Matt Trout
  • 102. What That Means For You
  • 103. What That Means For You • Applications are built from lots of components.
  • 104. What That Means For You • Applications are built from lots of components. • Your source code is just the glue between them.
  • 105. What That Means For You • Applications are built from lots of components. • Your source code is just the glue between them. • We have great tools for managing source code.
  • 106. What That Means For You • Applications are built from lots of components. • Your source code is just the glue between them. • We have great tools for managing source code. • But components are the real bulk of apps.
  • 107. What That Means For You • Applications are built from lots of components. • Your source code is just the glue between them. • We have great tools for managing source code. • But components are the real bulk of apps. • So you need to manage components too.
  • 108. What That Means For You • Applications are built from lots of components. • Your source code is just the glue between them. • We have great tools for managing source code. • But components are the real bulk of apps. • So you need to manage components too. • Otherwise, you will be screwed (some day).
  • 109. The Bottom Line Pinto and Statopan make it so easy there is little reason not to use them.
  • 113. Learn More • http://www.youtube.com/watch?v=oaBBVZFhJUk • https://github.com/thaljef/Pinto • https://metacpan.org/release/Pinto
  • 114. Learn More • http://www.youtube.com/watch?v=oaBBVZFhJUk • https://github.com/thaljef/Pinto • https://metacpan.org/release/Pinto • http://alpha.stratopan.com
  • 115. Thanks For Your Time Jeffrey Thalhammer thaljef@cpan.org

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n