{"id":23551,"date":"2015-02-18T15:24:25","date_gmt":"2015-02-18T13:24:25","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=23551"},"modified":"2015-02-18T15:24:25","modified_gmt":"2015-02-18T13:24:25","slug":"puppet-beginners-guide-to-modules","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2015\/02\/18\/puppet-beginners-guide-to-modules\/","title":{"rendered":"Puppet : Beginner&#8217;s Guide to Modules"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>I&#8217;ve been using Puppet here and there for about a year now. \u00a0In the last six month, I went rather heavy, and managed to accumulate quite a bit of modules, configs, hosts, etc. \u00a0Refactoring some of the code, and trying out new ideas, I&#8217;m reading through the <a href=\"https:\/\/docs.puppetlabs.com\/guides\/module_guides\/bgtm.html\">Beginner&#8217;s Guide to Modules<\/a> to help me with the best practices. \u00a0A couple of bits from there, I think, are worth quoting:<\/p>\n<blockquote><p>(<em>Tip: If you describe the function of your module and you find yourself using the word \u2018and\u2019, it\u2019s time to split the module at the \u2018and\u2019<\/em>.)<\/p><\/blockquote>\n<p>This above is useful to people like me, who got comfortable throwing bits and pieces into modules, but don&#8217;t quite know yet where is that thin line for the module separation. \u00a0The above tip makes that crystal clear. \u00a0So, for example, &#8220;my module installs and configures something&#8221; no becomes two modules, where one &#8220;installs something&#8221; and another &#8220;configures something&#8221;.<\/p>\n<blockquote><p>It is standard practice for Puppet users to have upwards of 200 modules in their environment.<\/p><\/blockquote>\n<p>With this I know that my current setup is rather small and simplistic. \u00a0It&#8217;s not the numbers I am after, of course. \u00a0But, again, it&#8217;s difficult to say if I am doing too much of it, or not enough; if the system has been built to scale to the level where I am. \u00a0It turns out, \u00a0I have a long way to go. \u00a0A quick check shows that I&#8217;m at 127 modules in my current setup. \u00a0And that one is used for configuring pretty much everything &#8211; base installs, web \/ db \/ dev servers, desktops, etc.<\/p>\n<p>Some of it will get expanded as I am replacing quite a bit of my own modules with third-party ones. \u00a0Interestingly enough, I wasn&#8217;t comfortable using other people&#8217;s code in the beginning and wanted things to be precisely my way (there were some time constraints). \u00a0It worked well, for a time. \u00a0But not a lot of it can be thrown away and replaced with other people&#8217;s code. \u00a0More features and less maintenance for the win!<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>I&#8217;ve been using Puppet here and there for about a year now. \u00a0In the last six month, I went rather heavy, and managed to accumulate quite a bit of modules, configs, hosts, etc. \u00a0Refactoring some of the code, and trying out new ideas, I&#8217;m reading through the Beginner&#8217;s Guide to Modules to help me with &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2015\/02\/18\/puppet-beginners-guide-to-modules\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Puppet : Beginner&#8217;s Guide to Modules<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Puppet : Beginner's Guide to Modules #puppet #SysAdmin #hosting","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,6,133,62],"tags":[3218],"keyring_services":[],"class_list":["post-23551","post","type-post","status-publish","format-standard","hentry","category-general","category-linux","category-sysadmin","category-technology","tag-puppet"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":211,"url":"https:\/\/mamchenkov.net\/wordpress\/2003\/05\/05\/perl-bits\/","url_meta":{"origin":23551,"position":0},"title":"Perl bits","author":"Leonid Mamchenkov","date":"May 5, 2003","format":false,"excerpt":"Here is a nice article covering date\/time functionality in perl and CPAN modules. And here is also a link to Tie::Cycle module, which will help all those doing striped tables in HTML and any other \"flagged\" tricks. And to complete the whole perl thing, here is a nice article at\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9904,"url":"https:\/\/mamchenkov.net\/wordpress\/2006\/02\/10\/the-answer-to-why-not-python\/","url_meta":{"origin":23551,"position":1},"title":"The answer to &#8220;Why Not Python?&#8221;","author":"Leonid Mamchenkov","date":"February 10, 2006","format":false,"excerpt":"Collin Park has written an article in four parts (one, two, three, and four) titled \"Why Not Python?\". I've read through the first couple of parts and scrolled through the rest. In all that text that passed in front of my eyes I haven't found the answer to the question.\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26028,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/18\/working-with-encrypted-values-in-sugarcrm-6-5\/","url_meta":{"origin":23551,"position":2},"title":"Working with encrypted values in SugarCRM 6.5","author":"Leonid Mamchenkov","date":"April 18, 2016","format":false,"excerpt":"SugarCRM comes with a variety of modules that store values in the database. \u00a0Some of those values are encrypted. \u00a0For example, mailbox passwords for inbound and outbound email configurations. When you create this configurations through the web interface or the API, you don't need to worry about encryption, as SugarCRM\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11339,"url":"https:\/\/mamchenkov.net\/wordpress\/2008\/08\/19\/sugarcrm-deployment-efforts\/","url_meta":{"origin":23551,"position":3},"title":"SugarCRM deployment efforts","author":"Leonid Mamchenkov","date":"August 19, 2008","format":false,"excerpt":"Since we started working on SugarCRM in the office, one of the hardest tasks that we had was solving the deployment issue.\u00a0 On one hand, SugarCRM comes with some really nice GUI tools, such Studio and Module Builder.\u00a0 On the other hand, the system is large and complex and should\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28005,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/09\/13\/php-limit-on-maximum-form-fields\/","url_meta":{"origin":23551,"position":4},"title":"PHP limit on maximum form fields","author":"Leonid Mamchenkov","date":"September 13, 2017","format":false,"excerpt":"We had an interesting issue to debug at work today.\u00a0 One of the screens in our application features a form with a whole lot of checkboxes.\u00a0 It's in the access control module, where the administrator of the system can manage user permissions for each module of the system.\u00a0 Here's the\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/09\/checkboxes-500x282.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":125,"url":"https:\/\/mamchenkov.net\/wordpress\/2003\/01\/22\/ultrium\/","url_meta":{"origin":23551,"position":5},"title":"Ultrium","author":"Leonid Mamchenkov","date":"January 22, 2003","format":false,"excerpt":"Spent most of the day educating myself about Ultrium tape drive technology and HP solutions which utilize it. Looks pretty nice. Ultrium technology is defenetely something I want to get my hands on (and I probably will within the next month or two). No cleaning (generally, apart from special cases),\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/23551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=23551"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/23551\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=23551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=23551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=23551"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=23551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}