Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Puppet Camp Denver 2015: Running a Benevolent Puppet Regime

741 views

Published on

Seth Goings, ReadyTalk

Published in: Software
  • Be the first to comment

Puppet Camp Denver 2015: Running a Benevolent Puppet Regime

  1. 1. Running a Benevolent Puppet Regime @sethgoings
  2. 2. Puppet Regime?
  3. 3. Benevolent Puppet Regime?
  4. 4. Puppet Regime?
  5. 5. a system that is directed by an outside authority that leads to hardships on those governed
  6. 6. Benevolent Puppet Regime?
  7. 7. a system that is directed by an outside authority that leads to improved operations on those governed
  8. 8. a system that is directed by an outside authority that leads to improved operations on those governed People Computers
  9. 9. 80 40
  10. 10. hundreds thousands
  11. 11. Ol’ Perly
  12. 12. … but …
  13. 13. … won’t allow Puppet on his machine because it will totally destroy his glorious dotfiles ...
  14. 14. … why change what is working just fine? ...
  15. 15. 2 years ago...
  16. 16. Which statement best describes your ability to work on Puppet modules?
  17. 17. I try to avoid working on Puppet modules.
  18. 18. I can add new Puppet modules to support a new feature or add functionality for a related story and I am familiar with how to test Puppet modules.
  19. 19. I try to avoid working on Puppet modules.
  20. 20. I can read Puppet code and generally figure out what a Puppet module is supposed to do.
  21. 21. Survey Quotes
  22. 22. I don’t use Puppet
  23. 23. Are the currently used Puppet modules available in a repository for viewing and/or editing by any team member? I wasn't aware that I had access ...
  24. 24. I feel like our Puppet modules are guarded. I am happy and able to contribute but don't feel like there is a culture that supports this.
  25. 25. What do you do when you run into issues with Puppet?
  26. 26. I say nothing and hope someone else will run into the problem and fix it later.
  27. 27. I investigate and resolve the issue myself using online documentation or other resources.
  28. 28. I file a Jira issue with steps to reproduce the problem.
  29. 29. I ask a subject matter expert for assistance.
  30. 30. Survey Quotes
  31. 31. I've never had to do anything with Puppet. I do know that Puppet has never worked on my dev environment and when I asked for help people ran away from me.
  32. 32. … also Puppet attacked and killed my family.
  33. 33. I like the idea of Puppet, but I have no idea how to get started or how it works. I can blow through the examples and tutorials online, but I have no idea how to contribute or improve our internal Puppet infrastructure.
  34. 34. 2 years ago...
  35. 35. It’s not Puppet’s fault it’s how we’re using Puppet or how we’ve built our modules
  36. 36. How long does it take to set up a new machine for any engineer? (have hardware, need OS and packages installed required for their duties) A. 1 hour (10 points) B. 1 day (5 points) C. 1 week (1 point) D. > 1 week (0 points)
  37. 37. How long does it take to fulfill a normal priority request from someone to install a service on every one of your machines (including production)? A. 1 hour (10 points) B. 1 day (5 points) C. 1 week (1 point) D. > 1 week (0 points)
  38. 38. How long does it take to fulfill an emergency request from someone to install a service on every one of your machines (including production)? A. 1 hour (10 points) B. 1 day (5 points) C. 1 week (1 point) D. > 1 week (0 points)
  39. 39. Who contributes to the advancement of your infrastructure via Puppet? A. everyone (10 points) B. the team that owns it (5 points) C. the person who owns it (1 point) D. no one (0 points)
  40. 40. 35 - 40 = Killin’ it. (why aren’t you up here?) 20 - 34 = It’s not your first Puppet show, is it? 5 - 19 = You’re average! 0 - 4 = Did you pass math class?
  41. 41. People could help but “can’t”
  42. 42. Low Involvement
  43. 43. People who know how to maintain/advance Puppet are too tied up in fixing problems
  44. 44. Strained Group
  45. 45. Puppet is perceived as something that gets in the way / is inconvenient
  46. 46. Processes and Team Subverted
  47. 47. Low Involve
  48. 48. StrainedGroup Low Involve
  49. 49. Process Subverted Low Involve StrainedGroup
  50. 50. Hard work will not ensure quality
  51. 51. Best efforts will not ensure quality
  52. 52. Gadgets computers or investment in machinery will not ensure quality
  53. 53. It is not enough to do your best; you must know what to do and then do your best.
  54. 54. Puppet Regime?
  55. 55. a system that is directed by an outside authority that leads to hardships on those governed
  56. 56. Benevolent Puppet Regime?
  57. 57. a system that is directed by an outside authority that leads to improved operations on those governed
  58. 58. a system that is directed by an outside authority that leads to improved operations on those governed People Computers
  59. 59. Commit to Collaboration
  60. 60. Who contributes to the advancement of your infrastructure via Puppet?
  61. 61. Low Involvement
  62. 62. Commit to Collaboration
  63. 63. Commit to Collaboration
  64. 64. Commit to Collaboration
  65. 65. Low Involvement
  66. 66. Automate Authority
  67. 67. How long does it take to fulfill a request someone to install a service on every one of your machines (including production)?
  68. 68. Strained Group
  69. 69. Automate Authority
  70. 70. github.com/puppetlabs/beaker
  71. 71. --- provisioner: name: puppet_apply manifests_path: test/manifests manifest: site.pp modules_path: local hiera_data_path: test/hieradata puppet_test: true platforms: - name: debian-7.8-64-puppet driver_plugin: vagrant driver_config: box: puppetlabs/debian-7.8-64-puppet box_url: puppetlabs/debian-7.8-64-puppet suites: - name: default - name: kitchen_dev - name: postgres - name: docker_ship - name: java
  72. 72. platforms: - name: debian-7.8-64-puppet driver_plugin: vagrant driver_config: box: puppetlabs/debian-7.8-64-puppet box_url: puppetlabs/debian-7.8-64-puppet
  73. 73. provisioner: name: puppet_apply manifests_path: test/manifests manifest: site.pp modules_path: local hiera_data_path: test/hieradata puppet_test: true
  74. 74. suites: - name: postgres
  75. 75. describe "Postgres Packages" do pg_packages = %w[ postgresql-9.2 postgresql-client-9.2 postgresql-contrib-9.2 postgresql-9.2-pgextwlist ] ...
  76. 76. describe "Postgres Packages" do ... pg_packages.each do |pkg| it "#{pkg} is installed" do expect(package(pkg)).to be_installed end end end
  77. 77. Strained Group
  78. 78. Automate Authority
  79. 79. How long does it take to fulfill a request someone to install a service on every one of your machines (including production)?
  80. 80. Rebuild Ruthlessly
  81. 81. How long does it take to set up a new machine for any engineer? (have hardware, need OS and packages installed required for their duties)
  82. 82. Strained Group
  83. 83. Processes and Team Subverted
  84. 84. How long does it take to fulfill a request someone to install a service on every one of your machines (including production)?
  85. 85. Kif Kroker: Captain, may I have a word with you? Captain Zapp Brannigan: No.
  86. 86. Kif Kroker: It's an emergency, sir. Captain Zapp Brannigan: Come back when it's a catastrophe.
  87. 87. [ loud rumbling ]
  88. 88. Captain Zapp Brannigan: Oh, very well.
  89. 89. - hosts: localhost tasks: ... - hosts: build_slaves serial: 2 roles: ... - jenkins-slave tasks: ...
  90. 90. - name: get jenkins cli jar local_action: get_url url="https://<jenkins>/jnlpJars/jenkins-cli.jar" dest="{{ jenkins_cli }}" run_once: true
  91. 91. - name: put Jenkins slave offline - name: wait for Jenkins slave to become idle - name: initiate Foreman build - name: restart server - name: verify server is dead - name: wait for server to come back alive - name: launch Jenkins slave - name: put Jenkins slave online
  92. 92. - name: put Jenkins slave offline - name: wait for Jenkins slave to become idle - name: initiate Foreman build - name: restart server - name: verify server is dead - name: wait for server to come back alive - name: launch Jenkins slave - name: put Jenkins slave online
  93. 93. - name: put Jenkins slave offline - name: wait for Jenkins slave to become idle - name: initiate Foreman build - name: restart server - name: verify server is dead - name: wait for server to come back alive - name: launch Jenkins slave - name: put Jenkins slave online
  94. 94. - name: put Jenkins slave offline - name: wait for Jenkins slave to become idle - name: initiate Foreman build - name: restart server - name: verify server is dead - name: wait for server to come back alive - name: launch Jenkins slave - name: put Jenkins slave online
  95. 95. - name: put Jenkins slave offline - name: wait for Jenkins slave to become idle - name: initiate Foreman build - name: restart server - name: verify server is dead - name: wait for server to come back alive - name: launch Jenkins slave - name: put Jenkins slave online
  96. 96. - name: put Jenkins slave offline - name: wait for Jenkins slave to become idle - name: initiate Foreman build - name: restart server - name: verify server is dead - name: wait for server to come back alive - name: launch Jenkins slave - name: put Jenkins slave online
  97. 97. - name: put Jenkins slave offline - name: wait for Jenkins slave to become idle - name: initiate Foreman build - name: restart server - name: verify server is dead - name: wait for server to come back alive - name: launch Jenkins slave - name: put Jenkins slave online
  98. 98. - name: put Jenkins slave offline - name: wait for Jenkins slave to become idle - name: initiate Foreman build - name: restart server - name: verify server is dead - name: wait for server to come back alive - name: launch Jenkins slave - name: put Jenkins slave online
  99. 99. Rebuild Ruthlessly
  100. 100. Strained Group
  101. 101. Processes and Team Subverted
  102. 102. … and …
  103. 103. Preseed Problems
  104. 104. Approx Problems
  105. 105. Initial Puppet Run Problems
  106. 106. A few weeks ago...
  107. 107. I rebuilt my development environment today by myself without any problems!
  108. 108. I rebuilt my development environment today by myself without any problems!
  109. 109. I rebuilt my development environment today by myself without any problems!
  110. 110. Just yesterday...
  111. 111. No Jenkins user?
  112. 112. When I realized what was happening, I had a small heart attack
  113. 113. You may have saved a HUGE headache from happening tomorrow. Thanks!
  114. 114. Rebuild Ruthlessly
  115. 115. Puppet Regime
  116. 116. a system that is directed by an outside authority that leads to hardships on those governed
  117. 117. Process Subverted Low Involve StrainedGroup
  118. 118. Benevolent Puppet Regime
  119. 119. a system that is directed by an outside authority that leads to improved operations on those governed People Computers
  120. 120. H igh Involve
  121. 121. H igh Involve PerformantTeam
  122. 122. H igh Involve Rewarding Process PerformantTeam
  123. 123. Commit to Collaboration
  124. 124. Automate Authority
  125. 125. Rebuild Ruthlessly
  126. 126. @sethgoings seth.goings@readytalk.com

×