{"id":25985,"date":"2016-04-01T00:45:35","date_gmt":"2016-03-31T22:45:35","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=25985"},"modified":"2016-04-01T00:45:35","modified_gmt":"2016-03-31T22:45:35","slug":"checking-out-ansible-sorry-puppet","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/","title":{"rendered":"Checking out Ansible. Sorry Puppet"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>It&#8217;s Thursday evening of a particularly difficult week at work. \u00a0Tomorrow is a public holiday, effectively making this\u00a0&#8211; a Friday. \u00a0My brain is blank and exhausted, so I can&#8217;t do anything productive. \u00a0And I&#8217;m too tired to go out. \u00a0But I can still learn a thing or two.<\/p>\n<p>First things first &#8211; cancel the external noise. \u00a0I want something loud, but not too intensive, and with no words in it. \u00a0So this <a href=\"https:\/\/www.youtube.com\/watch?v=etYmsaM9_2c\">2 hour blues instrumental collection<\/a> comes in handy. \u00a0Start the playback, put the headphones on, and push the volume up.<\/p>\n<p>Now. \u00a0Here&#8217;s something I wanted to look into for quite some time &#8211; <a href=\"https:\/\/www.ansible.com\/\">Ansible<\/a> configuration manager.<\/p>\n<p><!--more--><\/p>\n<p>I&#8217;ve been using <a href=\"https:\/\/puppetlabs.com\/\">Puppet<\/a>, an alternative configuration manager, for <a href=\"https:\/\/mamchenkov.net\/wordpress\/2015\/02\/18\/puppet-beginners-guide-to-modules\/\">a few years now<\/a>. \u00a0It&#8217;s a great tool and I&#8217;m a big fan of it. \u00a0It literally saved me hundreds of hours. If not thousands. \u00a0And my sanity.<\/p>\n<p>I&#8217;ve deployed Puppet to multiple environments, managing dozens of servers, and even a few desktops. \u00a0I&#8217;ve used community modules and built my own. \u00a0I&#8217;ve ran it on machines big and small, old and new. \u00a0And I still love it.<\/p>\n<p>But my requirements have gradually changed. \u00a0Or maybe I&#8217;ve just learned more about configuration management, web hosting, and cloud computing. \u00a0 Puppet still works well for me, but I keep getting this feeling that there is a better, simpler way of doing things that I need doing.<\/p>\n<p>I&#8217;ve read about Ansible since a while back. \u00a0Then I&#8217;ve attended <a href=\"https:\/\/phpconference.com\/2014se\/en\/sessions\/continuous-deployment-ansible.html\">the session<\/a>\u00a0about it during the <a href=\"https:\/\/mamchenkov.net\/wordpress\/2014\/06\/08\/international-php-conference-2014-berlin-germany\/\">International PHP Conference 2014<\/a>, back in Berlin, Germany. \u00a0It was insightful, but not more than that. \u00a0Last year, my Linux distribution vendor of choice &#8211; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2015\/10\/19\/red-hat-acquires-ansible\/\">Red Hat acquired Ansible<\/a>. \u00a0Which obviously spiked my interest &#8211; it&#8217;s only logical to expect Fedora, CentOS and Red Hat distributions\u00a0to do more with it and to push it forward. \u00a0But I didn&#8217;t have time to look at it. \u00a0And today I do.<\/p>\n<p>I&#8217;ve read through the <a href=\"http:\/\/docs.ansible.com\/ansible\/index.html\">Ansible Documentation<\/a> first. \u00a0It is quite an easy read &#8211; short enough, but not to condensed, with lots of examples, covering all the important bits. \u00a0I got immediately hooked. \u00a0Here are a few things that appealed to me.<\/p>\n<ul>\n<li><strong>YAML<\/strong>. \u00a0Admittedly, I&#8217;m not the biggest fan of YAML, but the simplicity and readability of it is a definite advantage over Puppet language (subset of Ruby in a way). \u00a0YAML is also easy to generate programmatically. \u00a0Puppet can offload parts of the configuration into the YAML too (using <a href=\"https:\/\/docs.puppetlabs.com\/hiera\/3.1\/configuring.html\">Hiera<\/a>), but it&#8217;s not the same.<\/li>\n<li><strong>Push instead of pull<\/strong>. \u00a0Originally, Puppet was supposed to be setup with the puppet master server and puppet agents running on individual hosts. \u00a0But this approach seems to be too complex or fragile to support, so many people prefer master-less setups now. \u00a0I&#8217;ve been using master-less Puppet setups in almost all of my environments and it runs well. \u00a0A separate git repository is usually used for each network, containing all the configurations for the servers. \u00a0But this now becomes complicated as well, both at server provisioning stage and during the lifetime of the environment, especially where flexible access control is needed (hosting of clients&#8217; environments with limited access for staff on both ends). \u00a0Ansible however uses push approach, which suits me way better &#8211; most of my environments have bastion hosts, which would be ideal for Ansible.<\/li>\n<li><strong>SSH as a transport<\/strong>. \u00a0Again, this suits my bastion-based environments nicely.<\/li>\n<li>Possibility to use Ansible for <strong>project deployments<\/strong>, not only server configurations. \u00a0Puppet can be used for project deployments as well, but it&#8217;s much more complicated of a tool for things that we are doing.<\/li>\n<li><strong>Sequential task execution<\/strong>. \u00a0This seems super handy. \u00a0It takes time to get used to Puppet&#8217;s unpredictable order of tasks executions. \u00a0Sometimes it works well. Sometimes it causes issues and hair pulling out. \u00a0Sequential tasks just feel more natural.<\/li>\n<\/ul>\n<p>When I finished with the Ansible Documentation, I decided to look around and see what other people are saying about Ansible, especially in comparison of it to Puppet. \u00a0Here are a few posts worth reading:<\/p>\n<ul>\n<li>Ansible vs Puppet by <a href=\"https:\/\/dantehranian.wordpress.com\/\">Dan Tehranian<\/a>: <a href=\"https:\/\/dantehranian.wordpress.com\/2015\/01\/20\/ansible-vs-puppet-overview\/\">An Overview of the Solutions<\/a> (part 1) and <a href=\"https:\/\/dantehranian.wordpress.com\/2015\/01\/20\/ansible-vs-puppet-hands-on-with-ansible\/\">Hands-On with Ansible<\/a> (part 2).<\/li>\n<li><a href=\"http:\/\/ryandlane.com\/blog\/2014\/08\/04\/moving-away-from-puppet-saltstack-or-ansible\/\">Moving away from Puppet: SaltStack or Ansible?<\/a> by <a href=\"http:\/\/ryandlane.com\/blog\/\">Ryan Lane<\/a>.<\/li>\n<li><a href=\"https:\/\/blog.serverdensity.com\/what-ive-learnt-from-using-ansible-exclusively-for-2-years\/\">Lessons from using Ansible exclusively for 2 years<\/a> by <a href=\"https:\/\/www.raunco.co\/\">Corban Raun<\/a>.<\/li>\n<\/ul>\n<p>After reading all of that, it sounds like Ansible is a better match for what I need than Puppet. \u00a0It&#8217;s too late and I&#8217;m too tired to try it today, but I will definitely be getting my feet wet in Ansible waters in the next few days. \u00a0 As always, sandbox\/playground repositories and my dotfiles will come first&#8230;<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>It&#8217;s Thursday evening of a particularly difficult week at work. \u00a0Tomorrow is a public holiday, effectively making this\u00a0&#8211; a Friday. \u00a0My brain is blank and exhausted, so I can&#8217;t do anything productive. \u00a0And I&#8217;m too tired to go out. \u00a0But I can still learn a thing or two. First things first &#8211; cancel the external &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Checking out Ansible. Sorry Puppet<\/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_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Checking out Ansible. Sorry Puppet #SysAdmin #puppet #ansible #hosting #Linux","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},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,6,18,133,62,1334],"tags":[3383,3195,3218,2289],"keyring_services":[],"class_list":["post-25985","post","type-post","status-publish","format-standard","hentry","category-general","category-linux","category-programming","category-sysadmin","category-technology","category-web-work","tag-ansible","tag-configuration-management","tag-puppet","tag-web-hosting"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"It&#039;s Thursday evening of a particularly difficult week at work. Tomorrow is a public holiday, effectively making this - a Friday. My brain is blank and exhausted, so I can&#039;t do anything productive. And I&#039;m too tired to go out. But I can still learn a thing or two. First things first - cancel the external\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Checking out Ansible. Sorry Puppet - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"It&#039;s Thursday evening of a particularly difficult week at work. Tomorrow is a public holiday, effectively making this - a Friday. My brain is blank and exhausted, so I can&#039;t do anything productive. And I&#039;m too tired to go out. But I can still learn a thing or two. First things first - cancel the external\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-03-31T22:45:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-03-31T22:45:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Checking out Ansible. Sorry Puppet - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"It&#039;s Thursday evening of a particularly difficult week at work. Tomorrow is a public holiday, effectively making this - a Friday. My brain is blank and exhausted, so I can&#039;t do anything productive. And I&#039;m too tired to go out. But I can still learn a thing or two. First things first - cancel the external\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#blogposting\",\"name\":\"Checking out Ansible. Sorry Puppet - Leonid Mamchenkov\",\"headline\":\"Checking out Ansible. Sorry Puppet\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"},\"datePublished\":\"2016-04-01T00:45:35+02:00\",\"dateModified\":\"2016-04-01T00:45:35+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":3,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#webpage\"},\"articleSection\":\"All, Linux, Programming, Sysadmin, Technology, Web work, Ansible, configuration management, Puppet, web hosting\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/linux\\\/#listItem\",\"name\":\"Linux\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/linux\\\/#listItem\",\"position\":3,\"name\":\"Linux\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/linux\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#listItem\",\"name\":\"Checking out Ansible. Sorry Puppet\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#listItem\",\"position\":4,\"name\":\"Checking out Ansible. Sorry Puppet\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/linux\\\/#listItem\",\"name\":\"Linux\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/\",\"name\":\"Checking out Ansible. Sorry Puppet - Leonid Mamchenkov\",\"description\":\"It's Thursday evening of a particularly difficult week at work. Tomorrow is a public holiday, effectively making this - a Friday. My brain is blank and exhausted, so I can't do anything productive. And I'm too tired to go out. But I can still learn a thing or two. First things first - cancel the external\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/04\\\/01\\\/checking-out-ansible-sorry-puppet\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2016-04-01T00:45:35+02:00\",\"dateModified\":\"2016-04-01T00:45:35+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Checking out Ansible. Sorry Puppet - Leonid Mamchenkov","description":"It's Thursday evening of a particularly difficult week at work. Tomorrow is a public holiday, effectively making this - a Friday. My brain is blank and exhausted, so I can't do anything productive. And I'm too tired to go out. But I can still learn a thing or two. First things first - cancel the external","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#blogposting","name":"Checking out Ansible. Sorry Puppet - Leonid Mamchenkov","headline":"Checking out Ansible. Sorry Puppet","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"},"datePublished":"2016-04-01T00:45:35+02:00","dateModified":"2016-04-01T00:45:35+02:00","inLanguage":"en-US","commentCount":3,"mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#webpage"},"articleSection":"All, Linux, Programming, Sysadmin, Technology, Web work, Ansible, configuration management, Puppet, web hosting"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/linux\/#listItem","name":"Linux"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/linux\/#listItem","position":3,"name":"Linux","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/linux\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#listItem","name":"Checking out Ansible. Sorry Puppet"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#listItem","position":4,"name":"Checking out Ansible. Sorry Puppet","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/linux\/#listItem","name":"Linux"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/","name":"Checking out Ansible. Sorry Puppet - Leonid Mamchenkov","description":"It's Thursday evening of a particularly difficult week at work. Tomorrow is a public holiday, effectively making this - a Friday. My brain is blank and exhausted, so I can't do anything productive. And I'm too tired to go out. But I can still learn a thing or two. First things first - cancel the external","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2016-04-01T00:45:35+02:00","dateModified":"2016-04-01T00:45:35+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"Checking out Ansible. Sorry Puppet - Leonid Mamchenkov","og:description":"It's Thursday evening of a particularly difficult week at work. Tomorrow is a public holiday, effectively making this - a Friday. My brain is blank and exhausted, so I can't do anything productive. And I'm too tired to go out. But I can still learn a thing or two. First things first - cancel the external","og:url":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2016-03-31T22:45:35+00:00","article:modified_time":"2016-03-31T22:45:35+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"Checking out Ansible. Sorry Puppet - Leonid Mamchenkov","twitter:description":"It's Thursday evening of a particularly difficult week at work. Tomorrow is a public holiday, effectively making this - a Friday. My brain is blank and exhausted, so I can't do anything productive. And I'm too tired to go out. But I can still learn a thing or two. First things first - cancel the external","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"25985","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-20 03:47:36","updated":"2026-01-15 12:05:45","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/linux\/\" title=\"Linux\">Linux<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tChecking out Ansible. Sorry Puppet\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Linux","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/linux\/"},{"label":"Checking out Ansible. Sorry Puppet","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/checking-out-ansible-sorry-puppet\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":27513,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/04\/10\/why-configuration-management-and-provisioning-are-different\/","url_meta":{"origin":25985,"position":0},"title":"Why Configuration Management and Provisioning are Different","author":"Leonid Mamchenkov","date":"April 10, 2017","format":false,"excerpt":"In \"Why Configuration Management and Provisioning are Different\"\u00a0Carlos Nu\u00f1ez advocates for the use of specialized infrastructure provisioning tools, like Terraform, Heat, and\u00a0CloudFormation, instead of relying on the configuration management tools, like Ansible or Puppet. I agree with his argument for the rollbacks, but not so much for the maintaining state\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\/04\/complexity-500x281.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":24864,"url":"https:\/\/mamchenkov.net\/wordpress\/2015\/10\/19\/red-hat-acquires-ansible\/","url_meta":{"origin":25985,"position":1},"title":"Red Hat acquires Ansible","author":"Leonid Mamchenkov","date":"October 19, 2015","format":false,"excerpt":"Linux Weekly News reports that Red Hat acquires Ansible. \u00a0There are quite a few configuration management tools around, and it was only the matter of time until Red Hat, with all its corporate client base, would buy one. \u00a0Or pledge allegiance. \u00a0My personal preference would be in Puppet, but Puppet\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":25986,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/04\/01\/first-attempt-at-ansible\/","url_meta":{"origin":25985,"position":2},"title":"First attempt at Ansible","author":"Leonid Mamchenkov","date":"April 1, 2016","format":false,"excerpt":"After all the reading about Ansible that I've done yesterday, I woke up today with a strong will to try it out. \u00a0Running a few \"hello world\" examples wasn't illustrative enough, so I decided to migrate my dotfiles repository from Puppet to Ansible. \u00a0This would provide just enough complexity to\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":27398,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/03\/08\/how-to-use-git-to-manage-your-user-configuration-files\/","url_meta":{"origin":25985,"position":3},"title":"How To Use Git to Manage your User Configuration Files","author":"Leonid Mamchenkov","date":"March 8, 2017","format":false,"excerpt":"There is probably a gadzillion different ways that you can manage and synchronize you configuration files (aka dotfiles) between different Linux\/UNIX boxes - anything from custom symlink scripts, all the way to configuration management tools like Puppet and Ansible. \u00a0Here are a few options to look at if you are\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":27604,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/05\/22\/listing-iterating-and-loading-json-in-ansible-playbooks\/","url_meta":{"origin":25985,"position":4},"title":"Listing, Iterating, and Loading JSON in Ansible Playbooks","author":"Leonid Mamchenkov","date":"May 22, 2017","format":false,"excerpt":"Listing, Iterating, and Loading JSON in Ansible Playbooks - for those days when you need to offload part of your configuration onto external JSON files, but don't have a spare day to try, fail and repeat.","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":26931,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/21\/using-ansible-to-bootstrap-an-amazon-ec2-instance\/","url_meta":{"origin":25985,"position":5},"title":"Using Ansible to bootstrap an Amazon EC2 instance","author":"Leonid Mamchenkov","date":"November 21, 2016","format":false,"excerpt":"This article - \"Using Ansible to Bootstrap My Work Environment Part 4\" is pure gold for anyone trying to figure out all the moving parts needed to automate the provisioning and configuration of the Amazon EC2 instance with Ansible. Sure, some bits are easier than the other, but it takes\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\/25985","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=25985"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/25985\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=25985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=25985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=25985"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=25985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}