{"id":4222,"date":"2013-02-12T20:59:19","date_gmt":"2013-02-12T17:59:19","guid":{"rendered":"http:\/\/railsware.com\/blog\/?p=4222"},"modified":"2021-08-16T15:57:49","modified_gmt":"2021-08-16T12:57:49","slug":"chef-server-and-amazon-auto-scaling-groups","status":"publish","type":"post","link":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/","title":{"rendered":"Chef Server and Amazon Auto Scaling Groups"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Amazon Auto Scaling Groups (ASG) present a new requirement for applications that will utilize this feature. When a new instance spins up, it has to know what to do.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Problem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s follow the steps leading to scaling up application. First, conditions set by one of your monitoring alarms should be met. Generally, this is the consumption of one of the core resources like CPU or system memory exceeding configured threshold. Then, scaling up policy takes part and launches a new instance using specified AMI. You have to craft that AMI in such a way that will bring new instance in a ready to serve condition.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Presumably, you have nicely working preconfigured AMI, but you have to bring your application code to the up-to-date state. Otherwise&#8230; Well, there is no \u201cotherwise\u201d, things must be correct on a new instance, and you simply can\u2019t do this manually &#8211; this is ASG, and it should work automatically.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Chef Server to the rescue<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here comes Chef Server that will help you to deal with it. The solution described below will also work nicely for projects without ASG.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When using Chef Server, you\u2019ll have chef-client agent on each instance. According to the documentation, you\u2019re presented with two options for running it: it could run either as a daemon or cron task&#8230; Nice! You\u2019re done. Your AMI is only required to have validation.pem key in order to register new instance on Server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wait a second, does this mean that chef-client will perform useless runs most of the time? Yes, it is. Actually Chef architecture preserves you from useless work if the state of a node is up to date, but there\u2019s a Deploy resource which probably you\u2019ll be using actively. Provider for this resource <a href=\"https:\/\/railsware.com\/blog\/chef-dos-and-donts\/#chef-capistrano\" target=\"_blank\" rel=\"noreferrer noopener\">will run callbacks no matter what is the current state<\/a> of the deployed code on the node.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also keep in mind that you have to manage registering\/unregistering node on Server, otherwise you will end up with trash stored on a server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tweaking Chef-Client<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">So what would be the best to do? First, we decided to create our own init script for chef-client. Its responsibility is to register and converge node to the desired state during boot up and unregister node on Server during reboot\/shutdown. Second, we opted to run chef-client only when we need, so no daemons or cron tasks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you\u2019ve installed Chef from package, before you proceed, you have to stop daemon and remove links from rc.d directories:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo \/etc\/init.d\/chef-client stop\nsudo mv \/etc\/init.d\/chef-client \/etc\/init.d\/chef-client.disabled # or remove it completely\nsudo update-rc.d chef-client remove\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Here are the snippets from init script template used by our cookbook for its management:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">NODE_ENV=\"&lt;%= node.chef_environment %>\"\nINSTANCE_ID=`curl -s http:\/\/169.254.169.254\/latest\/meta-data\/instance-id`\nNODE_NAME=\"${NODE_ENV}___${INSTANCE_ID}\"\n\n...\nregister_node() {\n update_node_config\n\n # aggregate options etc\n options=\"-E $NODE_ENV -N $NODE_NAME -o $RUN_LIST -S $CHEF_SERVER_URL\"\n export SKIP_RESQUE_RESTART=1 # because we're at boot up stage\n\n # shoot!\n chef-client $options > $LOG_FILE\n...\n}\n\nunregister_node() {\n echo \"`date +[%FT%T%:z]` `knife node delete $NODE_NAME -y -u $CHEF_CLIENT -k $CLIENT_KEY -c $CLIENT_CFG`\" >> $LOG_FILE\n echo \"`date +[%FT%T%:z]` `knife client delete $NODE_NAME -y -u $CHEF_CLIENT -k $CLIENT_KEY -c $CLIENT_CFG`\" >> $LOG_FILE\n rm $CLIENT_KEY $CLIENT_CFG &amp;&amp; echo \"`date +[%FT%T%:z]` Removed client key at $CLIENT_KEY and config at $CLIENT_CFG\" >> $LOG_FILE\n}\n\nupdate_node_config() {\n > $CLIENT_CFG\n echo \"chef_server_url \\\"$CHEF_SERVER_URL\\\"\" >> $CLIENT_CFG\n echo \"node_name \\\"$NODE_NAME\\\"\" >> $CLIENT_CFG\n}\n\ncase \"$1\" in\n start)\n   log_daemon_msg \"Starting $DESC\"\n   errcode=0\n   register_node || errcode=$?\n   log_end_msg $errcode\n   ;;\n stop)\n   log_daemon_msg \"Stopping $DESC\"\n   errcode=0\n   unregister_node || errcode=$?\n   log_end_msg $errcode\n   ;;\n...\nesac\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Overview of what it does:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>sets node name for instance (we have next naming convention <em>project-environment___instance_id<\/em>)<\/li><li>creates and configures client.rb used by chef-client (sets two vital attributes &#8211; node_name and chef_server_url)<\/li><li>performs initial run of chef-client during boot up<\/li><li>unregisters instance on Server during reboot\/shutdown<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Then, this script must be placed to rc.d directories to be executed on different runlevels:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">chmod +x \/etc\/init.d\/chef-client\nupdate-rc.d chef-client defaults 80 20\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">After covering startup\/shutdown cases with this script, we can safely achieve the second goal &#8211; triggering chef-client via knife ssh command whenever we need.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Summarizing above said, your AMI must have:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>validation.pem key in order to register an instance on Server<\/li><li>init script for chef-client<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">That\u2019s it! After completing these steps, you\u2019ll have a correctly working, predictable and easily maintainable ASG.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For the general Chef tips please refer to <a href=\"https:\/\/railsware.com\/blog\/chef-dos-and-donts\/\" target=\"_blank\" rel=\"noreferrer noopener\">&#8220;Chef: DOs and DON\u2019Ts&#8221;<\/a> article.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Amazon Auto Scaling Groups (ASG) present a new requirement for applications that will utilize this feature. When a new instance spins up, it has to know what to do. The Problem Let\u2019s follow the steps leading to scaling up application. First, conditions set by one of your monitoring alarms should be met. Generally, this is&#8230;<\/p>\n","protected":false},"author":20,"featured_media":4232,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[3],"tags":[],"coauthors":["Igor Antonyuk"],"class_list":["post-4222","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Chef Server and Amazon Auto Scaling Group. Making them work together smoothly.\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Igor Antonyuk\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"| Blog on Engineering, Product Management, Transparency, Culture and many more...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Chef Server and Amazon Auto Scaling Groups | Railsware Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Chef Server and Amazon Auto Scaling Group. Making them work together smoothly.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/02\/chef-asg-ico.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/02\/chef-asg-ico.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2013-02-12T17:59:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-08-16T12:57:49+00:00\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#article\",\"name\":\"Chef Server and Amazon Auto Scaling Groups | Railsware Blog\",\"headline\":\"Chef Server and Amazon Auto Scaling Groups\",\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/igor-antonyuk\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/02\\\/chef-asg-ico.jpg\",\"width\":150,\"height\":150,\"caption\":\"Chef Server and Amazon Auto Scaling Groups\"},\"datePublished\":\"2013-02-12T20:59:19+03:00\",\"dateModified\":\"2021-08-16T15:57:49+03:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#webpage\"},\"articleSection\":\"Engineering\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"position\":2,\"name\":\"Engineering\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#listItem\",\"name\":\"Chef Server and Amazon Auto Scaling Groups\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#listItem\",\"position\":3,\"name\":\"Chef Server and Amazon Auto Scaling Groups\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Logo-circle.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#organizationLogo\",\"width\":3137,\"height\":1054,\"caption\":\"Railsware logo\"},\"image\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/igor-antonyuk\\\/#author\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/igor-antonyuk\\\/\",\"name\":\"Igor Antonyuk\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#authorImage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/author-image-default-96x96.jpg\",\"width\":96,\"height\":96,\"caption\":\"Igor Antonyuk\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#webpage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/\",\"name\":\"Chef Server and Amazon Auto Scaling Groups | Railsware Blog\",\"description\":\"Chef Server and Amazon Auto Scaling Group. Making them work together smoothly.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/igor-antonyuk\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/igor-antonyuk\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/02\\\/chef-asg-ico.jpg\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#mainImage\",\"width\":150,\"height\":150,\"caption\":\"Chef Server and Amazon Auto Scaling Groups\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/chef-server-and-amazon-auto-scaling-groups\\\/#mainImage\"},\"datePublished\":\"2013-02-12T20:59:19+03:00\",\"dateModified\":\"2021-08-16T15:57:49+03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Chef Server and Amazon Auto Scaling Groups | Railsware Blog","description":"Chef Server and Amazon Auto Scaling Group. Making them work together smoothly.","canonical_url":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#article","name":"Chef Server and Amazon Auto Scaling Groups | Railsware Blog","headline":"Chef Server and Amazon Auto Scaling Groups","author":{"@id":"https:\/\/railsware.com\/blog\/author\/igor-antonyuk\/#author"},"publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/02\/chef-asg-ico.jpg","width":150,"height":150,"caption":"Chef Server and Amazon Auto Scaling Groups"},"datePublished":"2013-02-12T20:59:19+03:00","dateModified":"2021-08-16T15:57:49+03:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#webpage"},"isPartOf":{"@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#webpage"},"articleSection":"Engineering"},{"@type":"BreadcrumbList","@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/railsware.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","position":2,"name":"Engineering","item":"https:\/\/railsware.com\/blog\/category\/development\/","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#listItem","name":"Chef Server and Amazon Auto Scaling Groups"},"previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#listItem","position":3,"name":"Chef Server and Amazon Auto Scaling Groups","previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}}]},{"@type":"Organization","@id":"https:\/\/railsware.com\/blog\/#organization","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","url":"https:\/\/railsware.com\/blog\/","logo":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2020\/11\/Logo-circle.png","@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#organizationLogo","width":3137,"height":1054,"caption":"Railsware logo"},"image":{"@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/railsware.com\/blog\/author\/igor-antonyuk\/#author","url":"https:\/\/railsware.com\/blog\/author\/igor-antonyuk\/","name":"Igor Antonyuk","image":{"@type":"ImageObject","@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#authorImage","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2021\/06\/author-image-default-96x96.jpg","width":96,"height":96,"caption":"Igor Antonyuk"}},{"@type":"WebPage","@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#webpage","url":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/","name":"Chef Server and Amazon Auto Scaling Groups | Railsware Blog","description":"Chef Server and Amazon Auto Scaling Group. Making them work together smoothly.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/railsware.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#breadcrumblist"},"author":{"@id":"https:\/\/railsware.com\/blog\/author\/igor-antonyuk\/#author"},"creator":{"@id":"https:\/\/railsware.com\/blog\/author\/igor-antonyuk\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/02\/chef-asg-ico.jpg","@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#mainImage","width":150,"height":150,"caption":"Chef Server and Amazon Auto Scaling Groups"},"primaryImageOfPage":{"@id":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/#mainImage"},"datePublished":"2013-02-12T20:59:19+03:00","dateModified":"2021-08-16T15:57:49+03:00"},{"@type":"WebSite","@id":"https:\/\/railsware.com\/blog\/#website","url":"https:\/\/railsware.com\/blog\/","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","inLanguage":"en-US","publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"| Blog on Engineering, Product Management, Transparency, Culture and many more...","og:type":"article","og:title":"Chef Server and Amazon Auto Scaling Groups | Railsware Blog","og:description":"Chef Server and Amazon Auto Scaling Group. Making them work together smoothly.","og:url":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/","og:image":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/02\/chef-asg-ico.jpg","og:image:secure_url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/02\/chef-asg-ico.jpg","og:image:width":150,"og:image:height":150,"article:published_time":"2013-02-12T17:59:19+00:00","article:modified_time":"2021-08-16T12:57:49+00:00"},"aioseo_meta_data":{"post_id":"4222","title":"Chef Server and Amazon Auto Scaling Groups | Railsware Blog","description":"Chef Server and Amazon Auto Scaling Group. Making them work together smoothly.","keywords":[],"keyphrases":{"focus":[],"additional":[]},"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":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"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":{"id":"aioseo-article-6385f5b123032","slug":"article","graphName":"Article","label":"Article","properties":{"type":"BlogPosting","name":"#post_title","headline":"#post_title","description":"#post_excerpt","image":"","keywords":"","author":{"name":"#author_name","url":"#author_url"},"dates":{"include":true,"datePublished":"","dateModified":""}}},"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"}}","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":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":{"locations":{"business":{"name":"","businessType":"","image":"","areaServed":"","urls":{"website":"","aboutPage":"","contactPage":""},"address":{"streetLine1":"","streetLine2":"","zipCode":"","city":"","state":"","country":"","addressFormat":"#streetLineOne\n#streetLineTwo\n#city, #state #zipCode"},"contact":{"email":"","phone":"","phoneFormatted":"","fax":"","faxFormatted":""},"ids":{"vat":"","tax":"","chamberOfCommerce":""},"payment":{"priceRange":"","currenciesAccepted":"","methods":""}}},"openingHours":{"useDefaults":true,"show":true,"alwaysOpen":false,"use24hFormat":false,"timezone":"","labels":{"closed":"","alwaysOpen":""},"days":{"monday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"tuesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"wednesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"thursday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"friday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"saturday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"sunday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"}}}},"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-01-04 12:44:28","updated":"2025-09-26 11:17:39","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\" 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:\/\/railsware.com\/blog\/category\/development\/\" title=\"Engineering\">Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tChef Server and Amazon Auto Scaling Groups\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/railsware.com\/blog"},{"label":"Engineering","link":"https:\/\/railsware.com\/blog\/category\/development\/"},{"label":"Chef Server and Amazon Auto Scaling Groups","link":"https:\/\/railsware.com\/blog\/chef-server-and-amazon-auto-scaling-groups\/"}],"categories_data":[{"name":"Engineering","link":"https:\/\/railsware.com\/blog?category=development"}],"post_thumbnails":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/02\/chef-asg-ico.jpg","article_background":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/4222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/comments?post=4222"}],"version-history":[{"count":40,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/4222\/revisions"}],"predecessor-version":[{"id":14161,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/4222\/revisions\/14161"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media\/4232"}],"wp:attachment":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media?parent=4222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/categories?post=4222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/tags?post=4222"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/coauthors?post=4222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}