{"id":3689,"date":"2013-11-05T18:00:48","date_gmt":"2013-11-05T16:00:48","guid":{"rendered":"http:\/\/www.cloudcomp.ch\/?p=3689"},"modified":"2014-04-22T13:28:47","modified_gmt":"2014-04-22T11:28:47","slug":"openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/","title":{"rendered":"OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4"},"content":{"rendered":"<p style=\"text-align: justify\">This blog post describes the installation of OpenStack Grizzly with help of the Stackforge Puppet-Modules on CentOS 6.4 &#8211; with the use of network namespaces. The setup consists of a controller\/network and a compute node. Of course additional compute nodes can later be added as needed. <!--more--><strong style=\"font-size: 13px\"><\/strong><\/p>\n<p style=\"text-align: justify\"><strong style=\"font-size: 13px\">Basic Setup<\/strong><\/p>\n<p style=\"text-align: justify\">The installation was done with VirtualBox on a setup that more or less mirrors its real life counterpart (picture below). The operating system used on all the nodes is the &#8220;Basic Server&#8221; installation of CentOS 6.4. The controller\/network node has three network interfaces. One will be attached to the <em>management<\/em>, one to the <em>data<\/em> and one to the <em>external<\/em> as well as the <em>api<\/em> network. When using those specific network names, I refer to them as they are described in the official OpenStack documentation (for example <a title=\"OpenStack Networks\" href=\"http:\/\/docs.openstack.org\/grizzly\/basic-install\/yum\/content\/basic-install_architecture.html\">here<\/a>). These names for the various networks can be confusing since sometimes other words are used to describe them. The description &#8220;internal network&#8221; is as far as I can tell sometimes used for the management or the combination of the management and data network. The compute node has just two network interfaces. One will be connected to the management, and one to the data network. At least for the installation the compute node will use the management\/network node as a gateway to the internet, later this shouldn&#8217;t be needed anymore.\u00a0The controller\/network node is also the Puppet-Master while the compute nodes are Puppet-Agents.<\/p>\n<figure id=\"attachment_3751\" aria-describedby=\"caption-attachment-3751\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-3751\" alt=\"Node and Networks\" src=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks-300x150.png\" width=\"300\" height=\"150\" srcset=\"https:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks-300x150.png 300w, https:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks-500x251.png 500w, https:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks.png 948w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-3751\" class=\"wp-caption-text\">Node and Networks<\/figcaption><\/figure>\n<p style=\"text-align: justify\"><strong>Network specific problem<\/strong><\/p>\n<p style=\"text-align: justify\">The problem and solution to it described in this section are specific to how I wanted the networks configured. If you have another setup and the network configuration set, you might want to skip directly to the next section (Installation of OpenStack).<\/p>\n<p style=\"text-align: justify\">The problem was, that before the installation of OpenStack with puppet, the NIC that would be connected to the <em>external<\/em> and <em>api<\/em> network was the only connection to the internet. This connection needed to stay available during the installation-process so necessary packages could be downloaded. The problem is now, that during the installation, &#8220;puppet&#8221; will attach this interface to the external bridge (br-ex) which would result in connectivity-loss. I worked around this by only manually adding the IP to the external\/api interface and then adding some code to the puppet script which removes that IP address and assigns it to br-ex during the installation.<\/p>\n<p style=\"text-align: justify\">To achieve this, first configure the external\/api interface like this.<\/p>\n<pre id=\"file-gistfile1-txt-LC1\">DEVICE=ethX\r\nBOOTPROTO=none\r\nTYPE=ethernet\r\nHWADDR=AA:BB:CC:DD:EE:FF\r\nONBOOT=yes<\/pre>\n<p style=\"text-align: justify\">Add the IP address to that interface and set the gateway<\/p>\n<pre id=\"file-gistfile1-txt-LC1\"># ip addr add xxx.xxx.xxx.xxx\/xx dev ethX\r\n# ip route add default via &lt;addr of gateway&gt;<\/pre>\n<p style=\"text-align: justify\">Add the following snipped into the ovs.pp file &#8211; just after the quantum::plugins::ovs::port declaration. The file is can be found at \/etc\/puppet\/modules\/quantum\/manifests\/agents\/. It can also be downloaded <a title=\"ovs.pp File\" href=\"http:\/\/www.cloudcomp.ch\/wp-content\/uploads\/2013\/11\/ovs.pp_.txt\" target=\"_blank\">here<\/a><\/p>\n<p style=\"text-align: justify\">\n<pre id=\"file-gistfile1-pp-LC1\">exec { \"set br-ex\":\r\n    command =&gt; \"ip addr del xxx.xxx.xxx.xxx\/xx dev ethX; ip addr add xxx.xxx.xxx.xxx\/xx dev br-ex;\r\n    ip route add default via &lt;addr of gateway&gt;\",\r\n    path =&gt; [ \"\/sbin\/\" ],\r\n    before =&gt; Service['quantum-plugin-ovs-service'],\r\nrequire =&gt; quantum::plugins::ovs::port[$bridge_uplinks],\r\n}<\/pre>\n<p style=\"text-align: justify\">This solution does the job but can surely be improved. One of its flaws is that it only has to run once and further puppet-runs will display warnings. For the time being you could just comment that section out after the installation.<span style=\"font-size: 13px\">\u00a0<\/span><\/p>\n<p style=\"text-align: justify\"><strong>Installation of OpenStack<\/strong><\/p>\n<p style=\"text-align: justify\">These installation steps apply to both the controller\/network as well as the compute node. It will be noted where the procedure between them differs. The starting point is, as mentioned earlier, a freshly installed CentOS 6.4 &#8220;Basic Server&#8221;.<\/p>\n<ol style=\"text-align: justify\">\n<li>Install Linux kernel with network namespace support\n<pre># yum install kernel-2.6.32-*.openstack.el6.x86_64<\/pre>\n<\/li>\n<li>Disable SELinux\n<pre># sed -i 's\/SELINUX=enforcing\/SELINUX=disabled\/' \/etc\/sysconfig\/selinux<\/pre>\n<p>This step might not be necessary. In a next step it would be interesting to get this whole setup working with SELinux enabled. Further information can be found <a title=\"RDO - SELinux Issues\" href=\"http:\/\/openstack.redhat.com\/SELinux_issues\" target=\"_blank\">here<\/a>. After these two first steps, reboot the machine.<\/li>\n<li>Install RDO (Grizzly), Epel and Puppet Repositories\n<pre id=\"file-gistfile1-txt-LC1\"># yum install http:\/\/rdo.fedorapeople.org\/openstack\/openstack-grizzly\/rdo-release-grizzly.rpm\r\n# yum install http:\/\/download.fedoraproject.org\/pub\/epel\/6\/i386\/epel-release-6-8.noarch.rpm\r\n# rpm -ivh http:\/\/yum.puppetlabs.com\/el\/6\/products\/i386\/puppetlabs-release-6-7.noarch.rpm<\/pre>\n<\/li>\n<li>Flush IPtables\n<pre># iptables -F<\/pre>\n<p>After a reboot, the rules defined in \/etc\/sysconfig\/iptables will be active again. For that not to happen, just remove all the lines beginning with &#8220;-A&#8221; from that file.<\/li>\n<li>\u00a0Enable IP forwarding\n<pre id=\"file-gistfile1-txt-LC1\"># sed -i 's\/net.ipv4.ip_forward = 0\/net.ipv4.ip_forward = 1\/' \/etc\/sysctl.conf\r\n# sysctl net.ipv4.ip_forward=1<\/pre>\n<\/li>\n<li>Update <em>iproute<\/em> and <em>iputils<\/em> package\n<pre># yum update iproute\r\n# yum update iputils<\/pre>\n<p>This assures two things. Firstly the availability of the &#8220;ip <em>netns<\/em>&#8221; command (part of iproute pkg)\u00a0and secondly to be able to issue arp requests from within network namespaces (which is fixed\/patched in the newest iputils pkg). The second error would manifest itself with following error message: <span style=\"font-family: Consolas, Monaco, monospace;font-size: 12px;line-height: 18px\">Stderr: &#8216;sysfs read broadcast value: No such file or directory&#8217;.<\/span> This is a result of this\u00a0<a title=\"Bug 963927 - arping is not compatible with network namespaces\" href=\"https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=963927\" target=\"_blank\">bug<\/a><\/li>\n<li>Install Puppet\n<ol>\n<li>For Controller\/Network node\n<pre># yum install puppet-server<\/pre>\n<\/li>\n<li>For Compute node\n<pre># yum install puppet<\/pre>\n<\/li>\n<\/ol>\n<\/li>\n<li>Download necessary Puppet modules (only on Controller\/Network node)\n<pre id=\"file-gistfile1-txt-LC1\"># puppet module install puppetlabs\/openstack\r\n# puppet module install puppetlabs\/lvm\r\n# puppet module install puppetlabs\/ntp<\/pre>\n<\/li>\n<li>Create\/Edit &#8216;site.pp&#8217; in \/etc\/puppet\/manifests. You&#8217;ll have to update this file to suite your needs and fit your specific configuration. The file that I used can be downloaded\u00a0<a title=\"site.pp\" href=\"http:\/\/www.cloudcomp.ch\/wp-content\/uploads\/2013\/11\/site.pp_.txt\" target=\"_blank\">here<\/a>.<\/li>\n<li>Run puppet agent\n<pre># puppet agent --test<\/pre>\n<p>Before you can run that puppet command the puppet-master and the agents must be correctly configured\/setup. If you should not be familiar with that, please refer to the documentation from <a title=\"Puppetlabs - Documentation\" href=\"http:\/\/docs.puppetlabs.com\/\" target=\"_blank\">puppetlabs<\/a>.<\/li>\n<\/ol>\n<p style=\"text-align: justify\">One thing I had to adjust after the puppet-run was the <em>novncproxy_host<\/em> variable in the nova.conf file (in \/etc\/nova\/) on the controller\/network node, otherwise I couldn&#8217;t connect to the console via the dashboard. Just set the value of this variable to 0.0.0.0 and then restart the nova-consoleauth and the nova-novncproxy services.<\/p>\n<p style=\"text-align: justify\">\n<p style=\"text-align: justify\">\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/centos\/\">CentOS<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/centos-6-4\/\">CentOS 6.4<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/grizzly\/\">grizzly<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/multi-node\/\">multi-node<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/openstack\/\">openstack<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/puppet\/\">puppet<\/a>, <a href=\"https:\/\/blog.zhaw.ch\/icclab\/tag\/stackforge\/\">StackForge<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>This blog post describes the installation of OpenStack Grizzly with help of the Stackforge Puppet-Modules on CentOS 6.4 &#8211; with the use of network namespaces. The setup consists of a controller\/network and a compute node. Of course additional compute nodes can later be added as needed.<\/p>\n","protected":false},"author":80,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[5,15],"tags":[67,68,167,227,240,271,310],"features":[],"class_list":["post-3689","post","type-post","status-publish","format-standard","hentry","category-articles","category-howtos","tag-centos","tag-centos-6-4","tag-grizzly","tag-multi-node","tag-openstack","tag-puppet","tag-stackforge"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4 - Service Engineering (ICCLab &amp; SPLab)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4\" \/>\n<meta property=\"og:description\" content=\"This blog post describes the installation of OpenStack Grizzly with help of the Stackforge Puppet-Modules on CentOS 6.4 - with the use of network namespaces. The setup consists of a controller\/network and a compute node. Of course additional compute nodes can later be added as needed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Engineering (ICCLab &amp; SPLab)\" \/>\n<meta property=\"article:published_time\" content=\"2013-11-05T16:00:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-04-22T11:28:47+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks-300x150.png\" \/>\n<meta name=\"author\" content=\"Sandro Brunner\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sandro Brunner\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/\"},\"author\":{\"name\":\"Sandro Brunner\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/99f82e9c9e266cab97fb4fdcec230d05\"},\"headline\":\"OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4\",\"datePublished\":\"2013-11-05T16:00:48+00:00\",\"dateModified\":\"2014-04-22T11:28:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/\"},\"wordCount\":850,\"commentCount\":3,\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks-300x150.png\",\"keywords\":[\"CentOS\",\"CentOS 6.4\",\"grizzly\",\"multi-node\",\"openstack\",\"puppet\",\"StackForge\"],\"articleSection\":[\"Articles\",\"HowTos\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/\",\"name\":\"OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4 - Service Engineering (ICCLab &amp; SPLab)\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks-300x150.png\",\"datePublished\":\"2013-11-05T16:00:48+00:00\",\"dateModified\":\"2014-04-22T11:28:47+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/99f82e9c9e266cab97fb4fdcec230d05\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#primaryimage\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks.png\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks.png\",\"width\":948,\"height\":476,\"caption\":\"Node and Networks\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/icclab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/\",\"name\":\"Service Engineering (ICCLab &amp; SPLab)\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/99f82e9c9e266cab97fb4fdcec230d05\",\"name\":\"Sandro Brunner\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/03\/IMG_0234.jpg\",\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/03\/IMG_0234.jpg\",\"contentUrl\":\"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/03\/IMG_0234.jpg\",\"caption\":\"Sandro Brunner\"},\"url\":\"https:\/\/blog.zhaw.ch\/icclab\/author\/brnr\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4 - Service Engineering (ICCLab &amp; SPLab)","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:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/","og_locale":"en_US","og_type":"article","og_title":"OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4","og_description":"This blog post describes the installation of OpenStack Grizzly with help of the Stackforge Puppet-Modules on CentOS 6.4 - with the use of network namespaces. The setup consists of a controller\/network and a compute node. Of course additional compute nodes can later be added as needed.","og_url":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/","og_site_name":"Service Engineering (ICCLab &amp; SPLab)","article_published_time":"2013-11-05T16:00:48+00:00","article_modified_time":"2014-04-22T11:28:47+00:00","og_image":[{"url":"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks-300x150.png","type":"","width":"","height":""}],"author":"Sandro Brunner","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sandro Brunner","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/"},"author":{"name":"Sandro Brunner","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/99f82e9c9e266cab97fb4fdcec230d05"},"headline":"OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4","datePublished":"2013-11-05T16:00:48+00:00","dateModified":"2014-04-22T11:28:47+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/"},"wordCount":850,"commentCount":3,"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks-300x150.png","keywords":["CentOS","CentOS 6.4","grizzly","multi-node","openstack","puppet","StackForge"],"articleSection":["Articles","HowTos"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/","url":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/","name":"OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4 - Service Engineering (ICCLab &amp; SPLab)","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#primaryimage"},"image":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#primaryimage"},"thumbnailUrl":"http:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks-300x150.png","datePublished":"2013-11-05T16:00:48+00:00","dateModified":"2014-04-22T11:28:47+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/99f82e9c9e266cab97fb4fdcec230d05"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#primaryimage","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks.png","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2013\/11\/hosts_and_networks.png","width":948,"height":476,"caption":"Node and Networks"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/icclab\/openstack-grizzly-multi-node-installation-with-stackforge-puppet-modules-on-centos-6-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/icclab\/"},{"@type":"ListItem","position":2,"name":"OpenStack Grizzly Multi-Node Installation with Stackforge Puppet-Modules on CentOS 6.4"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/icclab\/#website","url":"https:\/\/blog.zhaw.ch\/icclab\/","name":"Service Engineering (ICCLab &amp; SPLab)","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/icclab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/icclab\/#\/schema\/person\/99f82e9c9e266cab97fb4fdcec230d05","name":"Sandro Brunner","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/03\/IMG_0234.jpg","url":"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/03\/IMG_0234.jpg","contentUrl":"https:\/\/blog.zhaw.ch\/icclab\/files\/2014\/03\/IMG_0234.jpg","caption":"Sandro Brunner"},"url":"https:\/\/blog.zhaw.ch\/icclab\/author\/brnr\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/3689","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/users\/80"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/comments?post=3689"}],"version-history":[{"count":3,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/3689\/revisions"}],"predecessor-version":[{"id":4728,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/posts\/3689\/revisions\/4728"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/media?parent=3689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/categories?post=3689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/tags?post=3689"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/icclab\/wp-json\/wp\/v2\/features?post=3689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}