Refactoring Puppet 1

Size: px
Start display at page:

Download "Refactoring Puppet 1"

Transcription

1 Refactoring Puppet 1

2 HAS THIS HAPPENED TO YOU? 2

3 3

4 Rockin It! 3

5 4

6 5

7 WIDGET 3000! 5

8 WIDGET 3000! Amazing! 5

9 Features! WIDGET 3000! Amazing! 5

10 Features! WIDGET 3000! Amazing! Social! 5

11 Features! WIDGET 3000! Amazing! Scale! Social! 5

12 6

13 7

14 7

15 8

16 err: Could not apply complete catalog: Found 1 dependency cycle: (Exec[apt-update] => Package[lvm2] => Class[Lvm::Setup] => Stage[stage3] => Stage[main] => Class[Main] => Exec[apt-update]) 9

17 err: Could not apply complete catalog: Found 1 dependency cycle: (Exec[apt-update] => Package[lvm2] => Class[Lvm::Setup] => Stage[stage3] => Stage[main] => Class[Main] => Exec[apt-update]) 9

18 10

19 err: Could not apply complete catalog: Found 1 dependency cycle: (Exec[apt-update] => Package[lvm2] => Class[Lvm::Setup] => Stage[stage3] => Stage[main] => Class[Main] => Exec[apt-update]) 11

20 err: Could not apply complete catalog: Found 1 dependency cycle: (Exec[apt-update] => Package[lvm2] => Class[Lvm::Setup] => Stage[stage3] => Stage[main] => Class[Main] => Exec[apt-update]) 11

21 12

22 12

23 James 13

24 14

25 Why Refactor? 15

26 Why Fix your car? 16

27 Why Go To The Doctor? 17

28 Why Drink Beer!? 18

29 Why Refactor? 19

30 Why Refactor? 19

31 Improve Readability Why Refactor? 19

32 Improve Readability Why Reduce Bugs Refactor? 19

33 Improve Readability Why Reduce Bugs Refactor? Improve Velocity 19

34 Improve Readability Why Reduce Bugs Refactor? Improve Velocity 19

35 JUST DO IT 20

36 21

37 Code Reuse 21

38 Code Reuse Isolate Change 21

39 Iteration 22

40 23

41 SHIP IT 24

42 25

43 26

44 Abstract 26

45 Abstract Refactor as you go 26

46 Abstract Refactor as you go Refactor Refactors 26

47 27

48 Level 1: Hand Edited 28

49 Level 2: Central Location 29

50 Level 3: Configuration Management 30

51 Level 4: Templates 31

52 Level 5: Data Driven 32

53 Tools 33

54 rspecpuppet 34

55 @rodjek 35

56 I HATE I LOVE TESTS 36

57 $ puppet module \ generate jfryman-octokittens Generating module at.. jfryman-octokittens/spec/spec_helper.rb jfryman-octokittens/tests/init.pp 37

58 $ puppet module \ Tests Here generate jfryman-octokittens Generating module at.. jfryman-octokittens/spec/spec_helper.rb jfryman-octokittens/tests/init.pp 37

59 describe 'logrotate::rule' do let(:title) { 'nginx' } it { should include_class('logrotate::setup') } it do should contain_file('/etc/logrotate.d/ nginx').with({ 'ensure' => 'present', 'owner' => 'root', 'group' => 'root', 'mode' => '0444', }) end end 38

60 Write Negative Tests 39

