{"id":36076,"date":"2018-08-28T19:44:15","date_gmt":"2018-08-28T16:44:15","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=36076"},"modified":"2018-09-05T14:44:03","modified_gmt":"2018-09-05T11:44:03","slug":"ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/","title":{"rendered":"Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances"},"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\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#The_need_for_automation\" >The need for automation<\/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\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#What_is_it\" >What is it?<\/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\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#Prerequisites\" >Prerequisites<\/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\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#Configuring_the_network\" >Configuring the network<\/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\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#Deploying_the_network\" >Deploying the network<\/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\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#Summary\" >Summary<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#About_the_expert\" >About the expert<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"The_need_for_automation\"><\/span>The need for automation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When manually deploying Hyperledger Fabric to multiple instances, you have to take numerous actions across all the instances involved. Naturally, this is both effort- and time-consuming. Furthermore, manual installation is highly prone to human error.<\/p>\n<p>To save on operational costs, one needs an instrument capable of automating the deployment process. The Hyperledger ecosystem offers <a href=\"https:\/\/github.com\/hyperledger\/cello\/tree\/master\/src\/agent\/ansible\" rel=\"noopener\" target=\"_blank\">Cello Ansible agent<\/a> for the very purpose, however, it\u2019s still in the incubation phase.<\/p>\n<p>In an attempt to simplify multi-instance deployment of Hyperledger Fabric, our blockchain team was working on a tool of its own. Today, Altoros is glad to announce the release of <b>Ansible Fabric Starter<\/b>\u2014the result of the work done.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_is_it\"><\/span>What is it?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/github.com\/Altoros\/Ansible-Fabric-Starter\" rel=\"noopener\" target=\"_blank\">Ansible Fabric Starter<\/a> is an infrastructure-agnostic utility to deploy Hyperledger Fabric to multiple instances. <em>Ansible Fabric Starter<\/em> uses Docker containers managed through Docker Compose. The utility is, actually, a collection of three Ansible-based playbooks: <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">install-dependencies.yml<\/code>, <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">config-network.yml<\/code>, and <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">start-network.yml<\/code>. <em>Ansible Fabric Starter<\/em> also includes three Ansible roles:<\/p>\n<ul>\n<li><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">common-packages<\/code> to install default packages, e.g., Python libs for Docker, on target hosts<\/li>\n<li><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">docker<\/code> to install Docker and Docker Compose on target hosts<\/li>\n<li><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">fabric<\/code> to pull all the necessary Docker images for Hyperledger Fabric<\/li>\n<\/ul>\n<p>The <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">install-dependencies.yml<\/code> playbook is responsible for calling the above-mentioned Ansible roles to install all the necessary software and prepare the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">target<\/code> hosts for deployment.<\/p>\n<p>The <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">config-network.yml<\/code> playbook generates configuration files for Hyperledger Fabric and Docker Compose and transfers them to the target hosts.<\/p>\n<p>Finally, the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">start-network.yml<\/code> installs and instantiates a chaincode, as well as creates the blockchain channels according to the configuration to start the network.<\/p>\n<p>For production-grade purposes, <em>Ansible Fabric Starter<\/em> provides support for the Kafka orderer, though the Solo orderer is available, as well.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Prerequisites\"><\/span>Prerequisites<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To get started with <em>Ansible Fabric Starter<\/em>, your machine should have:<\/p>\n<ul>\n<li>The GNU\/Linux operating system<\/li>\n<li>Ansible v2.5.0 (and later)<\/li>\n<\/ul>\n<p>The provisioned nodes by Ansible should have:<\/p>\n<ul>\n<li>Ubuntu 16.04 or CentOS 7<\/li>\n<li>Python<\/li>\n<li><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">sudo<\/code> access<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Configuring_the_network\"><\/span>Configuring the network<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If a blockchain network is pre-configured (or you may want to run the default settings), you just need to specify an IP address of each host in <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">ansible_host<\/code>. For a user with <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">sudo<\/code> access, an IP address is specified in <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">ansible_user<\/code>. The domain and machine names (e.g., <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">one.example.com<\/code>) are mainly required for the Docker network, so you can set values you need.<\/p>\n<p>Below, you will find three sample configuration schemas.<\/p>\n<p>A network configuration of <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">hosts_compact.yml<\/code> with the Solo orderer and three organizations. The orderer service is hosted on the first organization node. Only a common channel is enabled.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-hyperledger-blockchain-hosts-compact.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-hyperledger-blockchain-hosts-compact.png\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-36078\" \/><\/a><\/center><\/p>\n<p>A network configuration of <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">hosts_dedicated_orderer.yml<\/code> with the Solo orderer and three organizations. In this case, the orderer service is hosted on a separate node. Three private channels are enabled across all organizations.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-hyperledger-hosts-dedicated-orderer.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-hyperledger-hosts-dedicated-orderer.png\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-36079\" \/><\/a><\/center><\/p>\n<p>In the example below, a network configuration of <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">host_kafka.yml<\/code> uses the Kafka orderer with three organizations. Here, each organization has its own copy of the orderer service. Three private channels are enabled across all organizations.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-hyperledger-hosts-kafka.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-hyperledger-hosts-kafka.png\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-36080\" \/><\/a><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Deploying_the_network\"><\/span>Deploying the network<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>First, insure that you are in the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">project-root<\/code> directory by running the following command:<\/p>\n<pre>cd ansible-fabric-starter<\/pre>\n<p>By default, an Ansible inventory is located in the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">hosts.yml<\/code> file. You can rename any configuration from the examples above or specify the correct inventory via the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">-i<\/code> parameter. If a network is deployed from scratch, you may want to install all the dependencies:<\/p>\n<pre>ansible-playbook install-dependencies.yml -i hosts_kafka.yml<\/pre>\n<p>To keep your inventory configuration in <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">hosts.yml<\/code>, use the following command:<\/p>\n<pre>ansible-playbook install-dependencies.yml<\/pre>\n<p>After all the nodes are provisioned with all the necessary software, you can deploy the blockchain network to the configured instances:<\/p>\n<pre>ansible-playbook config-network.yml -i hosts_kafka.yml<\/pre>\n<p>A little hint: the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">config-network.yml<\/code> playbook will include <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">start-network.yml<\/code> automatically.<\/p>\n<p>If you need to redeploy the network without reconfiguration\u2014to drop the ledger for example\u2014just launch the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">start-network.yml<\/code> playbook, but don&#8217;t forget about the inventory configuration:<\/p>\n<pre>ansible-playbook start-network.yml -i hosts_kafka.yml<\/pre>\n<p><b>Note:<\/b> Each new deployment is configured to delete the existing Docker volumes and containers. It means that if you redeploy on a working system, all the data will be lost.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Summary\"><\/span>Summary<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In a few clicks, <em>Ansible Fabric Starter<\/em> allows for deploying a blockchain network to multiple instances with a configurable amount of organizations and channels using either Kafka or Solo orderers. To learn more about <em>Ansible Fabric Starter<\/em>, please check out the <a href=\"https:\/\/github.com\/Altoros\/Ansible-Fabric-Starter\" rel=\"noopener\" target=\"_blank\">project&#8217;s GitHub repo<\/a>, which contains more info on deploying and testing the network, as well as exemplifies the tricky case for the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">hosts_kafka.yml<\/code> configuration.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_expert\"><\/span>About the expert<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Gleb-Iodo-bio.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Gleb-Iodo-bio.png\" alt=\"\" width=\"120\" height=\"120\" class=\"aligncenter size-full wp-image-36131\" \/><\/a><\/div>\n<div style=\"width: 650px;\"><small><b>Hleb Iodo<\/b> is Blockchain DevOps Engineer at Altoros with 5+ years of experience with network engineering. He specializes in network configuration and maintenance, as well as continuous integration and delivery. Hleb&#8217;s interests include deployment automation, cloud-native apps, blockchain, and distributed software. He is also skilled in working with GNU\/Linux and various cloud providers.<\/small><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<hr \/>\n<p><center><small>This blog post was written by Hleb Iodo and <a href=\"https:\/\/www.altoros.com\/blog\/author\/sophie.turol\/\">Sophie Turol<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The need for automation<\/p>\n<p>When manually deploying Hyperledger Fabric to multiple instances, you have to take numerous actions across all the instances involved. Naturally, this is both effort- and time-consuming. Furthermore, manual installation is highly prone to human error.<\/p>\n<p>To save on operational costs, one needs an instrument capable of automating the [&#8230;]<\/p>\n","protected":false},"author":3,"featured_media":36120,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[672,753],"class_list":["post-36076","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-blockchain","tag-hyperledger"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances | Altoros<\/title>\n<meta name=\"description\" content=\"Altoros introduces a utility that allows for deploying a blockchain network to multiple instances with a configurable amount of organizations and channels.\" \/>\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\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances | Altoros\" \/>\n<meta property=\"og:description\" content=\"The need for automation When manually deploying Hyperledger Fabric to multiple instances, you have to take numerous actions across all the instances involved. Naturally, this is both effort- and time-consuming. Furthermore, manual installation is highly prone to human error. To save on operational costs, one needs an instrument capable of automating the [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-28T16:44:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-09-05T11:44:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Sophia Turol\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sophia Turol\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/\"},\"author\":{\"name\":\"Sophia Turol\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/58194952af19fe7b2b830846e077a58e\"},\"headline\":\"Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances\",\"datePublished\":\"2018-08-28T16:44:15+00:00\",\"dateModified\":\"2018-09-05T11:44:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/\"},\"wordCount\":771,\"commentCount\":14,\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances.gif\",\"keywords\":[\"Blockchain\",\"Hyperledger\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/\",\"name\":\"Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances | Altoros\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances.gif\",\"datePublished\":\"2018-08-28T16:44:15+00:00\",\"dateModified\":\"2018-09-05T11:44:03+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/58194952af19fe7b2b830846e077a58e\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances.gif\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/08\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances\"}]},{\"@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\\\/58194952af19fe7b2b830846e077a58e\",\"name\":\"Sophia Turol\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/trello_card-96x96.jpg\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/trello_card-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/trello_card-96x96.jpg\",\"caption\":\"Sophia Turol\"},\"description\":\"Sophia Turol is passionate about delivering well-structured articles that cater for picky technical audience. With 3+ years in technical writing and 5+ years in editorship, she enjoys collaboration with developers to create insightful, yet intelligible technical tutorials, overviews, and case studies. Sophie is enthusiastic about deep learning solutions\u2014TensorFlow in particular\u2014and PaaS systems, such as Cloud Foundry.\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/author\\\/sophie-turol\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances | Altoros","description":"Altoros introduces a utility that allows for deploying a blockchain network to multiple instances with a configurable amount of organizations and channels.","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\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/","og_locale":"en_US","og_type":"article","og_title":"Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances | Altoros","og_description":"The need for automation When manually deploying Hyperledger Fabric to multiple instances, you have to take numerous actions across all the instances involved. Naturally, this is both effort- and time-consuming. Furthermore, manual installation is highly prone to human error. To save on operational costs, one needs an instrument capable of automating the [...]","og_url":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/","og_site_name":"Altoros","article_published_time":"2018-08-28T16:44:15+00:00","article_modified_time":"2018-09-05T11:44:03+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances.gif","type":"image\/gif"}],"author":"Sophia Turol","twitter_misc":{"Written by":"Sophia Turol","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#article","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/"},"author":{"name":"Sophia Turol","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e"},"headline":"Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances","datePublished":"2018-08-28T16:44:15+00:00","dateModified":"2018-09-05T11:44:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/"},"wordCount":771,"commentCount":14,"image":{"@id":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances.gif","keywords":["Blockchain","Hyperledger"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/","url":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/","name":"Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances.gif","datePublished":"2018-08-28T16:44:15+00:00","dateModified":"2018-09-05T11:44:03+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/ansible-fabric-starter-deploy-hyperledger-fabric-to-multiple-instances\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ansible Fabric Starter: Deploy Hyperledger Fabric to Multiple Instances"}]},{"@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\/58194952af19fe7b2b830846e077a58e","name":"Sophia Turol","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","caption":"Sophia Turol"},"description":"Sophia Turol is passionate about delivering well-structured articles that cater for picky technical audience. With 3+ years in technical writing and 5+ years in editorship, she enjoys collaboration with developers to create insightful, yet intelligible technical tutorials, overviews, and case studies. Sophie is enthusiastic about deep learning solutions\u2014TensorFlow in particular\u2014and PaaS systems, such as Cloud Foundry.","url":"https:\/\/www.altoros.com\/blog\/author\/sophie-turol\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/36076","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\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=36076"}],"version-history":[{"count":40,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/36076\/revisions"}],"predecessor-version":[{"id":36151,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/36076\/revisions\/36151"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/36120"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=36076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=36076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=36076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}