{"id":48329,"date":"2013-03-01T13:08:42","date_gmt":"2013-03-01T10:08:42","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=48329"},"modified":"2022-01-03T14:57:43","modified_gmt":"2022-01-03T11:57:43","slug":"easy-deployment-of-rack-applications-with-juju","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/","title":{"rendered":"Easy Deployment of Rack Applications with Juju"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#What_is_Juju\" >What is Juju?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#Getting_started\" >Getting started<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#Sinatra_example_with_the_html2haml_app\" >Sinatra example with the html2haml app<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#The_Ruby-on-Rails_v30_example\" >The Ruby-on-Rails v3.0 example<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#About_the_author\" >About the author<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"What_is_Juju\"><\/span>What is Juju?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/charmhub.io\/\" rel=\"noopener noreferrer\" target=\"_blank\">Juju<\/a> is a service orchestration management tool developed by Canonical. With Juju, it is easy to build entire environments on public clouds, such as <a href=\"https:\/\/aws.amazon.com\/\" rel=\"noopener noreferrer\" target=\"_blank\">Amazon Web Services<\/a> and <a href=\"https:\/\/www.hpe.com\/us\/en\/solutions\/hybrid-cloud.html\" rel=\"noopener noreferrer\" target=\"_blank\">HP Cloud<\/a>, as well as private clouds built on <a href=\"https:\/\/www.openstack.org\/\" rel=\"noopener noreferrer\" target=\"_blank\">OpenStack<\/a> or raw bare metal via <a href=\"https:\/\/maas.io\/\" rel=\"noopener noreferrer\" target=\"_blank\">MAAS<\/a>.<\/p>\n<p>Juju uses <a href=\"https:\/\/charmhub.io\/\" rel=\"noopener noreferrer\" target=\"_blank\">Charms<\/a>\u2014scripts that can be written in any language to deploy and configure services. There are over 100 services ready to deploy.<\/p>\n<p>With <b>Rack Charm<\/b>, you can deploy your applications on <a href=\"https:\/\/www.google.com\/aclk?sa=L&#038;ai=DChcSEwimyb_AwdLsAhWSqXcKHdswCB8YABAAGgJlZg&#038;sig=AOD64_0NbHJSFvt-K7HHH__FDyhg0Oq-Qw&#038;q&#038;adurl&#038;ved=2ahUKEwjs6bXAwdLsAhVEDewKHQN8Bk0Q0Qx6BAgWEAE\" rel=\"noopener noreferrer\" target=\"_blank\">Amazon EC2<\/a> in just a few minutes. Let me provide you some examples. All the examples are tested for <a href=\"https:\/\/old-releases.ubuntu.com\/releases\/12.04\/\" rel=\"noopener noreferrer\" target=\"_blank\">Ubuntu 12.04 Precise Pangolin<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Getting_started\"><\/span>Getting started<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Install Juju.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">sudo add-apt-repository ppa:juju\/pkgs\r\nsudo apt-get update &amp;&amp; sudo apt-get install juju<\/span><\/code><\/pre>\n<\/figure>\n<p>Run the command-line utility with no arguments to create a sample environment.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">juju bootstrap<\/span><\/code><\/pre>\n<\/figure>\n<p>Configure your <code style=\"color: black; background-color: #e6e6e6;\">~\/.juju\/environments.yaml<\/code> environment. See how to run services on your local machine via Linux containers in <a href=\"https:\/\/charmhub.io\/docs\/getting-started.html#configuring-a-local-environment\" rel=\"noopener noreferrer\" target=\"_blank\">this documentation<\/a>. Below is the Amazon EC2 example.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"na\">default<\/span><span class=\"pi\">:<\/span> <span class=\"s\">sample<\/span>\r\n  <span class=\"s\">environments<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">sample<\/span><span class=\"pi\">:<\/span>\r\n      <span class=\"na\">type<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ec2<\/span>\r\n      <span class=\"na\">access-key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">YOUR-ACCESS-KEY-GOES-HERE<\/span>\r\n      <span class=\"na\">secret-key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">YOUR-SECRET-KEY-GOES-HERE<\/span>\r\n      <span class=\"na\">control-bucket<\/span><span class=\"pi\">:<\/span> <span class=\"s\">juju-faefb490d69a41f0a3616a4808e0766b<\/span>\r\n      <span class=\"na\">admin-secret<\/span><span class=\"pi\">:<\/span> <span class=\"s\">81a1e7429e6847c4941fda7591246594<\/span>\r\n      <span class=\"na\">default-series<\/span><span class=\"pi\">:<\/span> <span class=\"s\">precise<\/span>\r\n      <span class=\"na\">juju-origin<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ppa<\/span>\r\n      <span class=\"na\">ssl-hostname-verification<\/span><span class=\"pi\">:<\/span> <span class=\"no\">true<\/span><\/code><\/pre>\n<\/figure>\n<p>Bootstrap the environment.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">juju bootstrap<\/span><\/code><\/pre>\n<\/figure>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Sinatra_example_with_the_html2haml_app\"><\/span>Sinatra example with the <code style=\"color: black; background-color: #e6e6e6;\">html2haml<\/code> app<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Deploy a web server.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">juju deploy nginx-passenger<\/span><\/code><\/pre>\n<\/figure>\n<p>Create a configuration file for Rack Charm. Let\u2019s call it <a href=\"https:\/\/github.com\/haml\/html2haml\" rel=\"noopener noreferrer\" target=\"_blank\">html2haml.yml<\/a>.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"na\">html2haml<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">repo_url<\/span><span class=\"pi\">:<\/span> <span class=\"s\">https:\/\/github.com\/twilson63\/html2haml.git<\/span>\r\n  <span class=\"na\">app_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">html2haml<\/span><\/code><\/pre>\n<\/figure>\n<p>Deploy Rack Charm with the config you have created in the previous step.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">juju deploy rack html2haml --config html2haml.yml<\/span><\/code><\/pre>\n<\/figure>\n<p>Relate the config to the web server.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">juju add-relation html2haml nginx-passenger<\/span><\/code><\/pre>\n<\/figure>\n<p>Open the stack up to the outside world.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">juju expose nginx-passenger<\/span><\/code><\/pre>\n<\/figure>\n<p>Find the <code style=\"color: black; background-color: #e6e6e6;\">nginx-passenger<\/code> instance\u2019s public URL.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">juju status<\/span><\/code><\/pre>\n<\/figure>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_Ruby-on-Rails_v30_example\"><\/span>The Ruby-on-Rails v3.0 example<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In Ruby on Rails, the process resembles the Sinatra deployment, but additionally, the PostgreSQL database is used.<\/p>\n<p>Create the <code style=\"color: black; background-color: #e6e6e6;\">sample_rails.yml<\/code> config file.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-yaml\" data-lang=\"yaml\"><span class=\"na\">sample_rails<\/span><span class=\"pi\">:<\/span>\r\n  <span class=\"na\">repo_url<\/span><span class=\"pi\">:<\/span> <span class=\"s\">https:\/\/github.com\/pavelpachkovskij\/sample-rails.git<\/span>\r\n  <span class=\"na\">app_name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">sample_rails<\/span><\/code><\/pre>\n<\/figure>\n<p>Deploy the application and the web server.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">juju deploy rack sample_rails --config sample_rails.yml\r\njuju deploy nginx-passenger\r\njuju add-relation sample_rails nginx-passenger<\/span><\/code><\/pre>\n<\/figure>\n<p>Deploy PostgreSQL and relate it to the application.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">juju deploy postgresql\r\njuju add-relation postgresql:db sample_rails<\/span><\/code><\/pre>\n<\/figure>\n<p>Expose <code style=\"color: black; background-color: #e6e6e6;\">nginx-passenger<\/code> and find its public URL.<\/p>\n<figure class=\"highlight\">\n<pre><code class=\"language-console\" data-lang=\"console\"><span class=\"go\">juju expose nginx-passenger\r\njuju status<\/span><\/code><\/pre>\n<\/figure>\n<p>For more, check out the <a href=\"https:\/\/charmhub.io\/docs\" rel=\"noopener noreferrer\" target=\"_blank\">Juju documentation<\/a> and the <a href=\"https:\/\/charmhub.io\/juju-gui\" rel=\"noopener noreferrer\" target=\"_blank\">Juju GUI documentation<\/a>. Juju GUI is a web interface you can deploy right into your environment. It lets you model and design the entire stack via a web browser, including integration with the <a href=\"https:\/\/charmhub.io\/\" rel=\"noopener noreferrer\" target=\"_blank\">Juju Charm Store<\/a>.<\/li>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/deploying-the-discourse-discussion-platform-with-juju-service-orchestration\/\">Deploying the Discourse Discussion Platform with Juju Service Orchestration<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/cloud-foundry-deployment-tools-bosh-vs-juju-charms\/\">Deployment Tools for Cloud Foundry: BOSH vs. Juju Charms<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/how-to-implement-integration-tests-for-juju-charms\/\">How to Implement Integration Tests for Juju Charms<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_author\"><\/span>About the author<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/09\/pavel-pachkovsky.png\" width=\"110\" class=\"alignright size-thumbnail wp-image-64162\" \/><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/pavel-pachkovsky-535a6128\/\" rel=\"noopener noreferrer\" target=\"_blank\">Pavel Pachkovskij<\/a> has experience in front- and back-end development of web applications. He is proficient in Ruby, Ruby on Rails, JavaScript, CSS, etc. Pavel also worked with relational databases, such as MySQL, MariaDB, PostgreSQL, as well as NoSQL solutions, such as MongoDB and Redis. Find him on <a href=\"https:\/\/web.archive.org\/web\/20140601125849\/https:\/\/github.com\/pavelpachkovskij\" rel=\"noopener noreferrer\" target=\"_blank\">GitHub<\/a>.<\/small><\/p>\n<hr\/>\n<p><center><small>The post was written by Pavel Pachkovskij and edited by <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\" rel=\"noopener noreferrer\" target=\"_blank\">Alex Khizhniak<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to deploy Rack applications with Juju orchestration tool.<\/p>\n","protected":false},"author":5,"featured_media":58272,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[1000,895],"class_list":["post-48329","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-github","tag-research-and-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Easy Deployment of Rack Applications with Juju | Altoros<\/title>\n<meta name=\"description\" content=\"Providing step-by-step instructions, this blog post explores how to deploy Rack applications with the Juju orchestration tool.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Easy Deployment of Rack Applications with Juju | Altoros\" \/>\n<meta property=\"og:description\" content=\"How to deploy Rack applications with Juju orchestration tool.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2013-03-01T10:08:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-03T11:57:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/03\/easy-deployment-of-rack-applications-with-juju.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alex Khizhniak\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alex Khizhniak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/\"},\"author\":{\"name\":\"Alex Khizhniak\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/3d914db6ad1b2908c32c0dc5dcabc420\"},\"headline\":\"Easy Deployment of Rack Applications with Juju\",\"datePublished\":\"2013-03-01T10:08:42+00:00\",\"dateModified\":\"2022-01-03T11:57:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/\"},\"wordCount\":395,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/03\\\/easy-deployment-of-rack-applications-with-juju.png\",\"keywords\":[\"GitHub\",\"Research and Development\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/\",\"name\":\"Easy Deployment of Rack Applications with Juju | Altoros\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/03\\\/easy-deployment-of-rack-applications-with-juju.png\",\"datePublished\":\"2013-03-01T10:08:42+00:00\",\"dateModified\":\"2022-01-03T11:57:43+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/3d914db6ad1b2908c32c0dc5dcabc420\"},\"description\":\"How to deploy Rack applications with Juju orchestration tool.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/03\\\/easy-deployment-of-rack-applications-with-juju.png\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/03\\\/easy-deployment-of-rack-applications-with-juju.png\",\"width\":1024,\"height\":576},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/easy-deployment-of-rack-applications-with-juju\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Easy Deployment of Rack Applications with Juju\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/3d914db6ad1b2908c32c0dc5dcabc420\",\"name\":\"Alex Khizhniak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/druzya-edit1-150x150.jpg\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/druzya-edit1-150x150.jpg\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/druzya-edit1-150x150.jpg\",\"caption\":\"Alex Khizhniak\"},\"description\":\"Alex Khizhniak is Director of Technical Content Strategy at Altoros and a cofounder of a local Java User Group. Managing distributed teams since 2004, he has gained experience as a journalist, an editor-in-chief, a technical writer, a technology evangelist, a project manager, and a product owner. Alex is obsessed with AI\\\/ML, data science, data integration, ETL\\\/DWH, data quality, databases (SQL\\\/NoSQL), big data, IoT, and BI. The articles and industry reports he created or helped to publish reached out to 3,000,000+ tech-savvy readers. Some of the pieces were covered on TechRepublic, ebizQ, NetworkWorld, CIO.com, etc. Find him on Twitter at @alxkh.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/alxkh\"],\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/author\\\/alex\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Easy Deployment of Rack Applications with Juju | Altoros","description":"Providing step-by-step instructions, this blog post explores how to deploy Rack applications with the Juju orchestration tool.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/","og_locale":"en_US","og_type":"article","og_title":"Easy Deployment of Rack Applications with Juju | Altoros","og_description":"How to deploy Rack applications with Juju orchestration tool.","og_url":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/","og_site_name":"Altoros","article_published_time":"2013-03-01T10:08:42+00:00","article_modified_time":"2022-01-03T11:57:43+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/03\/easy-deployment-of-rack-applications-with-juju.png","type":"image\/png"}],"author":"Alex Khizhniak","twitter_misc":{"Written by":"Alex Khizhniak","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#article","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/"},"author":{"name":"Alex Khizhniak","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3d914db6ad1b2908c32c0dc5dcabc420"},"headline":"Easy Deployment of Rack Applications with Juju","datePublished":"2013-03-01T10:08:42+00:00","dateModified":"2022-01-03T11:57:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/"},"wordCount":395,"commentCount":0,"image":{"@id":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/03\/easy-deployment-of-rack-applications-with-juju.png","keywords":["GitHub","Research and Development"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/","url":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/","name":"Easy Deployment of Rack Applications with Juju | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/03\/easy-deployment-of-rack-applications-with-juju.png","datePublished":"2013-03-01T10:08:42+00:00","dateModified":"2022-01-03T11:57:43+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3d914db6ad1b2908c32c0dc5dcabc420"},"description":"How to deploy Rack applications with Juju orchestration tool.","breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/03\/easy-deployment-of-rack-applications-with-juju.png","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2013\/03\/easy-deployment-of-rack-applications-with-juju.png","width":1024,"height":576},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/easy-deployment-of-rack-applications-with-juju\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Easy Deployment of Rack Applications with Juju"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3d914db6ad1b2908c32c0dc5dcabc420","name":"Alex Khizhniak","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/druzya-edit1-150x150.jpg","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/druzya-edit1-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/druzya-edit1-150x150.jpg","caption":"Alex Khizhniak"},"description":"Alex Khizhniak is Director of Technical Content Strategy at Altoros and a cofounder of a local Java User Group. Managing distributed teams since 2004, he has gained experience as a journalist, an editor-in-chief, a technical writer, a technology evangelist, a project manager, and a product owner. Alex is obsessed with AI\/ML, data science, data integration, ETL\/DWH, data quality, databases (SQL\/NoSQL), big data, IoT, and BI. The articles and industry reports he created or helped to publish reached out to 3,000,000+ tech-savvy readers. Some of the pieces were covered on TechRepublic, ebizQ, NetworkWorld, CIO.com, etc. Find him on Twitter at @alxkh.","sameAs":["https:\/\/x.com\/https:\/\/twitter.com\/alxkh"],"url":"https:\/\/www.altoros.com\/blog\/author\/alex\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/48329","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=48329"}],"version-history":[{"count":13,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/48329\/revisions"}],"predecessor-version":[{"id":65998,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/48329\/revisions\/65998"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/58272"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=48329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=48329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=48329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}