Transcript
Page 1: Growing Pains: Avoiding Module Hell

Growing Pains: Avoiding Module

Hell Chad Metcalf

@metcalfc

Saturday, August 24, 13

Page 2: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 3: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 4: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 5: Growing Pains: Avoiding Module Hell

As do many stories, it all begins with ...

Saturday, August 24, 13

Page 6: Growing Pains: Avoiding Module Hell

$ sudo

Saturday, August 24, 13

Page 7: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 8: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 9: Growing Pains: Avoiding Module Hell

sudo::conf { 'web': source => 'puppet:///files/etc/sudoers.d/web', } sudo::conf { 'admins': priority => 10, content => "%admins ALL=(ALL) NOPASSWD: ALL\n", } sudo::conf { 'joe': priority => 60, source => 'puppet:///files/etc/sudoers.d/users/joed', }

Saturday, August 24, 13

Page 10: Growing Pains: Avoiding Module Hell

sudo::rule { "extra_rule": ensure => present, who => 'bob', commands => "/usr/sbin/systemctl", nopass => false, comment => "what ever you like", }

Saturday, August 24, 13

Page 11: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 12: Growing Pains: Avoiding Module Hell

Infrastructure as Code

Module as an API

Source Code Management

Verification and Validation

Release Management

Saturday, August 24, 13

Page 13: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 14: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 15: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 16: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 17: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 18: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 19: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 20: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 21: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 22: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 23: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 24: Growing Pains: Avoiding Module Hell

semver.org

Saturday, August 24, 13

Page 25: Growing Pains: Avoiding Module Hell

MAJOR.MINOR.PATCH

Saturday, August 24, 13

Page 26: Growing Pains: Avoiding Module Hell

MAJOR version when you make incompatible API changes

1.x.x

Saturday, August 24, 13

Page 27: Growing Pains: Avoiding Module Hell

MINOR version when you add functionality in a backwards-compatible manner

x.0.x

Saturday, August 24, 13

Page 28: Growing Pains: Avoiding Module Hell

PATCH version when you make backwards-compatible bug fixes

x.x.0

Saturday, August 24, 13

Page 29: Growing Pains: Avoiding Module Hell

Its OK to go:

1.0.0

Saturday, August 24, 13

Page 30: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 31: Growing Pains: Avoiding Module Hell

Easy to learnEasy to useHard to misuseEasy to

Saturday, August 24, 13

Page 32: Growing Pains: Avoiding Module Hell

Gather requirementsUse casesDon’t over specifyPrivate as possible

Saturday, August 24, 13

Page 33: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 34: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 35: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 36: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 37: Growing Pains: Avoiding Module Hell

Nifty

Nifty::Firewall

Nifty::Monitoring

Nifty::Supervisor

iptables

Icinga

Monit

Firewall::Nifty

Monitoring::Nifty

Supervisor::Nifty

Saturday, August 24, 13

Page 38: Growing Pains: Avoiding Module Hell

Nifty

Nifty::Firewall

Nifty::Monitoring

Nifty::Supervisor

pf

Sensu

Supervisord

Firewall::Nifty

Monitoring::Nifty

Supervisor::Nifty

Saturday, August 24, 13

Page 39: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13

Page 40: Growing Pains: Avoiding Module Hell

Don’t Specify ALL THE THINGS!!!

Saturday, August 24, 13

Page 41: Growing Pains: Avoiding Module Hell

define apache::vhost ( $server_admin $server_name = '', $docroot = '', $docroot_create = false, $docroot_owner = 'root', $docroot_group = 'root', $port = '80', $ssl = false, $template = 'apache/virtualhost/vhost.conf.erb', $priority = '50', $serveraliases = '', $env_variables = '', $passenger = false, $passenger_high_performance = true, $passenger_max_pool_size = 12, $passenger_pool_idle_time = 1200, $passenger_max_requests = 0, $passenger_stat_throttle_rate = 30, $passenger_rack_auto_detect = true, $passenger_rails_auto_detect = false, $passenger_rails_env = '',23 $passenger_rails_base_uri = '',24 $passenger_rack_env = '',25 $passenger_rack_base_uri = '',26 $enable = true,27 $directory = '',28 $directory_options = '',29 $directory_allow_override = 'None'30 )

Saturday, August 24, 13

Page 42: Growing Pains: Avoiding Module Hell

<?xml version="1.0" encoding="UTF-8"?> 2 3 <!--Autogenerated by Cloudera CM on 2013-08-07T23:41:06.864Z--> 4 <configuration> 5 <property> 6 <name>mapred.job.tracker</name> 7 <value>xwing07.ul.wibidata.net:8021</value> 8 </property> 9 <property>10 <name>mapreduce.job.counters.max</name>11 <value>120</value>12 </property>13 <property>14 <name>mapred.output.compress</name>15 <value>false</value>16 </property>17 <property>18 <name>mapred.output.compression.type</name>19 <value>BLOCK</value>20 </property>21 <property>22 <name>mapred.output.compression.codec</name>23 <value>org.apache.hadoop.io.compress.DefaultCodec</value>24 </property> <property> <name>mapred.map.output.compression.codec</name> <value>org.apache.hadoop.io.compress.SnappyCodec</value> </property> <property> <name>mapred.compress.map.output</name> <value>true</value> </property> <property> <name>io.sort.factor</name> <value>64</value> </property> <property> <name>io.sort.record.percent</name> <value>0.05</value> </property> <property> <name>io.sort.spill.percent</name> <value>0.8</value> </property> <property> <name>mapred.reduce.parallel.copies</name>47 <value>10</value>48 </property>49 <property>50 <name>mapred.submit.replication</name>51 <value>2</value>52 </property>53 <property>54 <name>mapred.reduce.tasks</name>55 <value>24</value>56 </property>57 <property>58 <name>io.sort.mb</name>59 <value>233</value>60 </property>61 <property>62 <name>mapred.child.java.opts</name>63 <value> -Xmx978972870</value>64 </property>65 <property>66 <name>mapred.job.reuse.jvm.num.tasks</name>67 <value>1</value>68 </property>69 <property>70 <name>mapred.map.tasks.speculative.execution</name>71 <value>false</value>72 </property>73 <property>74 <name>mapred.reduce.tasks.speculative.execution</name>75 <value>false</value>76 </property>77 <property>78 <name>mapred.reduce.slowstart.completed.maps</name>79 <value>0.8</value>80 </property>81 </configuration>

Saturday, August 24, 13

Page 43: Growing Pains: Avoiding Module Hell

{ "foobar-cluster": { "mapred-options": [ { "name": "mapred.map.output.compression.codec", "value": "org.apache.hadoop.io.compress.SnappyCodec" }, { "name": "mapred.compress.map.output", "value": "true" }, { "name": "io.sort.factor", "value": "64" }, { "name": "io.sort.record.percent", "value": "0.05" }, { "name": "mapred.map.tasks.speculative.execution", { "name": "mapred.reduce.tasks.speculative.execution",54 "value": "false"55 },56 {57 "name": "mapred.reduce.slowstart.completed.maps",58 "value": "0.8"59 }60 ]61 }62 }

Saturday, August 24, 13

Page 44: Growing Pains: Avoiding Module Hell

Saturday, August 24, 13


Top Related