1Scaling DevOps with Puppet and PerforceChristoph LeithnerFounderCELIX Hard- & SoftwareVertriebsgmbHhttp://www.celix.atLog...
2Agenda• What is DevOps?• IT Automation with Puppet• Scaling DevOps with Perforce• Agile Flow of Change for Puppet Modules
3What is DevOps?
4DevOpsWhat is DevOps?Source: http://commons.wikimedia.org/wiki/File:Devops.png by Rajiv PanTechnologyOperationsDevOps
5Area 1: Extend deliveryto productionDEV OPSArea 2: Extend operationsfeedback to projectArea 3: Embed project knowledge in...
6• IT Automation: Puppet• Shared Version Control: Perforce• Build and Deploy: Atlassian Bamboo• Process Management: Atlass...
7IT Automation with Puppet
8Define.1 2 Simulate.3 Enforce.4 Report.How Puppet works
9Database Web Server Application Server SecurityModulesVia Puppet Dashboard Custom External Source(CMDB, LDAP, etc.)Define...
10user { dave:ensure => present,uid => 507,gid => admin,shell => /bin/zsh,home => /home/dave,managehome => true,}Puppet Re...
11class ssh {package { ‘ssh’:ensure => latest,}file { ‘/etc/ssh/sshd_config’:source => ‘puppet:///modules/ssh/sshd_config’...
12module_namemanifestsfilestemplateslibspectestsModulefilePuppet Modules – Deployments as Code
13name puppetlabs-apacheversion 0.6.0source git://github.com/puppetlabs/puppetlabs-apache.gitauthor puppetlabslicense Apac...
14http://forge.puppetlabs.com
15puppet module install puppetlabs-apache --version 0.6.0firewallstdlibapachePuppet Module Subcommand
16puppet module install puppetlabs-ntp --version 0.2.0puppet module install puppetlabs-apache --version 0.6.0firewall ntps...
17puppet module install puppetlabs-ntp --version 0.2.0puppet module install puppetlabs-apache --version 0.6.0firewallPuppe...
18Option A: Version each Module you need to change locallyA Git Repository for each Puppet Module you changefirewallPuppet...
19Option B: Version the Environment FolderA single Git Repository for the Puppet EnvironmentfirewallPuppet Environmentntps...
20Option C:A single Git Repository for the Puppet Environment that uses GitSubmodules to include the Git Repositories for ...
21mainforgeapachestdlibfirewallManaging Puppet Environments with Perforce Git Fusionapachestdlibfirewallenvironment
22mainforgeapachestdlibfirewallManaging Puppet Environments with Perforce Git FusionenvironmentPuppet Environmentapachestd...
23feature_4release_12.3forgefeature_1hotfix_1release_13.1feature_2 feature_3Mainline Model for Puppet Modulesmainline
24• Modularity – Puppet Environment Repository isassembled from multiple Module Repositories• Easy Workflow - NO Git Submo...
25Puppet ConsolePuppet Module ForgeBuild and DeployVersion ManagementProcess ManagementPuppet Agent FacterNODEPuppet Agent...
26Catalog1234 ReportCollectorReportReportFacts SSL secureEncryprionon all datatransportPuppetMasterNodePuppet Data Flow
27Scaling DevOpsAgile Flow of Change for Puppet Modules
28• More Teams/Services adopt DevOps Practices• Number of Environments and Modules grows• Fine grained Security becomes mo...
29release_12.3rails_webapphotfix_1release_13.1feature_1 feature_2apachezend_webappjava_appmainlineAgile Flow of Change for...
30rel_12.3java_apprel_13.1zend_webappapachefeature_2feature_1rails_webappmainapache_onlyAgile Flow of Change for Puppet Mo...
31apache rails_webapp zend_webappAll trademarks and logos are property of their respective ownersmainrailswebapprailswebap...
32Development Quality Assurance Staging ProductionFeature Stream Service Stream Mainline Stream Release Stream/TagBuild Au...
33Puppet ConsolePuppet Module ForgeBuild and DeployVersion ManagementProcess ManagementPuppet Agent FacterNODEPuppet Agent...
34Thank you.perforce@celix.at
Upcoming SlideShare
Loading in …5
×

[Celix] Scaling DevOps with Puppet and Perforce

1,649 views

Published on

Learn how to scale DevOps to a large number of IT services and take the next step towards end-to-end agility. In this presentation, see how Perforce and Git Fusion can help manage Puppet environments with an increasing number of Puppet modules.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,649
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

[Celix] Scaling DevOps with Puppet and Perforce

  1. 1. 1Scaling DevOps with Puppet and PerforceChristoph LeithnerFounderCELIX Hard- & SoftwareVertriebsgmbHhttp://www.celix.atLogo area
  2. 2. 2Agenda• What is DevOps?• IT Automation with Puppet• Scaling DevOps with Perforce• Agile Flow of Change for Puppet Modules
  3. 3. 3What is DevOps?
  4. 4. 4DevOpsWhat is DevOps?Source: http://commons.wikimedia.org/wiki/File:Devops.png by Rajiv PanTechnologyOperationsDevOps
  5. 5. 5Area 1: Extend deliveryto productionDEV OPSArea 2: Extend operationsfeedback to projectArea 3: Embed project knowledge into operationsArea 4: Embed operations knowledge into projectSource: http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/ by Patrick DeboisDevOps Areas - codified by Patrick Debois
  6. 6. 6• IT Automation: Puppet• Shared Version Control: Perforce• Build and Deploy: Atlassian Bamboo• Process Management: Atlassian JIRADevOps Tools - Overview
  7. 7. 7IT Automation with Puppet
  8. 8. 8Define.1 2 Simulate.3 Enforce.4 Report.How Puppet works
  9. 9. 9Database Web Server Application Server SecurityModulesVia Puppet Dashboard Custom External Source(CMDB, LDAP, etc.)Define yourresources inmodules.1Assign resourcerelationshipsautomatically.2Reuseable,composableconfigurations.3Web Servers Database Servers Application ServersDefine Composable Deployments with Puppet
  10. 10. 10user { dave:ensure => present,uid => 507,gid => admin,shell => /bin/zsh,home => /home/dave,managehome => true,}Puppet Resource Abstraction Layer (RAL)
  11. 11. 11class ssh {package { ‘ssh’:ensure => latest,}file { ‘/etc/ssh/sshd_config’:source => ‘puppet:///modules/ssh/sshd_config’,}service { ‘sshd’:ensure => running,}Package[‘ssh’]->File[‘/etc/ssh/sshd_config’]~>Service[‘sshd’]Package[‘ssh’]~>Service[‘sshd’]}class sshPuppet RAL Example:
  12. 12. 12module_namemanifestsfilestemplateslibspectestsModulefilePuppet Modules – Deployments as Code
  13. 13. 13name puppetlabs-apacheversion 0.6.0source git://github.com/puppetlabs/puppetlabs-apache.gitauthor puppetlabslicense Apache 2.0summary Puppet module for Apachedescription Module for Apache configurationproject_page https://github.com/puppetlabs/puppetlabs-apache## Add dependencies, if any:dependency puppetlabs/firewall, >= 0.0.4dependency puppetlabs/stdlib, >= 2.2.1Puppet Modulefile for puppetlabs-apache
  14. 14. 14http://forge.puppetlabs.com
  15. 15. 15puppet module install puppetlabs-apache --version 0.6.0firewallstdlibapachePuppet Module Subcommand
  16. 16. 16puppet module install puppetlabs-ntp --version 0.2.0puppet module install puppetlabs-apache --version 0.6.0firewall ntpstdlibapacheSets of Modules
  17. 17. 17puppet module install puppetlabs-ntp --version 0.2.0puppet module install puppetlabs-apache --version 0.6.0firewallPuppet EnvironmentntpstdlibapacheMultiple Environments on a single Puppet MasterSets of Modules – Puppet Environments
  18. 18. 18Option A: Version each Module you need to change locallyA Git Repository for each Puppet Module you changefirewallPuppet EnvironmentntpstdlibapacheVersioning Puppet Modules/Environments
  19. 19. 19Option B: Version the Environment FolderA single Git Repository for the Puppet EnvironmentfirewallPuppet EnvironmentntpstdlibapacheVersioning Puppet Modules/Environments
  20. 20. 20Option C:A single Git Repository for the Puppet Environment that uses GitSubmodules to include the Git Repositories for the ModulesfirewallPuppet EnvironmentntpstdlibapacheVersion the Environment Folder and all ModulesVersioning Puppet Modules/Environments
  21. 21. 21mainforgeapachestdlibfirewallManaging Puppet Environments with Perforce Git Fusionapachestdlibfirewallenvironment
  22. 22. 22mainforgeapachestdlibfirewallManaging Puppet Environments with Perforce Git FusionenvironmentPuppet Environmentapachestdlibfirewall
  23. 23. 23feature_4release_12.3forgefeature_1hotfix_1release_13.1feature_2 feature_3Mainline Model for Puppet Modulesmainline
  24. 24. 24• Modularity – Puppet Environment Repository isassembled from multiple Module Repositories• Easy Workflow - NO Git Submodules• Central Change History in Perforce• Fine grained PermissionsPerforce Git Fusion - Benefits
  25. 25. 25Puppet ConsolePuppet Module ForgeBuild and DeployVersion ManagementProcess ManagementPuppet Agent FacterNODEPuppet Agent FacterNODEPuppet Agent FacterNODEPuppet Agent FacterNODEPuppet Agent FacterNODEPuppet MasterModules/EnvironmentsPuppet Architecture
  26. 26. 26Catalog1234 ReportCollectorReportReportFacts SSL secureEncryprionon all datatransportPuppetMasterNodePuppet Data Flow
  27. 27. 27Scaling DevOpsAgile Flow of Change for Puppet Modules
  28. 28. 28• More Teams/Services adopt DevOps Practices• Number of Environments and Modules grows• Fine grained Security becomes more important• Central Change history is required• Processes are standardized• Environments are standardized• Puppetized Deployments are used across all StagesWhat means Scaling DevOps?
  29. 29. 29release_12.3rails_webapphotfix_1release_13.1feature_1 feature_2apachezend_webappjava_appmainlineAgile Flow of Change for Puppet Modules
  30. 30. 30rel_12.3java_apprel_13.1zend_webappapachefeature_2feature_1rails_webappmainapache_onlyAgile Flow of Change for Puppet Modules
  31. 31. 31apache rails_webapp zend_webappAll trademarks and logos are property of their respective ownersmainrailswebapprailswebappzendwebappzendwebappPerforce Streams Modularityrailswebappzendwebapp
  32. 32. 32Development Quality Assurance Staging ProductionFeature Stream Service Stream Mainline Stream Release Stream/TagBuild Automation - The Puppet Environment Lifecycle
  33. 33. 33Puppet ConsolePuppet Module ForgeBuild and DeployVersion ManagementProcess ManagementPuppet Agent FacterNODEPuppet Agent FacterNODEPuppet Agent FacterNODEPuppet Agent FacterNODEPuppet Agent FacterNODEPuppet MasterModules/EnvironmentsSummary
  34. 34. 34Thank you.perforce@celix.at

×