Everything is a Freaking DNS problem - puppet en Lies, Damn Lies and Statistics, 2016 Edition <p>When people sign up for Configuration Management Camp, we ask them what community room they are mostly interested in.<br /> We ask this question because we have rooms in different sizes and we don't want to put communities with 20 people showing interest in a 120 seat room and we don't want to put a community with 200 people in a 60 seat room.</p> <p>But it also gives us to opportunity to build some very interesting graph over the potential evolution of the communities.</p> <p>So looking at the figures ... the overall community is obviously growing,From 350 to 420, to just short of 600 people registered now. </p> <p>The Puppet Community is not the biggest anymore, that spot went to the Ansible Community room. And all but the CFengine communities are growing.</p> <p><img src="http://www.krisbuytaert.be/images/RoomSizes2016.png" /></p> <p>One more thing , The organisation team discussed several times if we should rebrand the event. We opted not to .. Infracoders.eu could have been an alternative name .. but we decided to stick with the name that already is known,<br /> the content will evolve.. but Config Management Camp will stay the place where people that care about Infrastructure as Code and Infrastructure automation meet.</p> ansible cfengine cfgmgmtcamp chef communities juju puppet salt Wed, 23 Mar 2016 21:28:36 +0000 Kris Buytaert 1107 at 2014 vs 2015 interest in Open Source Configuration Management <p>A couple of people asked me to results of the survey of the 2015 vs 2014 Configuration Management Camp room interrests.</p> <p>This is a bunch of 350 last year and 420 people telling us what tools they are interested in so we can map the right roomsizes to the communities.</p> <p>2014 :</p> <p><img src="http://krisbuytaert.be/pics/2014.png" /></p> <p>2015:</p> <p><img src="http://krisbuytaert.be/pics/2015.png" /></p> <p>Enjoy.. but remember there's Lies, Damn Lies and Statistics ..<br /> PS. this is a mostly European Audience .</p> ansible chef foreman juju puppet saltstack Mon, 09 Feb 2015 20:05:31 +0000 Kris Buytaert 1101 at Jenkins, Puppet, Graphite, Logstash and YOU <p>This is a repost of an article I wrote for the Acquia Blog some time ago.</p> <p>As mentioned before, devops can be summarized by talking about culture, automation, monitoring metrics and sharing. Although devops is not about tooling, there are a number of open source tools out there that will be able to help you achieve your goals. Some of those tools will also enable better communication between your development and operations teams.</p> <p>When we talk about Continuous Integration and Continuous Deployment we need a number of tools to help us there. We need to be able to build reproducible artifacts which we can test. And we need a reproducible infrastructure which we can manage in a fast and sane way. To do that we need a Continuous Integration framework like Jenkins.</p> <p>Formerly known as Hudson, Jenkins has been around for a while. The open source project was initially very popular in the Java community but has now gained popularity in different environments. Jenkins allows you to create reproducible Build and Test scenarios and perform reporting on those. It will provide you with a uniform and managed way to , Build, Test, Release and Trigger the deployment of new Artifacts, both traditional software and infrastructure as code-based projects. Jenkins has a vibrant community that builds new plugins for the tool in different kinds of languages. People use it to build their deployment pipelines, automatically check out new versions of the source code, syntax test it and style test it. If needed, users can compile the software, triggering unit tests, uploading a tested artifact into a repository so it is ready to be deployed on a new platform level.</p> <p>Jenkins then can trigger an automated way to deploy the tested software on its new target platform. Whether that be development, testing, user acceptance or production is just a parameter. Deployment should not be something we try first in production, it should be done the same on all platforms. The deltas between these platforms should be managed using a configuration management tool such as Puppet, Chef or friends.</p> <p>In a way this means that Infrastructure as code is a testing dependency, as you also want to be able to deploy a platform to exactly the same state as it was before you ran your tests, so that you can compare the test results of your test runs and make sure they are correct. This means you need to be able to control the starting point of your test and tools like Puppet and Chef can help you here. Which tool you use is the least important part of the discussion, as the important part is that you adopt one of the tools and start treating your infrastructure the same way as you treat your code base: as a tested, stable, reproducible piece of software that you can deploy over and over in a predictable fashion.</p> <p>Configuration management tools such as Puppet, Chef, CFengine are just a part of the ecosystem and integration with Orchestration and monitoring tools is needed as you want feedback on how your platform is behaving after the changes have been introduced. Lots of people measure the impact of a new deploy, and then we obviously move to the M part of CAMS.</p> <p>There, Graphite is one of the most popular tools to store metrics. Plenty of other tools in the same area tried to go where Graphite is going , but both on flexibility, scalability and ease of use, not many tools allow developers and operations people to build dashboards for any metric they can think of in a matter of seconds.</p> <p>Just sending a keyword, a timestamp and a value to the Graphite platform provides you with a large choice of actions that can be done with that metric. You can graph it, transform it, or even set an alert on it. Graphite takes out the complexity of similar tools together with an easy to use API for developers so they can integrate their own self service metrics into dashboards to be used by everyone.</p> <p>One last tool that deserves our attention is Logstash. Initially just a tool to aggregate, index and search the log files of our platform, it is sometimes a huge missed source of relevant information about how our applications behave.. Logstash and it's Kibana+ElasticSearch ecosystem are now quickly evolving into a real time analytics platform. Implementing the Collect, Ship+Transform, Store and Display pattern we see emerge a lot in the #monitoringlove community. Logstash now allows us to turn boring old logfiles that people only started searching upon failure into valuable information that is being used by product owners and business manager to learn from on the behavior of their users.</p> <p>Together with the Graphite-based dashboards we mentioned above, these tools help people start sharing their information and communicate better. When thinking about these tools, think about what you are doing, what goals you are trying to reach and where you need to improve. Because after all, devops is not solving a technical problem, it's trying to solve a business problem and bringing better value to the end user at a more sustainable pace. And in that way the biggest tool we need to use is YOU, as the person who enables communication.</p> devops drupal graphite jenkins logstash puppet Wed, 04 Jun 2014 14:55:21 +0000 Kris Buytaert 1096 at Docker vs Reality , 0 - 1 <p>(aka the opinionated summary of the #devopsdays London November OpenSpace on , Containers and the new flood of Image Sprawl)</p> <p>There's a bunch of people out there that think I don't like docker, they are wrong.</p> <p>I just never understood the hype about it since I didn't see, (and still don't) see it being used at large and people seem to understand that as being against it.</p> <p>So let me put a couple of things straight :</p> <p>There's absolutely nothing wrong with using a <strong>container</strong> based approach when deploying your infrastructure. If you remember my talks about the rise of Open Source Virtualization some years ago you've noticed that I've always mentioned OpenVZ and friends as good alternatives if you wanted to have a lot of isolated platforms on one machine. LXC and friends have grown .. they are even more usable these days. Years ago people bought bare metal and ran Hypervisors on it to isolate resources. These days people rent VM's and also want the same functionality so the use of the combination of Virtualization and Container based technologies is a very good match there.</p> <p>There's also nothing wrong with using Infrastructure as Code tools to build an reproducable image you are going to deploy will provide you with a disposable image which allows you to quickly launch a reproducable and versionned platform for your application if that application is supposed to be shortlived. The tooling around today is not yet there to have these images long lived as you still need to manage the config inside the containers as your application will evolve, it will change, your environment will change (think even about changing to a different loghost..) , but when you don't have to keep state you can dispose the image and redeploy a new reproducable one.</p> <p>In the embedded world, this kind of approach with multiple banks has been a round for a while , one image running, a second bank as a fallback, and when you upgrade the passive bank you can swap the roles and still have roll back.</p> <p>There's is also nothing wrong on combining these to approaches and using tools such as Docker and Packer. </p> <p>But there is lot wrong with building images that then start living their own life, tools like Veewee etc saw the light to create an easy way to make sure the JeOS image (Just Enough Operating System) we created was reproducable, not to ship around virtual appliances. </p> <p>But, lets be realistic, the number of applications that are suitable for this kind of environment is small. Most applications these days are still very statefull, and when your application contains state you need to manage that<br /> that state, you can't just dispose an image which has state. Specially in an Enterprise environment stateless, immutable applications are really the exception rather than the rule.</p> <p>When your application maps with stateless and short lived, or a some people like to call it Immutable please do so.. but if it doesn't please remember that we started using configuration management tools like CFengine, Puppet and Chef to prevent Image Sprawl and Config Drift<br /> There's proprietary businesses out there building tools to detect config drift and extort organisations to solve problems that shouldn't have existed in the first place.</p> <p>Luckily the majority of smart people I've spoken to over the past couple of weeks pretty much confirmed this ...<br /> Like one of the larger devops minded appliation hosting outsourcers in emea, I asked them how much % of their customer base they could all "Immutable" , exactly 0% was the answer.</p> <p>Image Based Container solutions are definitely not a one size fits all solution, and we have along way to go before we get there if at all ..</p> <p>Till then I like not to diffuse my attention to too many different types of deploying platforms, just not to make stuff more complex than it already is...as complexity is the enemy of reliability</p> antipatterns newbies containers devops image sprawl images infrastructure as code jeos packer puppet puppetize virtualization Wed, 27 Nov 2013 21:36:07 +0000 Kris Buytaert 1090 at Why you shouldn't hire a devops <p>Lately there have been a lot of organisations trying to hire a devops engineer.<br /> I myselve have been asked to fill in devops roles .. </p> <p>There's a number of issues with that.</p> <p>The biggest problem is that I always have to ask what exactly the organisation is looking for.</p> <p>So you want a devops engineer with experience in Linux, MongoDB, MySQL and Java , does that mean you want a Java developer who is familiar with MySQL and Linux and breaths a devops Culture.<br /> Or a Linux expert who understands Java developers and knows how to tune Mongo and MySQL ?</p> <p>It's absolutely unclear what you want when you are hiring "A devops engineer"</p> <p>The second problem is that you are trying to hire people who are knowledgeable about devops, </p> <p>Yet a lot of those people know that you can't do devops on your own , devops is not a jobtitle. devops is not a new devops team you create. </p> <p>To some of them you are even making a fool out of yourselve, as to them you show that you don't understand devops</p> <p>On top .. the ones that do apply for this fancy new devops role, are the ones that might not get the fact that the problem isn't about tooling but about people working together and helping eachother , so you end up hiring the wrong people.</p> <p>Even in todays devops culture a system engineer is still a system engineer, and a developer is still a developer.<br /> You might have developers supporting the build tool chain, or system engineers focussing on infrastructure automation.</p> <p>But as John said almost 3 years ago <a href="http://www.krisbuytaert.be/blog/apparently-devops-not-jobtitle#comment-3992">they are good at their job.</a></p> <p>Devops is not a word you slap onto a tool, a team or a person and expect magic to happen </p> <p>Let's face it .. devops is hard, you can't do this on your own .. you need to find the right people ..</p> devops infracoders puppet puppetize Wed, 22 May 2013 21:11:15 +0000 Kris Buytaert 1081 at Initial loadays speakers announced <p>Loadays is coming up soon .. 6 and 7 april ..<br /> Loadays is the Linux and Open Administration conference of the low lands , held in Antwerp, Belgium </p> <p>We've just published <a href="http://loadays.org/pages/talks.html" rel="nofollow">the initial</a> batch of speakers </p> <ul> <li><strong>Being a Sysadmin at a company full of Sysadmins</strong> (Cody Herriges) </li> <li><strong>OpenNebula Fundamentals</strong> (Jaime Melis)</li> <li><strong>Integrate UEFI into REAR</strong> (Gratien D'haese)</li> <li><strong>Puppet v3 and Hiera</strong> (Garrett Honeycutt)</li> <li><strong>Integrating Linux into an Active Directory domain</strong> (Gábor Nyers)</li> <li><strong>Normalised instance provisioning for dev, on-premise and public clouds</strong> (Karanbir Singh)</li> <li><strong>C.R.E.A.M : Cache Rules Everything Around Me</strong> (Thijs Feryn)</li> <li><strong>OpenLDAP's Lightning Memory-Mapped DB</strong> (Howard Chu)</li> <li><strong>What's new in syslog-ng</strong> (Peter Czanik)</li> <li><strong>Introduction to Ansible</strong> (Jan Piet Mens)</li> <li><strong>Network Block Device: network-based block storage for Linux systems</strong> (Wouter Verhelst)</li> </ul> <p>Tutorials</p> <ul> <li><strong>Building your Enterprise Cloud with OpenNebula</strong> (Jaime Melis)</li> <li><strong>Puppet tutorial</strong> (Garrett Honeycutt)</li> <li><strong>Automated Everything - Setting up an openQRM Cloud</strong> (Matthias Rechenburg)</li> <li><strong>Tutorial about provisioning and management using Ansible</strong> (Dag Wieers - Jeroen Hoekx)</li> </ul> <p>There's more to come !</p> devops loadays puppet Tue, 19 Mar 2013 12:28:21 +0000 Kris Buytaert 1078 at Love, MonitoringLove <p>Last year we were pretty negative about Monitoring, We shouted out that MonitoringSucked ... A year has passed and a lot has changed ... most importantly our new found love for monitoring, thanks to an inspirational Ignite talk by <a href="https://twitter.com/ulfmansson" rel="nofollow">Ulf Mansson</a> at devopsdays Rome.</p> <p>Right after Fosdem about 20 people showed up at the #monitoringlove hacksessions hosted at the <a href="http://www.inuits.eu/" rel="nofollow">Inuits.eu</a> offices to work on Open Source monitoring projects and exchange ideas. Some completely new people, some people with already a lot of experience.</p> <p>Amongst the projects that were worked on was Maciej working on Packaging graphite for Debian, Ohter people were fixing bugs in Puppet , I spent some time with a <a href="https://github.com/krisbuytaert/vagrant-sensu" rel="nofollow">vagrant box</a> to deploy Sensu using Puppet. Last time I was playing with Sensu was on the flight back from PuppetCon , I gave up the fight with<br /> RabbitMQ and SSL because I had no internet connection .. and now Ulf just pointed out that I could disable SSL at all, which resulted in having a POC up and running in no time.</p> <p>Patrick was hacking on the Chef counterpart of the vagrant-puppet sensu setup a part of <a href="https://github.com/monigusto" rel="nofollow">#monigusto</a>. Ulf Mansson was getting <a href="http://shopify.github.com/dashing/" rel="nofollow">dashing</a> to display on a Raspberry Pi ... pretty cool stuff<br /> And Jelle Smet was working on <a href="https://github.com/smetj/pyseps" rel="nofollow">Pyseps</a> a Python based Simple Event Processing Server framework that consume JSON docs from RabbitMQ and forwards them real time to other queues using MongoDB query syntax.</p> <p>One of the more interesting discussion was around the topic of alerting and modeling business rules and input from a lot of different sources<br /> in order to send the right alerts to the right people. </p> <p>We explored different ideas like using BPM tools such as Activity or Rules engines like Ruby Rools. There exist some Saas providers that try to solve this need like PagerDuty and friends but obviously there is still a lot of work that needs to be done in order to create a viable alerting system based on different input sources.</p> <p>The monitoring problem is not solved yet .. and it will stay around for a couple of years .. but with the advent of event such as <a href="http://monitorama.com/" rel="nofollow">Monitorama</a> its clear<br /> that an event like our #monitoring love hackessions is needed .. and is probably here to stay for a couple of years.</p> devops infracoders monitoringlove monitoringsucks puppet sensu Wed, 13 Feb 2013 17:10:32 +0000 Kris Buytaert 1077 at check_graphite <p>During my Puppetcamp Gent talk last week, I explained how to get alerts based on trends from graphite. A number of people asked ,e how to do that.</p> <p>First lets quickly explain why you might want to do that .<br /> Sometimes you don't care about the current value of a metric..as an example take a Queing system .. there is no problem if there are messages added to the queue, not even if there are a lot of messages on the queue, there might however be a problem if over a certain period the number of messages on a queue stays to high.</p> <p>In this example I`m monitoring the queue length of a hornetq setup which is exposed by JMX.<br /> On the server runnnig HornetQ I have an exported resource that tells the JMXTrans server to send the MessageCount to graphite<br /> (you could also do this using collectd plugins) </p> <p><div class="geshifilter"><pre class="text geshifilter-text" style="font-family:monospace;"><ol><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal">@@jmxtrans::graphite {&quot;MessageCountMonitor-${::fqdn}&quot;:</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal"> jmxhost =&gt; hiera('hornetqserver'),</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal"> jmxport =&gt; &quot;5446&quot;,</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal"> objtype =&gt; 'org.hornetq:type=Queue,*',</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal"> attributes =&gt; '&quot;MessageCount&quot;,&quot;MessagesAdded&quot;,&quot;ConsrCount&quot;',</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal"> resultalias =&gt; &quot;hornetq&quot;,</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal"> typenames =&gt; &quot;name&quot;,</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal"> graphitehost =&gt; hiera('graphite'),</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal"> graphiteport =&gt; &quot;2003&quot;,</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal">}</div></li></ol></pre></div></p> <p>This gives me a computable url on which I can get the graphite view </p> <p>The next step then is to configure a nagios check that verifies this data. For that I need to use the <a href="http://github.com/datacratic/check_graphite" rel="nofollow">check_graphite</a> plugin from Datacratic ..</p> <p>Which can work with an nrpe config like<br /> <div class="geshifilter"><pre class="text geshifilter-text" style="font-family:monospace;"><ol><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal">### File managed with puppet ###</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal">### Served by: '&lt;%= scope.lookupvar('::servername') %&gt;'</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal">### Module: '&lt;%= scope.to_hash['module_name'] %&gt;'</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal">### Template source: '&lt;%= template_source %&gt;'</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal">&nbsp;</div></li><li style="font-family: monospace; font-weight: normal;"><div style="font-family: monospace; font-weight: normal; font-style: normal">command[check_hornetq]=/usr/lib64/nagios/plugins/check_graphite -u &quot;http://&lt;%= graphitehost%&gt;/render?target=servers.&lt;%= scope.lookupvar('::fqdn').gsub(/\./,'_')%&gt;_5446.hornetq.docstore_private_trigger_notification.MessageCount&amp;from=-30minutes&amp;rawData=true&quot; -w 2000 -c 20000</div></li></ol></pre></div></p> <p>I define this check on the host where HornetQ is running as it then will map to that host on Icinga/Nagios rather than throw a host error on an unrelated host.</p> graphite icinga monitoringlove monitoringsucks puppet Tue, 05 Feb 2013 09:10:15 +0000 Kris Buytaert 1076 at #devops Conference Season heating up... <p>My last post has been a while ... in that I announced that there would be another event right before FOSDEM ... I totally forgot to announce it here but I`m sure that most of you already know. Yes. PuppetCamp Europe is coming back to it's roots... it's coming back to the city where we hosted it for the first time on this side of the ocean.. Gent. (that's 31/1 and 1/2 ) </p> <p>There is still time to register for the event <a href="http://puppetcampghent2013.eventbrite.com/" rel="nofollow">http://puppetcampghent2013.eventbrite.com/</a> The schedule for the event will be published soonish (given that the selection was done on Friday evening and the speakers already received their feedback)</p> <p>Co-located with PuppetCamp there will another Build and Open Source cloud day<br /> <a href="http://buildacloud.org/about-cloudstack/cloudstack-events/viewevent/140-build-a-cloud-day-ghent-2013.html" rel="nofollow">Build a Cloud day</a> with interesting topics such as Cloudstack, Ceph, devops and a really interesting talk on how the Spotify crowd is using Cloudstack.</p> <p>So after those 2 days in Ghent, a lot of people will be warmed up for the open source event of the year FOSDEM.</p> <p>And right after FOSDEM a bunch of people will gather at the Inuits office for 2 days of discussing, hacking and evangelizing around #monitoringlove (see previous post)</p> <p>I almost forgot but even before the FOSDEM week-long there is the <a href="http://conference.phpbenelux.eu/2013/" rel="nofollow">2013 PHP Benelux Conference</a> where I`ll be running a fresh version of the 7 Tools for your devops stack </p> <p>There is a ****load of #DevopsDays events being planned this year .... the 2012 edition of New York will be taking place next week .<br /> Austin and London have been announced and have opened up their CFP and Registration but different groups are organizing themselves to host events in Berlin, Mountain View, Tokyo, Barcelona, Paris, Amsterdam , Australia , Atlanta and many more .. </p> <p>And there's even more to come .. April 6 and 7 will be the dates for the <a href="http://loadays.org/" rel="nofollow">Linux Open Administration Days</a> (Loadays 2013) in Antwerp again ... a nice small conference where people gather to discuss different interesting Linux topics .... Call For Presentations is still open ..<a href="http://loadays.org/pages/cfp-info.html" rel="nofollow">Submit here</a></p> <p>On the other side of the ocean there's <a href="http://portland2013.drupal.org/" rel="nofollow">DrupalCon Portland</a> which once again is featuring a #devops track , and also the folks over at <a href="http://agile2013.agilealliance.org/" rel="nofollow">Agile 2013</a> (Nashville)<br /> have a #devops track now. Both events are still looking for speakers .. </p> <p>So if by the end of this year you still don't know what devops is all about .. you probably don't care and shouldn't be in the IT industry anyhow.</p> <p>And those are only the events I`m somehow involved in for the next couple of months</p> agile devops devopsdays drupal fosdem monitoringlove phpbenelux puppet puppetcamp puppetzie Sun, 13 Jan 2013 10:21:11 +0000 Kris Buytaert 1075 at Linuxcon Europe, Barcelona <p>I`m in Barcelona this week for LinuxCon Europe ..<br /> I`ll be hosting 3 sessions this week.</p> <p>Today I`ll be helping <a href="https://twitter.com/sebgoa" rel="nofollow">Sebastien Goasguen</a> with his session <a href="http://linuxconeurope2012.sched.org/event/8816c31538f6278779459b3337a45559#.UJi--tHtBrc" rel="nofollow">Building Foss Clouds</a>, I`ll be talking about how to use tools such as Puppet, Graphite and Icinga to monitor your clouds. Sebastian inherited the Building FOSS Clouds tutorial last week and asked me to help out. </p> <p>Tomorrow I`ll be giving my <a href="//linuxconeurope2012.sched.org/event/cd9a06295026ac8d17fb51cc26ff2ff2#.UJjD2NHtBrc" rel="nofollow">11 Open Source Tools for your Devops Stack </a> talking.</p> <p>And on thursday I will be giving a more general "What's this #devops thing anyhow" talk during the <a href="http://cloudstack-linuxconeu.eventbrite.com/" rel="nofollow">Cloudstack</a> event following LinuxCon.</p> devops linuxcon monitoringlove puppet Tue, 06 Nov 2012 08:12:51 +0000 Kris Buytaert 1073 at