61 describe 'logrotate::rule' do let(:title) { 'nginx' } let(:parameters) {{ :enabled => false }} it { should_not include_class('logrotate::setup') it do should contain_file('/etc/logrotate.d/ nginx').with({ 'ensure' => 'absent', }) end end 40

62 Test Flow Control 41

63 if $::datacenter =~ /ec2/ { $apt_repository = } else { $apt_repository = } file { /etc/apt/sources.list.d/100basho.list : content => deb $apt_repository $::lsbdistcodename main, } 42

64 internal_package_server = external_package_server = context 'on internal nodes' do it 'should contain basho package repo' do should contain_file('/etc/apt/sources.list.d/ 100basho.list').with_content(internal_package_server) end end context 'on external nodes' do it 'should contain basho package repo' do should contain_file('/etc/apt/sources.list.d/ 100basho.list').with_content(external_package_server) end end 43

65 vagrant 44

66 @mitchellh 45

67 46

68 46

69 Code Smells 47

70 DRY 48

71 Extract Move 49

72 java -jar simian jar \ -threshold=2 \ ~/puppet/**/*.erb \ ~/puppet/**/*.rb \ ~/puppet/**/*.pp Found duplicate lines in 7696 blocks in 1340 files 50

73 Common 51

74 Common 51

75 Common 51

76 Duplicated Logic Common 51

77 Duplicated Logic Duplicated Config Common 51

78 Duplicated Logic Duplicated Config Common Duplicated Tests 51

79 $monitor = $rails_env? { 'production' => true, 'staging' => true, default => false } # module/lib/facter/should_monitor.rb... case Facter.value( rails_env ) when production, staging true else false end... Extract52

80 # foo/manifests/init.pp class foo($ssl=true) { file { /etc/foo.conf : content => template( foo/foo.conf.erb ), monitor => should_monitor(), } } if should_monitor() { }... Extract53

81 # foo/manifests/init.pp class foo($ssl=true) { file { /etc/foo.conf : content => template( foo/foo.conf.erb ), monitor => should_monitor(), } } if should_monitor() {... } WAT?! THAT S READABLE Extract53

82 # foo/manifests/init.pp class foo($ssl=true) { file { /etc/foo.conf : content => template( foo/foo.conf.erb ), monitor => should_monitor(), } } if $rnx_prb_alpha() { }... Extract54

83 # foo/manifests/init.pp class foo($ssl=true) { file { /etc/foo.conf : content => template( foo/foo.conf.erb ), monitor => should_monitor(), } } if $rnx_prb_alpha() { }... Extract54

84 # foo/manifests/init.pp class foo($ssl=true) { file { /etc/foo.conf : content => template( foo/foo.conf.erb ), monitor => $::should_monitor, } } if $::should_monitor { }... 55

85 DRY Partials with Templates 56

86 # foo/manifests/init.pp class foo($ssl=true) { } file { /etc/foo.conf : } content => template( foo/foo.conf.erb ), # foo/templates/foo.conf.erb <% -%> <%= scope.function_template( foo/ssl.conf.erb ) %> <% end -%> 57

87 MVC Move58

88 Move59

89 class ntp ( $options = $ntp::params::defaults, ) inherits ntp::params { class { 'ntp::package': options => $options, } -> class { 'ntp::config': options => $options, } ~> class { 'ntp::service': options => $options, } -> Class[ ntp ] } Move60

90 class ntp::params { $defaults = { package => { version => latest, }, config => { servers => [ pool.ntp.org ], }, } } Move61

91 class ntp::params { $defaults = { package => { version => hiera( ntp_package_version ), }, config => { servers => hiera( ntp_servers ), }, } } Move62

92 Modularize 63

93 DRY Long Classes 64

94 require => Class[ ntp ] Extract require => File[ /etc/ntp.conf ] Move 65

95 err: Could not apply complete catalog: Found 1 dependency cycle: (Exec[apt-update] => Package[lvm2] => Class[Lvm::Setup] => Stage[stage3] => Stage[main] => Class[Main] => Exec[apt-update]) 66

96 err: Could not apply complete catalog: Found 1 dependency cycle: (Exec[apt-update] => Package[lvm2] => Class[Lvm::Setup] => Stage[stage3] => Stage[main] => Class[Main] => Exec[apt-update]) 66

97 Manifest Task Purpose 67

98 Organize By Function Extract Move 68

99 Organize By Function Extract Move 68

100 Organize By Function Extract Move 68

101 Share 69

102 exec { wget awesome file : command => wget -O /tmp/file.txt YHs6eg, creates => /tmp/file.txt, } Extract Move70

103 # modules/wget/manifests/download.pp define wget::download ( $source = undef, $dest = $name, ) } include wget exec { wget download ${name} : command => wget -O ${dest} ${source} creates => $dest, } Extract Move71

104 wget::download { /tmp/file.txt : source => } Extract Move72

105 Modularize Move73

106 74

107 75

108 frymanet.com nginx rails mysql common ruby admin package repos Move 76

109 Wrap Up 77

110 Why Refactor? 78

111 79

112 Improve Readability 79

113 Improve Readability Reduce Bugs 79

114 Improve Readability Reduce Bugs Improve Velocity 79

115 Improve Readability Reduce Bugs Improve Velocity 79

116 Level Up 80

117 @jfryman jamesfryman/freenode 81

118 fin 82

Configuration Management with Puppet. Introduction

Configuration Management with Puppet. Introduction Configuration Management with Puppet Introduction What is Puppet is a configuration management system is a programming language offers a Client/Server architecture has a huge community widely used in the

More information

Shawn Plummer - SUNY Geneseo. Puppet: Introduction, Implementation, & Refactoring

Shawn Plummer - SUNY Geneseo. Puppet: Introduction, Implementation, & Refactoring Shawn Plummer - SUNY Geneseo Puppet: Introduction, Implementation, & Refactoring Geneseo Located in the historic village of Geneseo in the upstate Finger Lakes region, the State University of New York

More information

James Turnbull

James Turnbull State of the Nation James Turnbull james@puppetlabs.com Where we were Puppet user mailing list membership was 3000 With about 600 messages a month The #puppet IRC channel averaged 400 people Puppet on

More information

PUPPET. Use at General Mills

PUPPET. Use at General Mills PUPPET Use at General Mills Preface HP UX platform at GMI is 15+ years old Consolidated Superdome architecture today Moving enterprise apps to RHEL6 Oracle SAP BW/BI Warehouse Management Short migration

More information

Testing your puppet code

Testing your puppet code Libre Software Meeting 2013 July 10, 2013 1 2 Style and linting Catalogs 3 4 Homework sysadmin @ inuits open-source defender for 7+ years devops believer @roidelapluie on twitter/github Infrastructure

More information

Orchestration via. Patrick Pierson, Systems Engineer -

Orchestration via. Patrick Pierson, Systems Engineer - Orchestration via Foreman Patrick Pierson, Systems Engineer - http://patrickpierson.us What is Configuration Management? Configuration Management (CM) is a systems engineering process for establishing

More information

PUPPET MODULES: A HOLISTIC APPROACH

PUPPET MODULES: A HOLISTIC APPROACH PUPPET MODULES: A HOLISTIC APPROACH PuppetCamp Geneva 2012 Alessandro Franceschi PUPPET @ LAB 42 2007 - Meet Puppet. Managed the Bank of Italy webfarm 2008 - First generation of Lab42 Puppet Modules 2009

More information

IT Automation with Puppet

IT Automation with Puppet IT Automation with Puppet Romain Tartière BSDCan 2018 University of Ottawa Ottawa, Canada June 9 th, 2018 Photo: Ollivier Robert Romain Tartière FreeBSD user since 2002 (I guess FreeBSD

More information

Motivations. Luigi De Russis. Why Ruby (on Rails)?

Motivations. Luigi De Russis. Why Ruby (on Rails)? Motivations Luigi De Russis 2 Disclaimer YES course-specific value open mind NO general value extremism 3 4 Course requirements Goal and context 5 Goal design and implement a Social Network site 6 credits

More information

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering Developing and Testing Java Microservices on Docker Todd Fasullo Dir. Engineering Agenda Who is Smartsheet + why we started using Docker Docker fundamentals Demo - creating a service Demo - building service

More information

We re all developers now

We re all developers now We re all developers now Adventures in Infrastructure as Code Julian Simpson, The Build Doctor Ltd Poll Poll Are you using Puppet or Chef? Poll Are you using Puppet or Chef? Do you hate Ruby on Rails Poll

More information

fpm-cookery Documentation

fpm-cookery Documentation fpm-cookery Documentation Release 0.33.0 Bernd Ahlers Jun 10, 2018 Contents 1 Features 3 2 Documentation Contents 5 2.1 Getting Started.............................................. 5 2.2 Using Hiera................................................

More information

Application Deployment. Softwaretechnik II 2012/13 Thomas Kowark

Application Deployment. Softwaretechnik II 2012/13 Thomas Kowark Application Deployment Softwaretechnik II 2012/13 Thomas Kowark Outline 2 Options for Application Hosting Automating Environment Setup Deployment Scripting Application Monitoring Continuous Deployment

More information

iflame INSTITUTE OF TECHNOLOGY

iflame INSTITUTE OF TECHNOLOGY Web Development Ruby On Rails Duration: 3.5 Month Course Overview Ruby On Rails 4.0 Training From Iflame Allows You To Build Full Featured, High Quality, Object Oriented Web Apps. Ruby On Rails Is A Full

More information

DevOps Course Content

DevOps Course Content DevOps Course Content 1. Introduction: Understanding Development Development SDLC using WaterFall & Agile Understanding Operations DevOps to the rescue What is DevOps DevOps SDLC Continuous Delivery model

More information

EXITING VACUUM INTEGRATING CONFIGURATION MANAGEMENT

EXITING VACUUM INTEGRATING CONFIGURATION MANAGEMENT EXITING VACUUM INTEGRATING CONFIGURATION MANAGEMENT Sascha Bates Opscode sascha bates blog.brattyredhead.com Twin Cities Infracoders Meetup @sascha_d The Ship Show Podcast credentials? In love with CM

More information

Fabric Management using Open Source Tools

Fabric Management using Open Source Tools Fabric Management using Open Source Tools Jason A. Smith RHIC & ATLAS Computing Facility Brookhaven National Lab What is it? Basic Components: Provisioning Cobbler/Koan Asset Management FusionInventory

More information

Being a puppet master

Being a puppet master Being a puppet master More money, more time, more happiness, less work Thomas Merkel http://www.flickr.com/photos/serenaseblu/5062987760/ Agenda Overview Organize the master Modules Resources

More information

matross Release SNAPSHOT

matross Release SNAPSHOT matross Release 0.1.0-SNAPSHOT June 01, 2014 Contents 1 Getting Started 3 1.1 What is matross?............................................. 3 1.2 Who is matross for?...........................................

More information

Red Hat Satellite 6.3

Red Hat Satellite 6.3 Red Hat Satellite 6.3 Puppet Guide A guide to building your own Puppet module and importing it into Satellite 6 Last Updated: 2018-06-15 Red Hat Satellite 6.3 Puppet Guide A guide to building your own

More information

Components of a Puppet architecture

Components of a Puppet architecture Components of a Puppet architecture This tutorial has been taken from the second edition of Extending Puppet. Until January 9th you can pick it up for just $5. In fact - you can pick up any ebook or video

More information

A power point by R Tyler Croy

A power point by R Tyler Croy A power point by R Tyler Croy Mr. Kanies 6 th Period GitHub Decentral High School 2014 http://tiny.cc/mrkaniesisthebest Who is Tyler! GitHub Decentral High Senior (GO CATS!) Member of the Ruby Pep Band

More information

Salt A Scalable Systems Management Solution for Datacenters

Salt A Scalable Systems Management Solution for Datacenters Salt A Scalable Systems Management Solution for Datacenters Open Source Data Center Conference April 26-28, 2016 Sebastian Meyer Linux Consultant & Trainer B1 Systems GmbH meyer@b1-systems.de B1 Systems

More information

Razor. Michal Bryxí Software Engineer Puppet Slides based on work from: David Lutterkort Principal Engineer Puppet

Razor. Michal Bryxí Software Engineer Puppet Slides based on work from: David Lutterkort Principal Engineer Puppet Razor Michal Bryxí Software Engineer Puppet Labs @MichalBryxi Slides based on work from: David Lutterkort Principal Engineer Puppet Labs @lutterkort Configuration management? Anyone? Razor in a nutshell

More information

Percona Live Europe Amsterdam, Netherlands October 3 5, 2016

Percona Live Europe Amsterdam, Netherlands October 3 5, 2016 Percona Live Europe 2016 Amsterdam, Netherlands October 3 5, 2016 Microservices, MySQL & Service Discovery Abbas Ahmed : Principal Database Engineer @ rentalcars.com Twitter: @solutionguy Who am I? Principal

More information

SCaLE Puppet Introduction. Puppet Assigns and Maintains a Machine s Desired Role

SCaLE Puppet Introduction. Puppet Assigns and Maintains a Machine s Desired Role SCaLE Puppet Introduction Puppet Assigns and Maintains a Machine s Desired Role Managing Configuration Drift 1 of 24 2/23/10 7:41 PM Puppet Executables that we will employ: ralsh The Resource Abstraction

More information

Unit Testing J2EE from JRuby. Evan Light

Unit Testing J2EE from JRuby. Evan Light Unit Testing J2EE from JRuby Evan Light http://evan.tiggerpalace.com Who I am Professional developer since 1996 Java since 1999 J2EE since 2000 Ruby since 2006 Some yutz with Keynote and a remote control

More information

An Introduction to Puppet Enterprise

An Introduction to Puppet Enterprise An Introduction to Puppet Enterprise Exercise & Lab Guide Puppet Education www.puppetlabs.com/education 2013 Puppet Labs 2013 Puppet Labs Lab 3.1: Pre-installation Objective: Assign a hostname to your

More information

Managed So*ware Installa1on with Munki

Managed So*ware Installa1on with Munki Managed So*ware Installa1on with Munki Jon Rhoades St Vincent s Ins1tute & University of Melbourne jrhoades@svi.edu.au Managed Installa1on Why? What are we using now? Needs Installs Updates Apple Updates

More information

CSE 70 Final Exam Fall 2009

CSE 70 Final Exam Fall 2009 Signature cs70f Name Student ID CSE 70 Final Exam Fall 2009 Page 1 (10 points) Page 2 (16 points) Page 3 (22 points) Page 4 (13 points) Page 5 (15 points) Page 6 (20 points) Page 7 (9 points) Page 8 (15

More information

Java Architectures A New Hope. Eberhard Wolff

Java Architectures A New Hope. Eberhard Wolff Java Architectures A New Hope Eberhard Wolff http://ewolff.com What happens with a talk titled like this? Architecture of Enterprise Java Apps How can I implement a new feature??? ! ECommerce System

More information

Puppet. Configuring your systems so you don't have to... Frank Sweetser Senior Network Engineer WPI Network Operations and Security

Puppet. Configuring your systems so you don't have to... Frank Sweetser Senior Network Engineer WPI Network Operations and Security Puppet Configuring your systems so you don't have to... Frank Sweetser Senior Network Engineer WPI Network Operations and Security Installation Typical System Lifecycle Typical System Lifecycle Installation

More information

VMware vfabric Application Director Catalog Services

VMware vfabric Application Director Catalog Services VMware vfabric Application Director Catalog Services vfabric Application Director 1.0 This document supports the version of each product listed and supports all subsequent versions until the document is

More information

Everything as a Cookbook. service-oriented thinking for your code

Everything as a Cookbook. service-oriented thinking for your code Everything as a Cookbook service-oriented thinking for your code Who is this guy? Tom Duffield Consulting Engineer with Chef tom@getchef.com @tomduffield tduffield tomduffield.com Good Practices Everyone

More information

the gamedesigninitiative at cornell university Lecture 12 Architecture Design

the gamedesigninitiative at cornell university Lecture 12 Architecture Design Lecture 12 Take Away for Today What should lead programmer do? How do CRC cards aid software design? What goes on each card? How do you lay m out? What properties should y have? How do activity diagrams

More information

INHERITANCE WITH JAVA INTERFACES

INHERITANCE WITH JAVA INTERFACES MODULE 6 INHERITANCE WITH JAVA INTERFACES Objectives > After completing this lesson, you should be able to do the following: Model business problems by using interfaces Define a Java interface Choose between

More information

RedChamps - Quality Magento Extensions ( redchamps.com )

RedChamps - Quality Magento Extensions ( redchamps.com ) Overview If you are a store owner and have some products which are going to be added to your store in few coming days then you are at the right place! We have developed this extension to set such products

More information

Automating MySQL operations with Puppet. Kris Buytaert &

Automating MySQL operations with Puppet. Kris Buytaert & Automating MySQL operations with Puppet Kris Buytaert & Julien Pivotto @krisbuytaert @roidelapluie Kris Buytaert I used to be a Dev, Then Became an Op Chief Trolling Officer and Open Source Consultant

More information

DevOps and Microservices. Cristian Klein

DevOps and Microservices. Cristian Klein DevOps and Microservices Cristian Klein Agenda Mo*va*on DevOps: Defini*on, Concepts Star as Code DevOps: Caveats Microservices 2017-05-11 DevOps and Microservices 2 Why DevOps from 50,000 feat 2017-05-11

More information

Ruby on Rails. SITC Workshop Series American University of Nigeria FALL 2017

Ruby on Rails. SITC Workshop Series American University of Nigeria FALL 2017 Ruby on Rails SITC Workshop Series American University of Nigeria FALL 2017 1 Evolution of Web Web 1.x Web 1.0: user interaction == server roundtrip Other than filling out form fields Every user interaction

More information

CHECKOUT CUSTOM FIELD FOR MAGENTO 2

CHECKOUT CUSTOM FIELD FOR MAGENTO 2 1 User Guide Checkout Custom Field for Magento 2 CHECKOUT CUSTOM FIELD FOR MAGENTO 2 USER GUIDE BSSCOMMERCE 1 2 User Guide Checkout Custom Field for Magento 2 Contents 1. Checkout Custom Field for Magento

More information

DEVOPS COURSE CONTENT

DEVOPS COURSE CONTENT LINUX Basics: Unix and linux difference Linux File system structure Basic linux/unix commands Changing file permissions and ownership Types of links soft and hard link Filter commands Simple filter and

More information

A guide to building your own Puppet module and importing it into Satellite 6 Edition 1

A guide to building your own Puppet module and importing it into Satellite 6 Edition 1 Red Hat Satellite 6.1 Puppet Guide A guide to building your own Puppet module and importing it into Satellite 6 Edition 1 Last Updated: 2018-01-29 Red Hat Satellite 6.1 Puppet Guide A guide to building

More information

Refactoring 101. By: Adam Culp

Refactoring 101. By: Adam Culp By: Adam Culp Twitter: @adamculp https://joind.in/14927 2 About me PHP 5.3 Certified Consultant at Zend Technologies Organizer SoFloPHP (South Florida) Organized SunshinePHP (Miami) Long distance (ultra)

More information

A guide to building your own Puppet module and importing it into Satellite 6 Edition 1. Red Hat Satellite Documentation Team

A guide to building your own Puppet module and importing it into Satellite 6 Edition 1. Red Hat Satellite Documentation Team Red Hat Satellite 6.1 Puppet Guide A guide to building your own Puppet module and importing it into Satellite 6 Edition 1 Red Hat Satellite Documentation Team Red Hat Satellite 6.1 Puppet Guide A guide

More information

Working with the Seagull Framework. By Demian Turner, Seagull Systems

Working with the Seagull Framework. By Demian Turner, Seagull Systems Working with the Seagull Framework By Demian Turner, Seagull Systems seagullproject.org Who is Demian Turner? Developing websites since 1996, using PHP since 1999 Committer on several open source projects:

More information

Red Hat Satellite 6.2

Red Hat Satellite 6.2 Red Hat Satellite 6.2 Puppet Guide A guide to building your own Puppet module and importing it into Satellite 6 Last Updated: 2018-03-08 Red Hat Satellite 6.2 Puppet Guide A guide to building your own

More information

dbdeployer the future of MySQL sandboxes Giuseppe Maxia Software explorer

dbdeployer the future of MySQL sandboxes Giuseppe Maxia Software explorer dbdeployer the future of MySQL sandboxes Giuseppe Maxia Software explorer About me Who's this guy? Giuseppe Maxia, a.k.a. "The Data Charmer" Software Explorer at VMware Several decades development and

More information

DevOps Technologies. for Deployment

DevOps Technologies. for Deployment DevOps Technologies for Deployment DevOps is the blending of tasks performed by a company's application development and systems operations teams. The term DevOps is being used in several ways. In its most

More information

<Insert Picture Here> Hudson Web Architecture. Winston Prakash. Click to edit Master subtitle style

<Insert Picture Here> Hudson Web Architecture. Winston Prakash. Click to edit Master subtitle style Hudson Web Architecture Click to edit Master subtitle style Winston Prakash Hudson Plugin Architecture Hudson is an extendable Web Application. The basic platform is extended via

More information

Less talk, more rock. Puppet

Less talk, more rock. Puppet Less talk, more rock Puppet ALM Connect 2013 deepak giridharagopal deepak@puppetlabs.com @grim_radical [github twitter freenode] Let s talk about... Immutability is great! Classes should be immutable

More information

Automation through Chef Opscode

Automation through Chef Opscode Automation through Chef Opscode A Hands-on Approach to Chef Navin Sabharwal Manak Wadhwa Apress" Contents J About the Authors About the Technical Reviewers Acknowledgments Introduction xv xvii xix xxi

More information

Magento Recycle Bin. Overview & User guide. Version 1.2. Copyright CRM4Ecommerce.COM

Magento Recycle Bin. Overview & User guide. Version 1.2. Copyright CRM4Ecommerce.COM Magento Recycle Bin Overview & User guide Copyright CRM4Ecommerce.COM Address: 25 Kham Duc - Cho Kham Thien street, Dong Da, Hanoi, Vietnam Phone: +84 914 646 840 Email: support@crm4ecommerce.com Version

More information

Docker & Chef. Containers. Containers and Docker 8/4/14. Linux containers (LXC) Single operating system Multiple isolated, working configurations

Docker & Chef. Containers. Containers and Docker 8/4/14. Linux containers (LXC) Single operating system Multiple isolated, working configurations Docker & Chef Containers Linux containers (LXC) Single operating system Multiple isolated, working configurations Containers and Docker Open-source engine for container management Docker registry for sharing

More information

ERICH PRIMEHAMMER REFACTORING

ERICH PRIMEHAMMER REFACTORING ERICH KADERKA @ PRIMEHAMMER REFACTORING WHAT IS REFACTORING? Martin Fowler: Refactoring is a controlled technique for improving the design of an existing code base. Its essence is applying a series of

More information

On a Ubuntu system which was updated today to facter (diretly via apt.puppetlabs.com) I also see exactly the same error.

On a Ubuntu system which was updated today to facter (diretly via apt.puppetlabs.com) I also see exactly the same error. Facter - Bug #17383 Could not retrieve local facts: undefined method `kernel_fact_value' for Facter::Util::Processor:Module 11/01/2012 11:31 pm - Anand Kumria Status: Re-opened Start date: Priority: Normal

More information

SDDC Certificate Tool User Guide

SDDC Certificate Tool User Guide SDDC Certificate Tool User Guide Table of Contents Summary... 3 System Requirements... 3 Instructions... 3 Installation... 3 Workflows... 4 Configuration File... 4 Sample JSON... 5 Configuration File Samples...

More information

BASIC CONCEPT OF OOP

BASIC CONCEPT OF OOP Chapter-6 BASIC CONCEPT OF OOP Introduction: Object oriented programmingg is the principle of design and development of programs using modular approach. Object oriented programmingg approach provides advantages

More information

Unit 6 - Software Design and Development LESSON 7 CODE STRUCTURES

Unit 6 - Software Design and Development LESSON 7 CODE STRUCTURES Unit 6 - Software Design and Development LESSON 7 CODE STRUCTURES Previously Key features of programming languages Software Development Lifecycle Design models Iterative Prototyping Agile ASD, FDD, DSDM,

More information

Chef. Saving Time (and Money) With Automated Provisioning Trotter Cashion Hoopla Software

Chef. Saving Time (and Money) With Automated Provisioning Trotter Cashion Hoopla Software Chef Saving Time (and Money) With Automated Provisioning Trotter Cashion Hoopla Software About Me @cashion http://github.com/trotter Where I've Been Eastmedia (2006) Motionbox (2006-2009) Algorithmics

More information

Intro to Netflix Chaos Monkey

Intro to Netflix Chaos Monkey Agenda Intros Name, Company, interest in cloud computing / security, how did you find out about this MeetUp Netflix Chaos Monkey Forming a CSA Chapter Next Meeting Intro to Netflix Chaos Monkey What is

More information

Keeping Rails on the Tracks

Keeping Rails on the Tracks Keeping Rails on the Tracks Mikel Lindsaar @raasdnil lindsaar.net Working in Rails & Ruby for 5+ Years http://lindsaar.net/ http://stillalive.com/ http://rubyx.com/ On the Rails? What do I mean by on the

More information

Puppet - Bug #11339 Class ordering bug?

Puppet - Bug #11339 Class ordering bug? Puppet - Bug #11339 Class ordering bug? 12/12/2011 08:56 am - Justin Honold Status: Closed Start date: 12/12/2011 Priority: Normal Due date: Assignee: % Done: 0% Category: language Estimated time: 0.00

More information

Argus Vulnerability Assessment *1

Argus Vulnerability Assessment *1 Argus Vulnerability Assessment *1 Manuel Brugnoli and Elisa Heymann Universitat Autònoma de Barcelona June, 2011 Introduction Argus is the glite Authorization Service. It is intended to provide consistent

More information

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through A few more things about Agile and SE Could help in interviews, but don t try to bluff your way through 1 Refactoring How to do it, where it fits in http://www.cse.ohio-state.edu/~crawfis/cse3902/index.htm

More information

Recursive inventory management

Recursive inventory management Recursive inventory management Martin F. Krafft madduck@debian.org 13 Aug 2013 @ DebConf 13, Vaumarcus, Switzerland Configuration management (system administration) Configuration management CFEngine bcfg2

More information

Principles of Computer Game Design and Implementation. Lecture 3

Principles of Computer Game Design and Implementation. Lecture 3 Principles of Computer Game Design and Implementation Lecture 3 We already knew Introduction to this module History of video High-level information for a game (such as Game platform, player motivation,

More information

Software Quality in a Modern Development Team. Presented by Timothy Bauguess and Marty Lewis

Software Quality in a Modern Development Team. Presented by Timothy Bauguess and Marty Lewis Software Quality in a Modern Development Team Presented by Timothy Bauguess and Marty Lewis High-Quality Software Who benefits? End users Development Stakeholders Components of Software Quality Structural

More information

Chef. cd ~/scripts && find. -type f -name "*.sh" -exec rm -rf {} \; Wednesday, November 21, 12

Chef. cd ~/scripts && find. -type f -name *.sh -exec rm -rf {} \; Wednesday, November 21, 12 Chef cd ~/scripts && find. -type f -name "*.sh" -exec rm -rf {} \; You ve got a cloud. Now what? Problems What lots of people do now Manual Often error prone Slow Time Consuming Process Heavy I know, I

More information

Sometimes Tools Matter. John E. Vincent DevOpsDays Goteborg 2011

Sometimes Tools Matter. John E. Vincent DevOpsDays Goteborg 2011 Sometimes Tools Matter John E. Vincent DevOpsDays Goteborg 2011 We all know about DevOps We all know about DevOps I R DEV! I R OPS! So what's the big deal? With XXXXX you are be able to do easily common

More information

FreeMarker in Spring Web. Marin Kalapać

FreeMarker in Spring Web. Marin Kalapać FreeMarker in Spring Web Marin Kalapać Agenda Spring MVC view resolving in general FreeMarker what is it and basics Configure Spring MVC to use Freemarker as view engine instead of jsp Commonly used components

More information

AUTOMATION AT THE NETWORK LAYER. Rick Shermdog Sherman and Scott Garman Puppet Labs

AUTOMATION AT THE NETWORK LAYER. Rick Shermdog Sherman and Scott Garman Puppet Labs AUTOMATION AT THE NETWORK LAYER Rick Shermdog Sherman and Scott Garman Puppet Labs Brief Intro to Puppet Puppet is a configuration management and application orchestration tool Automate IT deployments

More information

IP SLAs Multicast Support

IP SLAs Multicast Support This module describes how to configure and schedule an IP Service Level Agreements (SLAs) multicast UDP jitter operation for measuring and reporting statistics such as one way latency, jitter, and packet

More information

Boldface numbers indicate illustrations, code listings, and tables.

Boldface numbers indicate illustrations, code listings, and tables. Index Boldface numbers indicate illustrations, code listings, and tables. A ActiveRecord, class in Ruby, 80-82, 84, 86, 88, 90 ActiveXMLService, class in Ruby, 80-82, 84, 90 Agile development, 109-110

More information

About the Tutorial. Audience. Prerequisites. Disclaimer & Copyright. TurboGears

About the Tutorial. Audience. Prerequisites. Disclaimer & Copyright. TurboGears About the Tutorial TurboGears is a Python web application framework, which consists of many modules. It is designed around the MVC architecture that are similar to Ruby on Rails or Struts. TurboGears are

More information

Pipeline as Code for your IAC. Kris

Pipeline as Code for your IAC. Kris Pipeline as Code for your IAC Kris Buytaert @krisbuytaert Kris Buytaert I used to be a Dev, Then Became an Op Chief Trolling Officer and Open Source Consultant @inuits.eu Everything is an effing DNS Problem

More information

Designing with patterns - Refactoring. What is Refactoring?

Designing with patterns - Refactoring. What is Refactoring? Designing with patterns - Refactoring Bottom up based application of patterns Improving the design after it has been written What is Refactoring? Two definitions, the object and act of change in software

More information

Contents in Detail. Foreword by Xavier Noria

Contents in Detail. Foreword by Xavier Noria Contents in Detail Foreword by Xavier Noria Acknowledgments xv xvii Introduction xix Who This Book Is For................................................ xx Overview...xx Installation.... xxi Ruby, Rails,

More information

Can you upgrade to Puppet 4.x? PuppetCamp Düsseldorf Martin Alfke

Can you upgrade to Puppet 4.x? PuppetCamp Düsseldorf Martin Alfke Can you upgrade to Puppet 4.x? PuppetCamp Düsseldorf Martin Alfke About me Martin Alfke Berlin/Germany Freelancer / Trainer PuppetLabs Training Partner Puppet User Group Berlin

More information

PULLING STRINGS. Learn how to save time and streamline your system administration with the help of Puppet, a centralized

PULLING STRINGS. Learn how to save time and streamline your system administration with the help of Puppet, a centralized Manipulating your machines with PULLING STRINGS Learn how to save time and streamline your system administration with the help of, a centralized configuration management tool. BY JULIET KEMP is a centralized

More information

CPW AutoGrader. CSCI 370 Field Session 2016 June 20, Client: Christopher Painter Wakefield

CPW AutoGrader. CSCI 370 Field Session 2016 June 20, Client: Christopher Painter Wakefield CPW AutoGrader CSCI 370 Field Session 2016 June 20, 2016 Client: Christopher Painter Wakefield Authors: Michael Bartlett Harry Krantz Eric Olson Chris Rice Caleb Willkomm Table of Contents Introduction

More information

Test Driven Development. Software Engineering, DVGC18 Faculty of Economic Sciences, Communication and IT Tobias Pulls and Eivind Nordby

Test Driven Development. Software Engineering, DVGC18 Faculty of Economic Sciences, Communication and IT Tobias Pulls and Eivind Nordby Test Driven Development Faculty of Economic Sciences, Communication and IT 2010-09-03 Tobias Pulls and Principle Use Executable Specifications Test Driven Development (TDD) xunit Behaviour Driven Development

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Drupal

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Drupal About the Tutorial is a free and open source Content Management System (CMS) that allows organizing, managing and publishing your content. This reliable and secure CMS is built on PHP based environment

More information

Puppet at the center of everything.

Puppet at the center of everything. Puppet at the center of everything http://www.rankpop.com/you-need-to-start-structuring-your-blog-posts-asap/ serverdensity.com/knockknock Server Density Architecture 100+ servers Ubuntu 12.04 50% Virtual

More information

Web-Services in C++ Building fast, memory-efficient and maintainable web-services in C++ Maximilian Haupt MUC /06/30

Web-Services in C++ Building fast, memory-efficient and maintainable web-services in C++ Maximilian Haupt MUC /06/30 Web-Services in C++ Building fast, memory-efficient and maintainable web-services in C++ Maximilian Haupt MUC++ 2016/06/30 Background Professional C/C++ developer since 2006 VR, Real-Time Audio, Game-Engine,

More information

Widget Toolkits CS MVC

Widget Toolkits CS MVC Widget Toolkits 1 CS349 -- MVC Widget toolkits Also called widget libraries or GUI toolkits or GUI APIs Software bundled with a window manager, operating system, development language, hardware platform

More information

Open2Test Test Automation Framework for Selenium Web Driver FAQ

Open2Test Test Automation Framework for Selenium Web Driver FAQ Selenium Web Driver FAQ Version 3.1 March 2016 D I S C L A I M E R Verbatim copying and distribution of this entire article is permitted worldwide, without royalty, in any medium, provided this notice

More information

From Module To Objects

From Module To Objects From Module To Objects It is very difficult to maintain a large monolithic block of code The solution is to divide the code into smaller pieces, called modules What is a Module? A small and manageable

More information

Islandora and Fedora 4; The Atonement v3: The Atonermenter

Islandora and Fedora 4; The Atonement v3: The Atonermenter Islandora and Fedora 4; The Atonement v3: The Atonermenter Project history and background Fedora 4 Interest Group Thank you to our sponsors: Atonement One Repo to rule them all, One Repo to find them,

More information

RedChamps - Quality Magento Extensions ( redchamps.com )

RedChamps - Quality Magento Extensions ( redchamps.com ) Overview If you are a store owner and have some products which are going to be added to your store in few coming days then you are at the right place! We have developed this extension to set such products

More information

An Introduction to the Puppet Ecosystem

An Introduction to the Puppet Ecosystem An Introduction to the Puppet Ecosystem Trevor Vaughan - Onyx Point, Inc. License: Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) 0 Onyx Point, Inc. Puppet Labs and Red Hat Partner Government Contracting

More information

Strategies for Rapid Web Prototyping. Ruby on Rails. Clemens H. Cap

Strategies for Rapid Web Prototyping. Ruby on Rails. Clemens H. Cap Strategies for Rapid Web Prototyping Ruby on Rails Strategies for Rapid Web Prototyping DRY: Don't repeat yourself Convention over Configuration Separation of Concern Templating MVC: Model View Controler

More information

Software Development Project. Kazi Masudul Alam

Software Development Project. Kazi Masudul Alam Software Development Project Kazi Masudul Alam Course Objective Study Programming Best Practices Apply the knowledge to build a Small Software in Groups 7/10/2017 2 Programming Best Practices Code Formatting

More information

From Dev/Ops to devops

From Dev/Ops to devops From Dev/Ops to devops Kris Buytaert Patrick Debois Kris.Buytaert@inuits.be @krisbuytaert http://krisbuytaert.be/blog Patrick.Debois@jedi.be @patrickdebois http://jedi.be/blog There was this great IT

More information

UP! TO DOCKER PAAS. Ming

UP! TO DOCKER PAAS. Ming UP! TO DOCKER PAAS Ming Jin(mjin@thoughtworks.com) March 15, 2015 1 WHO AM I Ming Jin Head of Cloud Solutions of ThoughtWorks China Architect, Agile Consulting Solutions and Consulting on DevOps & Cloud

More information

nacelle Documentation

nacelle Documentation nacelle Documentation Release 0.4.1 Patrick Carey August 16, 2014 Contents 1 Standing on the shoulders of giants 3 2 Contents 5 2.1 Getting Started.............................................. 5 2.2

More information

Is OSGi Modularity Always Worth It? Glyn Normington

Is OSGi Modularity Always Worth It? Glyn Normington Is OSGi Modularity Always Worth It? Glyn Normington Agenda Costs and benefits Case studies When is OSGi worth it? OSGi Benefits Encapsulated module internals Easier to understand, maintain, and extend

More information

Microsoft. Recertification for MCSD: Application Lifecycle Management

Microsoft. Recertification for MCSD: Application Lifecycle Management Microsoft 70-499 Recertification for MCSD: Application Lifecycle Management Download Full Version : http://killexams.com/pass4sure/exam-detail/70-499 QUESTION: 82 Your team uses Microsoft Visual Studio

More information

An Empirical Study of Architectural Decay in Open-Source Software

An Empirical Study of Architectural Decay in Open-Source Software An Empirical Study of Architectural Decay in Open-Source Software Duc M. Le Annual Research Review 4/2017 Center for Systems and Software Engineering Motivation Explicitly manifest as Issues Problems Implicitly

More information

Category Dynamic Dependent Dropdown

Category Dynamic Dependent Dropdown User Guide Category Dynamic Dependent Dropdown Extension Version - 1.0.0 User Guide Version - 1.0.0 Magento Editions Compatibility Community - 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7, 2.0.8,

More information