Cherry-pick changes from release-0.2.

* Prepare documentation for a release-0.2
  Update git clone information, rename murano-manual to
  developers-guide, update known issues
  I90423126b5e4a49ef424fcf63373de5472804235
* Add user-guide draft. Exclude screenshots
  I1d5fa671b8a2eefcc4887ec177702c9e04ef8584
* Fix last typos and remarks in developers guide
  Also User guide was filled in with screenshots and updated
  with new information.
  I5e2592087c142202fe03db2123d0fe91dd9669de
* Murano Deployment Guide renamed and updated.
  Ia7b14e7dc79c2721901d3a1a5c53c9334335c12a
* Fix incorrent sentence
  Ib781c3ca247b91aebf5031e4ec8997e8277c6574
* Alpha version of murano user guide
  I88c8ad45e6f4a7a3d8c0f42579dba252c479372d
* Add forgetten images
  I5aba9d88ad70b100e45a6a0c278054b93dc4f1bf
* Developers Guide pom.xml was accidentally deleted
  I6e966105711394d0fe9426ac78e68c4dea8d728f
* Add getting-started guide
  Also changed:
  1) User guide updated: table with service description
  for AD was added
  2) Add information for configuration OPENSTACK_HOST
  in installation guide
  3) Some style for this documents was added
  Iaff2b841990e10e8c2cfd657a01ca76514491f10

Change-Id: Ic0ac44675999aca3e872c1762e4a1d7f1553f5f2
This commit is contained in:
Timur Sufiev 2013-09-10 16:09:18 +04:00
parent d1d156ac4a
commit cae29398c8
118 changed files with 4026 additions and 2702 deletions
README.rst
site
src

@ -6,8 +6,9 @@ Murano project. It includes:
* API Specification
* Architecture
* Installation
For more details, see the `Murano <http://murano.mirantis.com>`_.
For more details, see the `Murano <http://murano-docs.github.io>`_.
Prerequisites
@ -32,19 +33,18 @@ The different manuals are in subdirectories of the
To build a specific guide, look for a ``pom.xml`` file within a subdirectory,
then run the ``mvn`` command in that directory. For example::
cd docs/src/murano-manual
cd docs/src/developers-guide
mvn clean generate-sources
The generated PDF documentation file is::
docs/src/murano-manual/src/target/docbkx/pdf/murano-manual.pdf
docs/src/developers-guide/src/target/docbkx/pdf/developers-guide.pdf
The root of the generated HTML documentation is::
docs/src/murano-manual/src/target/docbkx/webhelp/murano-manual/content/index.html
docs/src/developers-guide/src/target/docbkx/webhelp/developers-guide/content/index.html
Installing
==========
Refer to http://murano.openstack.org to see where these documents are published
and to learn more about the Murano project.
Refer to http://murano.openstack.org Learn more about the Murano project.

@ -1,125 +0,0 @@
.ddsmoothmenu{
margin-top: 20px
}
.ddsmoothmenu ul{
z-index:100;
margin: 0;
padding: 0;
list-style-type: none;
}
/*Top level list items*/
.ddsmoothmenu ul li{
position: relative;
display: inline;
float: left;
}
/*Top level menu link items style*/
.ddsmoothmenu ul li a {
display: block;
height: 23px;
width: 74px;
margin-left: 5px;
line-height: 23px;
font-size: 13px;
font-family: Georgia, "Times New Roman", Times, serif;
color: #a9a2a2;
text-align: center;
text-decoration: none;
font-weight: 400;
outline: none;
}
* html .ddsmoothmenu ul li a{ /*IE6 hack to get sub menu links to behave correctly*/
display: inline-block;
}
.ddsmoothmenu ul li a.selected, .ddsmoothmenu ul li a:hover { /*CSS class that's dynamically added to the currently active menu items' LI A element*/
color: #f00;
background: url(../images/templatemo_menu_hover.png)
}
/*1st sub level menu*/
.ddsmoothmenu ul li ul {
position: absolute;
width: 160px;
margin: 10px 0 0 5px;
left: 0;
display: none; /*collapse all sub menus to begin with*/
visibility: hidden;
background: url(../images/templatemo_smm.png) repeat-y
}
.ddsmoothmenu ul li ul span.top { position: absolute; width: 160px; height: 5px; top: -5px; left: 0; background: url(../images/templatemo_smt.png) no-repeat; }
.ddsmoothmenu ul li ul span.bottom { position: absolute; width: 160px; height: 5px; bottom: -5px; left: 0; background: url(../images/templatemo_smb.png) no-repeat; }
/*Sub level menu list items (undo style from Top level List Items)*/
.ddsmoothmenu ul li ul li{
display: list-item;
float: none;
}
/*All subsequent sub menu levels vertical offset after 1st level sub menu */
.ddsmoothmenu ul li ul li ul{
top: 0;
}
/* Sub level menu links style */
.ddsmoothmenu ul li ul li a{
font-weight: 500;
width: 140px; /*width of sub menus*/
height: 28px;
line-height: 28px;
margin: 0 10px;
font-size: 12px;
text-align: left;
background: none;
color: #a9a2a2;
border-bottom: 1px solid #151515
}
.ddsmoothmenu ul li ul li .last {
border-bottom: none;
}
.ddsmoothmenu ul li ul li a.selected, .ddsmoothmenu ul li ul li a:hover {
color: #f00;
width: 129px;
margin-left: 11px;
background: none;
}
/* Holly Hack for IE \*/
* html .ddsmoothmenu{height: 1%;} /*Holly Hack for IE7 and below*/
/* ######### CSS classes applied to down and right arrow images ######### */
.downarrowclass{
position: absolute;
top: 12px;
right: 7px;
}
.rightarrowclass{
position: absolute;
top: 6px;
right: 5px;
}
/* ######### CSS for shadow added to sub menus ######### */
.ddshadow{
position: absolute;
left: 0;
top: 0;
width: 0;
height: 0;
}
.toplevelshadow{ /*shadow opacity. Doesn't work in IE*/
opacity: 0.5;
}
/* menu */

@ -1,202 +0,0 @@
/* line 7, ../sass/lightbox.sass */
body:after {
content: url(../images/close.png) url(../images/loading.gif) url(../images/prev.png) url(../images/next.png);
display: none;
}
/* line 11, ../sass/lightbox.sass */
.lightboxOverlay {
position: absolute;
top: 0;
left: 0;
z-index: 9999;
background-color: black;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
opacity: 0.8;
display: none;
}
/* line 20, ../sass/lightbox.sass */
.lightbox {
position: absolute;
left: 0;
width: 100%;
z-index: 10000;
text-align: center;
line-height: 0;
font-weight: normal;
}
/* line 28, ../sass/lightbox.sass */
.lightbox .lb-image {
display: block;
height: auto;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-ms-border-radius: 3px;
-o-border-radius: 3px;
border-radius: 3px;
}
/* line 32, ../sass/lightbox.sass */
.lightbox a img {
border: none;
}
/* line 35, ../sass/lightbox.sass */
.lb-outerContainer {
position: relative;
background-color: white;
*zoom: 1;
width: 250px;
height: 250px;
margin: 0 auto;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
-ms-border-radius: 4px;
-o-border-radius: 4px;
border-radius: 4px;
}
/* line 38, ../../../../.rvm/gems/ruby-1.9.3-p392/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss */
.lb-outerContainer:after {
content: "";
display: table;
clear: both;
}
/* line 44, ../sass/lightbox.sass */
.lb-container {
padding: 4px;
}
/* line 47, ../sass/lightbox.sass */
.lb-loader {
position: absolute;
top: 43%;
left: 0%;
height: 25%;
width: 100%;
text-align: center;
line-height: 0;
}
/* line 56, ../sass/lightbox.sass */
.lb-cancel {
display: block;
width: 32px;
height: 32px;
margin: 0 auto;
background: url(../images/loading.gif) no-repeat;
}
/* line 63, ../sass/lightbox.sass */
.lb-nav {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: 10;
}
/* line 71, ../sass/lightbox.sass */
.lb-container > .nav {
left: 0;
}
/* line 74, ../sass/lightbox.sass */
.lb-nav a {
outline: none;
}
/* line 77, ../sass/lightbox.sass */
.lb-prev, .lb-next {
width: 49%;
height: 100%;
cursor: pointer;
/* Trick IE into showing hover */
display: block;
}
/* line 84, ../sass/lightbox.sass */
.lb-prev {
left: 0;
float: left;
}
/* line 87, ../sass/lightbox.sass */
.lb-prev:hover {
background: url(../images/prev.png) left 48% no-repeat;
}
/* line 90, ../sass/lightbox.sass */
.lb-next {
right: 0;
float: right;
}
/* line 93, ../sass/lightbox.sass */
.lb-next:hover {
background: url(../images/next.png) right 48% no-repeat;
}
/* line 96, ../sass/lightbox.sass */
.lb-dataContainer {
margin: 0 auto;
padding-top: 5px;
*zoom: 1;
width: 100%;
-moz-border-radius-bottomleft: 4px;
-webkit-border-bottom-left-radius: 4px;
border-bottom-left-radius: 4px;
-moz-border-radius-bottomright: 4px;
-webkit-border-bottom-right-radius: 4px;
border-bottom-right-radius: 4px;
}
/* line 38, ../../../../.rvm/gems/ruby-1.9.3-p392/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.scss */
.lb-dataContainer:after {
content: "";
display: table;
clear: both;
}
/* line 103, ../sass/lightbox.sass */
.lb-data {
padding: 0 4px;
color: #bbbbbb;
}
/* line 106, ../sass/lightbox.sass */
.lb-data .lb-details {
width: 85%;
float: left;
text-align: left;
line-height: 1.1em;
}
/* line 111, ../sass/lightbox.sass */
.lb-data .lb-caption {
font-size: 13px;
font-weight: bold;
line-height: 1em;
}
/* line 115, ../sass/lightbox.sass */
.lb-data .lb-number {
display: block;
clear: left;
padding-bottom: 1em;
font-size: 12px;
color: #999999;
}
/* line 121, ../sass/lightbox.sass */
.lb-data .lb-close {
display: block;
float: right;
width: 30px;
height: 30px;
background: url(../images/close.png) top right no-repeat;
text-align: right;
outline: none;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
opacity: 0.7;
}
/* line 130, ../sass/lightbox.sass */
.lb-data .lb-close:hover {
cursor: pointer;
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
opacity: 1;
}

@ -1,683 +0,0 @@
/*
Credit: http://www.templatemo.com
*/
body {
margin: 0;
padding: 0;
color: #6e6e6e;
font-family: Tahoma, Geneva, sans-serif;
font-size: 13px;
line-height: 1.4em;
background-color: #3b3939;
background-repeat: repeat-x;
background-position: top;
}
#home {
background-image: url(../images/templatemo_bg_homepage.jpg);
}
#subpage {
background-image: url(../images/templatemo_bg_subpage.jpg);
}
a, a:link, a:visited {
color: #7f0d0d;
font-weight: normal;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a.more {
display: inline-block;
padding-left: 12px;
background: url(../images/templatemo_list.png) no-repeat 0 4px;
}
p {
margin: 0 0 10px 0;
padding: 0;
}
img {
border: none;
}
blockquote {
font-style: italic;
margin: 0 0 0 10px;
}
cite {
font-weight: bold;
color:#000;
}
cite a, cite a:link, cite a:visited {
font-size: 12px;
text-decoration: none;
font-style: normal;
}
cite span {
font-weight: 400;
color: #7f0d0d;
}
h1, h2, h3, h4, h5, h6 { color: #2c2c2c; font-weight: normal; }
h1 { font-size: 48px; margin: 0 0 30px; padding: 5px 0 }
h2 { font-size: 30px; margin: 0 0 25px; padding: 5px 0 }
h3 { font-size: 24px; margin: 0 0 20px; padding: 0; }
h4 { font-size: 18px; margin: 0 0 15px; padding: 0; }
h5 { font-size: 16px; margin: 0 0 10px; padding: 0; }
h6 { font-size: 12px; margin: 0 0 5px; padding: 0; }
.cleaner { clear: both }
.h10 { height: 10px }
.h20 { height: 20px }
.h30 { height: 30px }
.h40 { height: 40px }
.h50 { height: 50px }
.divider { margin-bottom: 40px; padding-bottom: 20px; background: url(../images/templatemo_divider.png) repeat-x bottom; }
.image_fl { float: left; margin: 3px 20px 5px 0 }
.image_fr { float: right; margin: 3px 0 5px 20px }
.float_l { float: left }
.float_r { float: right }
.templatemo_list {
margin: 10px 0 10px 15px;
padding: 0;
list-style: none;
}
.templatemo_list li {
color:#52493a;
margin: 0 0 10px 0;
padding: 0 5px 0 15px;
background: url(../images/templatemo_list.png) no-repeat scroll 0 4px;
}
.templatemo_list li a {
color: #52493a;
font-weight: normal;
}
.templatemo_list li a:hover {
color: #52493a;
}
#templatemo_header_wrapper {
width: 960px;
margin: 0 auto;
padding: 40px 10px 20px;
background: url(../images/templatemo_header_dividier.png) repeat-x bottom
}
#templatemo_slider {
width: 960px;
margin: 0 auto;
padding: 0 10px 10px;
}
#templatemo_main {
width: 960px;
margin: 0 auto;
padding: 40px 10px 20px;
background: #f6f3f3;
border: 1px solid #fff;
margin-bottom: 40px;
}
#content {
float: left;
width: 600px;
padding-right: 20px;
}
#sidebar {
float: right;
width: 300px;
}
#templatemo_bottom_wrapper {
width: 100%;
background: #272525;
}
#templatemo_bottom {
width: 960px;
margin: 0 auto;
padding: 0 10px 20px;
}
#templatemo_footer_wrapper {
width: 100%;
background: #181818;
}
#templatemo_footer {
width: 960px;
margin: 0 auto;
padding: 10px;
text-align: center;
position: relative;
}
.footer_img_link{
position: absolute;
margin: 0 0 0 -50px;
cursor: default;
}
#templatemo_footer a {
color: #6e6e6e;
}
#site_title {
float: left;
padding-right: 50px;
}
#site_title h1 {
margin: 0;
padding: 0;
}
#site_title h1 a {
display: block;
font-size: 12px;
width: 150px;
height: 45px;
color: #acacac;
text-indent: -10000px;
background: url(../images/templatemo_logo.png) no-repeat center left;
}
#templatemo_menu { float: right }
#slider-left-but {
display: block;
width: 30px;
height: 30px;
border: none;
background: url(../images/templatemo_slider_left.png);
margin-right: 10px;
}
#slider-right-but {
display: block;
width: 30px;
height: 30px;
border: none;
background: url(../images/templatemo_slider_right.png);
}
.rp_pp {
margin-bottom: 10px;
padding-bottom: 10px;
border-bottom: 1px dotted #ced4dc;
}
.rp_pp img {
float: left;
margin-right: 15px;
border: 3px solid #fff;
}
.rp_pp p {
font-size: 10px;
}
.about_box {
clear: both;
margin-bottom: 40px;
}
.about_box img {
float: left;
margin-right: 40px;
}
.about_box h4 {
font-size: 14px;
font-weight: bold;
font-style: italic;
margin-bottom: 0px;
}
p.position {
color: #f3a706;
font-weight: bold;
font-size: 12px;
font-style: italic;
margin-bottom: 10px;
}
.recent_post {
margin: 0;
padding:0;
list-style: none;
}
.recent_post li {
margin: 0 0 15px;
padding: 0 0 15px;
font-size: 11px;
border-bottom: 1px solid #ccc;
}
.recent_post li a {
display: block;
font-weight: 700;
}
.post {
clear: both;
margin-bottom: 60px;
}
.post img {
margin-bottom: 10px;
}
.post h2.home {
color: #ba8c00;
font-size: 18px;
margin-bottom: 0;
}
.post h2 {
margin-bottom: 0;
line-height: 38px;
border-bottom: 1px solid #999;
margin-bottom: 20px;
}
.post .meta {
font-size: 10px;
margin-bottom: 20px;
border: 1px solid #ccc;
border-left: none;
border-right: none;
}
.post .meta span {
float: left;
display: block;
margin-right: 20px;
padding: 5px 0 5px 30px;
}
.post .meta span.admin {
background: url(../images/agent.png) no-repeat;
}
.post .meta span.date {
background: url(../images/calendar.png) no-repeat;
}
.post .meta span.tag {
background: url(../images/tag.png) no-repeat;
}
.post .meta span.comment {
background: url(../images/chat.png) no-repeat;
}
.post .meta span.more_but {
float: right;
}
.post .meta span.more_but a {
color: #7f0d0d;
}
.post .meta a, .post .meta strong {
color: #7b7b7b;
font-weight: 700;
}
#comment_section {
clear: both;
margin-bottom: 60px;
width: 538px;
}
.first_level {
margin: 0; padding: 0;
}
.comments {
list-style: none;
}
.comments li {
margin-bottom: 10px;
list-style:none;
}
.comments li .commentbox1 {
border: 1px solid #d7cfbe;
}
.comments li .commentbox2 {
border: 1px solid #ccc;
}
.comments li .comment_box {
clear: both;
width:100%;
padding: 10px 30px 20px 30px;
margin-bottom: 40px;
}
.comment_box .gravatar {
float: left;
width: 75px;
margin-right: 30px;
}
.comment_box .gravatar img {
width: 75px;
height: 75px;
}
.comment_box .comment_text { }
.comment_box .comment_text p {
margin: 0;
}
.comment_text .comment_author {
font-size: 14px;
font-weight: bold;
color: #7f0d0d;
margin-bottom: 10px;
}
.comment_text .date {
font-size: 12px;
font-weight: normal;
color: #7b7b7b;
padding-left: 10px;
}
.comment_text .time {
font-size: 12px;
font-weight: normal;
color: #7b7b7b;
padding-left: 10px;
}
.comment_text .reply a {
display: block;
clear: both;
float: right;
color: #444;
font-weight: 700;
}
#comment_form {
clear: both;
}
#comment_form h3 {
font-size: 20px;
border-bottom: 1px solid #1b1b1b;
margin-bottom: 15px;
padding-bottom: 10px;
}
#comment_form form {
}
#comment_form textarea {
color: #000;
background:#fff;
border: 1px solid #ccc;
height:150px;
padding:5px;
width: 360px;
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
margin-top: 5px;
}
#comment_form .form_row {
width: 100%;
margin-bottom: 15px;
}
#comment_form form input {
color: #000;
padding: 5px;
width: 200px;
background:#fff;
border: 1px solid #ccc;
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
margin-top: 5px;
}
#comment_form .submit_btn {
width: 80px;
height: 30px;
color: #000;
background:#fff;
border: 1px solid #ccc;
}
.gallery_box {
margin-bottom: 40px;
}
.gallery_box img {
margin-bottom: 10px;
}
.gallery_box h5 {
font-size: 12px;
font-weight: 700;
margin-bottom:0;
}
.gallery_box p {
font-size: 11px;
}
.testimonial {
padding: 0 0 20px 70px;
margin-bottom: 30px;
border-bottom: 1px dotted #ced4dc;
display: block;
background: url(../images/speech_bubble_grey.png) left top no-repeat;
}
#contact_form {
padding: 0;
width: 410px;
margin-bottom: 40px;
}
#contact_form form {
margin: 0px;
padding: 0px;
}
#contact_form form .input_field {
width: 270px;
padding: 5px;
color: #333;
background: #fff;
border: 1px solid #dedede;
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
margin-top: 5px;
}
#contact_form form label {
display: block;
width: 100px;
margin-right: 12px;
font-size: 12px;
}
#contact_form form textarea {
width: 398px;
height: 200px;
padding: 5px;
color: #333;
background: #fff;
border: 1px solid #dedede;
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
margin-top: 5px;
}
#contact_form form .submit_btn {
display: block;
width: 80px;
height: 25px;
background: url(../images/templatemo_button_02.png);
border: 1px solid #bb4d17;
color: #fff;
font-size:13px;
border: none;
margin: 10px 0px;
}
#templatemo_bottom h4 {
display: block;
position: relative;
height: 27px;
padding-top: 5px;
margin-left: 27px;
color: #fff;
background:url(../images/templatemo_footer_header_right.png) no-repeat right
}
#templatemo_bottom h4 span {
position: absolute;
top: 0;
left: -27px;
width: 27px;
height: 32px;
background: url(../images/templatemo_footer_header_left.png) no-repeat left;
}
#templatemo_bottom .bottom_box {
padding: 0 30px;
}
#templatemo_bottom a {
color: #aca6a6;
}
.footer_list {
margin: 0;
padding: 0;
list-style: none;
}
.footer_list li {
margin: 0 0 5px;
padding: 0 0 5px;
border-bottom: 1px dotted #313030;
}
.footer_list li a {
color: #aca6a6;
}
.twitter_post {
margin: 0;
padding: 0;
list-style: none;
}
.twitter_post li {
margin: 0 0 10px;
padding: 0 0 7px;
border-bottom: 1px dotted #313030;
}
.footer_social_button {
clear: both;
margin-bottom: 40px;
}
.footer_social_button a {
margin-right: 5px;
}
.col {
float: left;
margin: 0 20px 20px 0;
}
.half {
width: 450px;
}
#sidebar, .one_third {
width: 300px;
}
.two-third {
width: 620px;
}
.padding_right {
padding-right: 20px;
}
.one_fourth {
width: 220px;
}
.no_margin_right {
margin-right: 0;
}
.last_box {
margin-bottom: 0;
background: none;
}
.pagging {
margin: 0 0 20px;
padding: 0;
}
.pagging ul {
margin: 0;
padding: 0;
list-style: none;
}
.pagging ul li {
margin: 0;
padding: 0;
display: inline;
}
.pagging ul li a {
float: left;
display: block;
color: #333;
text-decoration: none;
margin-right: 5px;
padding: 5px 10px;
background: #fff;
border: 1px solid #ccc;
}
.pagging ul li a:hover {
background: #7f0d0d;
border: 1px solid #fff;
color: #fff;
}

Binary file not shown.

Before

(image error) Size: 280 B

Binary file not shown.

Before

(image error) Size: 8.3 KiB

Binary file not shown.

Before

(image error) Size: 1.3 KiB

Binary file not shown.

Before

(image error) Size: 1.3 KiB

Binary file not shown.

Before

(image error) Size: 32 KiB

Binary file not shown.

Before

(image error) Size: 5.7 KiB

Binary file not shown.

Before

(image error) Size: 34 KiB

Binary file not shown.

Before

(image error) Size: 5.9 KiB

Binary file not shown.

Before

(image error) Size: 47 KiB

Binary file not shown.

Before

(image error) Size: 9.9 KiB

Binary file not shown.

Before

(image error) Size: 49 KiB

Binary file not shown.

Before

(image error) Size: 10 KiB

Binary file not shown.

Before

(image error) Size: 48 KiB

Binary file not shown.

Before

(image error) Size: 9.2 KiB

Binary file not shown.

Before

(image error) Size: 52 KiB

Binary file not shown.

Before

(image error) Size: 11 KiB

Binary file not shown.

Before

(image error) Size: 30 KiB

Binary file not shown.

Before

(image error) Size: 6.5 KiB

Binary file not shown.

Before

(image error) Size: 26 KiB

Binary file not shown.

Before

(image error) Size: 5.7 KiB

Binary file not shown.

Before

(image error) Size: 4.2 KiB

Binary file not shown.

Before

(image error) Size: 3.1 KiB

Binary file not shown.

Before

(image error) Size: 268 B

Binary file not shown.

Before

(image error) Size: 233 B

Binary file not shown.

Before

(image error) Size: 353 B

Binary file not shown.

Before

(image error) Size: 470 B

Binary file not shown.

Before

(image error) Size: 114 B

Binary file not shown.

Before

(image error) Size: 192 B

Binary file not shown.

Before

(image error) Size: 2.3 KiB

Binary file not shown.

Before

(image error) Size: 215 B

Binary file not shown.

Before

(image error) Size: 385 B

Binary file not shown.

Before

(image error) Size: 406 B

Binary file not shown.

Before

(image error) Size: 183 B

Binary file not shown.

Before

(image error) Size: 122 B

Binary file not shown.

Before

(image error) Size: 190 B

@ -1,110 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Murano Documentation</title>
<link href="css/templatemo_style.css" rel="stylesheet" type="text/css" />
<link href="css/lightbox.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="css/ddsmoothmenu.css" />
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="js/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript" src="js/lightbox-2.6.min.js"></script>
<script type="text/javascript" src="js/modernizr.custom.js"></script>
<!-- Load the CloudCarousel JavaScript file -->
<script type="text/JavaScript" src="js/cloud-carousel.1.0.5.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// This initialises carousels on the container elements specified, in this case, carousel1.
$("#carousel1").CloudCarousel(
{
reflHeight: 40,
reflGap:2,
titleBox: $('#da-vinci-title'),
altBox: $('#da-vinci-alt'),
buttonLeft: $('#slider-left-but'),
buttonRight: $('#slider-right-but'),
yRadius:30,
xPos: 480,
yPos: 32,
speed:0.15,
}
);
});
</script>
</head>
<body id="home">
<div id="templatemo_header_wrapper">
<div id="site_title"><h1><a href="http://murano.github.io">Murano Documentation</a></h1></div>
<div id="templatemo_menu" class="ddsmoothmenu">
<ul>
<li><a href="index.html" class="selected">Docs</a></li>
<li><a href="https://wiki.openstack.org/wiki/Murano">Wiki</a>
<li><a href="http://launchpad.net/murano">Launchpad</a></li>
</ul>
<br style="clear: left" />
</div> <!-- end of templatemo_menu -->
<div class="cleaner"></div>
</div> <!-- END of templatemo_header_wrapper -->
<div id="templatemo_slider">
<!-- This is the container for the carousel. -->
<div id = "carousel1" style="width:960px; height:280px;background:none;overflow:scroll; margin-top: 20px">
<!-- All images with class of "cloudcarousel" will be turned into carousel items -->
<!-- You can place links around these images -->
<a href="images/slider/01.png" data-lightbox="image-01"><img class="cloudcarousel" src="images/slider/01_small.png" /></a>
<a href="images/slider/02.png" data-lightbox="image-02"><img class="cloudcarousel" src="images/slider/02_small.png" /></a>
<a href="images/slider/03.png" data-lightbox="image-03"><img class="cloudcarousel" src="images/slider/03_small.png" /></a>
<a href="images/slider/04.png" data-lightbox="image-04"><img class="cloudcarousel" src="images/slider/04_small.png" /></a>
<a href="images/slider/05.png" data-lightbox="image-05"><img class="cloudcarousel" src="images/slider/05_small.png" /></a>
<a href="images/slider/06.png" data-lightbox="image-06"><img class="cloudcarousel" src="images/slider/06_small.png" /></a>
<a href="images/slider/07.png" data-lightbox="image-07"><img class="cloudcarousel" src="images/slider/07_small.png" /></a>
<a href="images/slider/08.png" data-lightbox="image-08"><img class="cloudcarousel" src="images/slider/08_small.png" /></a>
</div>
<!-- Define left and right buttons. -->
<center>
<input id="slider-left-but" type="button" value="" />
<input id="slider-right-but" type="button" value="" />
</center>
</div>
<div id="templatemo_main">
<div class="col one_third fp_services">
<h2>Overview</h2>
<p>
Mirantis proposes to introduce a new service which will allow a non-experienced user to deploy
reliable Windows based environments in a “push-the-button” manner. The key goal is to provide a UI
and API enabling the deployment and operation of Windows Environments at the Windows Services
abstraction level. The service should be able to orchestrate complex circular dependent cases in
order to set up a complex Windows Environment with multiple dependant services.
</p>
</div>
<div class="col one_third fp_services">
<h2>Key Features</h2>
<ul>
<li><p>Native to OpenStack</p></li>
<li><p>Introduces abstraction level for Windows Environments</p></li>
<li><p>Supports Availability Zones and Disaster Recovery scenarios</p></li>
<li><p>Uses native Windows features for HA solutions</p></li>
</ul>
</div>
<div class="col one_third no_margin_right fp_services">
<h2>Manuals</h2>
<ul>
<li><a href="docs/murano-manual/content/ch01.html">User Manual</a> (<a href="docs/murano-manual/murano-manual.pdf">download pdf</a>)</li>
<li><a href="docs/murano-deployment-guide/content/ch01.html">Deployment Guide</a> (<a href="docs/murano-deployment-guide/murano-deployment-guide.pdf">download pdf</a>)</li>
</ul>
</div>
<div class="cleaner"></div>
</div> <!-- END of templatemo_main -->
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -19,10 +19,10 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mirantis.murano</groupId>
<artifactId>murano-deployment-guide</artifactId>
<artifactId>administrators-guide</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Murano Deployment Guide</name>
<name>Murano Administrator's Guide</name>
<build>
<plugins>
<plugin>

@ -0,0 +1,948 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<book xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<info>
<title>Murano Administrator's Guide</title>
<author>
<personname>
<firstname/>
<surname/>
</personname>
<affiliation>
<orgname>Mirantis, Inc.</orgname>
</affiliation>
</author>
<copyright>
<year>2013</year>
<holder>Mirantis, Inc.</holder>
</copyright>
<releaseinfo>v0.2</releaseinfo>
<productname>Murano™</productname>
<pubdate>2013-09-05</pubdate>
<legalnotice role="apache2">
<annotation>
<remark> Copyright details are filled in by the template. Change the value of the
role attribute on the legalnotice element to change the license. </remark>
</annotation>
</legalnotice>
<abstract>
<para> This document is intended for individuals who wish to install and use our product
or intend to contribute. </para>
</abstract>
<cover>
<para>this is a placeholder for the front cover</para>
</cover>
<cover>
<para>this is a placeholder for the back cover</para>
</cover>
</info>
<chapter xml:id="_general_deployment_steps">
<title>General Deployment Steps</title>
<section xml:id="_configure_your_environment">
<title>Prepare A Lab For Murano</title>
<para>This section provides basic information about lab's system requirements. It also
contains a description of a test which you may use to check if your hadrware fits
the requirements. To do this, run the test and compare the results with baseline
data provided.</para>
<section xml:id="_lab_requirements">
<title>Lab Requirements</title>
<table xml:id="_hardware_requirements" frame="all">
<title>Hardware requirements</title>
<tgroup cols="3" align="left" rowsep="1" colsep="1">
<colspec colname="col1" colwidth="1*"/>
<colspec colname="col2" colwidth="3*"/>
<colspec colname="col3" colwidth="3*"/>
<thead>
<row>
<entry>Criteria</entry>
<entry>Minimal</entry>
<entry>Recommended</entry>
</row>
</thead>
<tbody>
<row>
<entry>CPU</entry>
<entry>4 core @ 2.4 GHz</entry>
<entry>24 core @ 2.67 GHz</entry>
</row>
<row>
<entry>RAM</entry>
<entry>8 GB</entry>
<entry>24 GB or more</entry>
</row>
<row>
<entry>HDD</entry>
<entry>2 x 500 GB (7200 rpm)</entry>
<entry>4 x 500 GB (7200 rpm)</entry>
</row>
<row>
<entry>RAID</entry>
<entry>Software RAID-1 (use mdadm as it will improve read
performance almost two times)
</entry>
<entry>Hardware RAID-10</entry>
</row>
</tbody>
</tgroup>
</table>
<para>There are a few possible storage configurations except the shown above. All of
them were tested and were working well.</para>
<para>
<itemizedlist>
<listitem>
<para>1x SSD 500+ GB</para>
</listitem>
<listitem>
<para>1x HDD (7200 rpm) 500+ GB and 1x SSD 250+ GB (install the system
onto the HDD and mount the SSD drive to folder where VM images
are)</para>
</listitem>
<listitem>
<para>1x HDD (15000 rpm) 500+ GB</para>
</listitem>
</itemizedlist>
</para>
<para>The list of OSes which we used in our lab is shown below.</para>
<table xml:id="_software_requirements" frame="all">
<title>OS Requirements</title>
<tgroup cols="1" align="left" rowsep="1" colsep="1">
<colspec colname="col1" colwidth="1*"/>
<thead>
<row>
<entry>List</entry>
</row>
</thead>
<tbody>
<row>
<entry>Ubuntu Server 12.04 LTS</entry>
</row>
</tbody>
</tgroup>
</table>
</section>
<section xml:id="_how_to_test_your_host_performance">
<title>Test Your Lab Host Performance</title>
<para>We have measured time required to boot 1 to 5 instances of Windows system simultaneously. You
can use this data as the baseline to check if your system is fast enough.
</para>
<para>You should use sysprepped images for this test, to simulate VM first boot.</para>
<para>Steps to reproduce test:</para>
<orderedlist numeration="arabic">
<listitem>
<para>
Prepare Windows 2012 Standard (with GUI) image in QCOW2 format. Let's assume that its
name is ws-2012-std.qcow2
</para>
</listitem>
<listitem>
<para> Ensure that there is NO KVM PROCESSES on the host. To do this, run
command:
<screen>># ps aux | grep kvm </screen></para>
</listitem>
<listitem>
<para>
Make 5 copies of Windows image file:
</para>
<screen>># for i in $(seq 5); do cp ws-2012-std.qcow2 ws-2012-std-$i.qcow2; done</screen>
</listitem>
<listitem>
<para>
Create script start-vm.sh in the folder with .qcow2 files:
</para>
<screen>#!/bin/bash
[ -z $1 ] || echo "VM count not provided!"; exit 1
for i in $(seq $1); do
echo "Starting VM $i ..."
kvm \
-m 1024 \
-drive file=ws-2012-std-$i.qcow2,if=virtio \
-net user -net nic,model=virtio \
-nographic \
-usbdevice tablet \
-vnc :$i &amp;
done </screen>
</listitem>
<listitem>
<para>
Start ONE instance with command below (as root) and measure time between VM&#8217;s launch
and the moment when Server Manager window appears. To view VM&#8217;s desktop, connect with
VNC viewer to your host to VNC screen :1 (port 5901):
</para>
<screen>># ./start-vm.sh 1</screen>
</listitem>
<listitem>
<para>
Turn VM off. You may simply kill all KVM processes by
</para>
<screen>># killall kvm</screen>
</listitem>
<listitem>
<para>
Start FIVE instances with command below (as root) and measure time interval between ALL VM&#8217;s
launch and the moment when LAST Server Manager window appears. To view VM&#8217;s desktops,
connect with VNC viewer to your host to VNC screens :1 thru :5 (ports 5901-5905):
</para>
<screen>># ./start-vm.sh 5</screen>
</listitem>
<listitem>
<para>
Turn VMs off. You may simply kill all KVM processes by
</para>
<screen>># killall kvm</screen>
</listitem>
</orderedlist>
</section>
<section xml:id="_baseline_data">
<title>Baseline Bata</title>
<para>The table below provides baseline data which we've got in our
environment.</para>
<para><emphasis role="bold">Avg. Time</emphasis> refers to the lab with recommended
hardware configuration, while <emphasis role="bold">Max. Time</emphasis> refers
to minimal hardvare configuration.</para>
<informaltable
frame="all"
rowsep="1" colsep="1"
>
<tgroup cols="3">
<colspec colname="col_1" colwidth="33*"/>
<colspec colname="col_2" colwidth="33*"/>
<colspec colname="col_3" colwidth="33*"/>
<thead>
<row>
<entry/>
<entry>Boot ONE instance</entry>
<entry>Boot FIVE instances</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top">
<para>Avg. Time</para>
</entry>
<entry align="left" valign="top">
<para>3m:40s</para>
</entry>
<entry align="left" valign="top">
<para>8m</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>Max. Time</para>
</entry>
<entry align="left" valign="top">
<para>5m</para>
</entry>
<entry align="left" valign="top">
<para>20m</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="_host_optimizations">
<title>Host Optimizations</title>
<para>Default KVM installation could be improved to provide better
performance.</para>
<para>The following optimizations may improve host performance up to 30%:</para>
<itemizedlist>
<listitem>
<para>
change default scheduler from
<emphasis role="strong">CFQ</emphasis>
to
<emphasis role="strong">Deadline</emphasis>
</para>
</listitem>
<listitem>
<para>
use
<emphasis role="strong">ksm</emphasis>
</para>
</listitem>
<listitem>
<para>
use
<emphasis role="strong">vhost-net</emphasis>
</para>
</listitem>
</itemizedlist>
</section>
</section>
<section xml:id="_install_software">
<title>Install OpenStack</title>
<para>Currently we use Devstack (<link xlink:href="http://devstack.org/">http://devstack.org/</link>) to
build our lab environment.
</para>
<para>Use Devstack's guide to install single VM OpenStack (<link
xlink:href="http://devstack.org/guides/single-vm.html">
http://devstack.org/guides/single-vm.html</link>) </para>
<formalpara>
<title>localrc example</title>
<para>
<screen>HOST_IP=
FLAT_INTERFACE=
FLOATING_RANGE=
ADMIN_PASSWORD=swordfish
MYSQL_PASSWORD=swordfish
RABBIT_PASSWORD=swordfish
SERVICE_PASSWORD=swordfish
SERVICE_TOKEN=tokentoken
ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng
# Image's cache is in $TOP_DIR/files
IMAGE_URLS+=",http://fedorapeople.org/groups/heat/prebuilt-jeos-images/F17-x86_64-cfntools.qcow2"
# /etc/nova/nova.conf
EXTRA_OPTS=(force_config_drive=true libvirt_images_type=qcow2 force_raw_images=false)
# Logging
SCREEN_LOGDIR=/opt/stack/log/
LOGFILE=$SCREEN_LOGDIR/stack.sh.log </screen>
</para>
</formalpara>
<para>If you need to image builder only, then install only packages required to run
<emphasis role="strong">KVM</emphasis>
(see below).
</para>
</section>
<section xml:id="_configure_openstack_installation">
<title>Configure OpenStack</title>
<para>New OpenStack installation requires configuration. However, if you are using
Devstack, then it's have been done.</para>
<para>Otherwise, configure your OpenStack before proceed.</para>
</section>
</chapter>
<chapter>
<title>Install Murano Components</title>
<para>Murano Components installation notes are described in Murano developer's guide. Please
consult that document.</para>
</chapter>
<chapter xml:id="_build_windows_image">
<title>Prepare Image Builder</title>
<para>Murano requires a Windows Image in QCOW2 format to be builded and uploaded into
Glance.</para>
<para>The easiest way to build Windows image for use with Murano is to build it right on the
host where your OpenStack is installed.</para>
<section xml:id="_image_builder">
<title>Image Builder</title>
<para>The following packages should be installed on any host which will be used to build
Windows Image.</para>
<section>
<title>Install Required Packages</title>
<note>
<para>Please check that hardware virtualization supported and enabled in
BIOS.</para>
</note>
<table frame="all" rowsep="1" colsep="1">
<title>Required Packages</title>
<tgroup cols="2">
<colspec colname="col_1" colwidth="50*"/>
<colspec colname="col_2" colwidth="50*"/>
<thead>
<row>
<entry>Package Name</entry>
<entry>Package Version</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top">
<para>ipxe-qemu</para>
</entry>
<entry align="left" valign="top">
<para>1.0.0+git-4.d6b0b76-0ubuntu2</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>kvm-ipxe</para>
</entry>
<entry align="left" valign="top">
<para>1.0.0+git-4.d6b0b76-0ubuntu2</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>qemu-kvm</para>
</entry>
<entry align="left" valign="top">
<para>1.4.0+dfsg-1expubuntu4</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>munin-libvirt-plugins</para>
</entry>
<entry align="left" valign="top">
<para>0.0.6-1</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>python-libvirt</para>
</entry>
<entry align="left" valign="top">
<para>1.0.2-0ubuntu11</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>libvirt-bin</para>
</entry>
<entry align="left" valign="top">
<para>1.0.2-0ubuntu11</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>libvirt0</para>
</entry>
<entry align="left" valign="top">
<para>1.0.2-0ubuntu11</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>munin-libvirt-plugins</para>
</entry>
<entry align="left" valign="top">
<para>0.0.6-1</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>python-libvirt</para>
</entry>
<entry align="left" valign="top">
<para>1.0.2-0ubuntu11</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>virt-goodies</para>
</entry>
<entry align="left" valign="top">
<para>0.4-2</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>virt-manager</para>
</entry>
<entry align="left" valign="top">
<para>0.9.4-2ubuntu3</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>virt-top</para>
</entry>
<entry align="left" valign="top">
<para>1.0.7-1</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>virt-what</para>
</entry>
<entry align="left" valign="top">
<para>1.12-1</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>virtinst</para>
</entry>
<entry align="left" valign="top">
<para>0.600.3-3ubuntu1</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>python</para>
</entry>
<entry align="left" valign="top">
<para>2.7.4-0ubuntu1</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
<screen>># apt-get install ipxe-qemu kvm-ipxe qemu-kvm virt-goodies \
virtinst virt-manager libvirt0 libvirt-bin \
munin-libvirt-plugins python python-libvirt \
python-libxml2 python-minimal python-pycurl \
python-pyorbit python-requests python-six \
samba samba-common openssh-server virt-top virt-what </screen>
</section>
<section>
<title>Configure Shared Resource</title>
<formalpara>
<title>Configure samba based share</title>
<para>
<screen>># mkdir -p /opt/samba/share
># chown -R nobody:nogroup /opt/samba/share </screen>
</para>
</formalpara>
<formalpara>
<title>Configure samba server (/etc/samba/smb.conf)</title>
<para>
<screen>...
[global]
...
security = user
...
[share]
comment = Deployment Share
path = /opt/samba/share
browsable = yes
read only = no
create mask = 0755
guest ok = yes
guest account = nobody
... </screen>
</para>
</formalpara>
<formalpara>
<title>Restart services</title>
<para>
<screen>># service smbd restart
># service nmbd restart</screen>
</para>
</formalpara>
</section>
</section>
<section xml:id="_additional_software">
<title>Additional Software</title>
<para>This section describes additional software which is required to build an Windows
Image.</para>
<section xml:id="_windows_adk">
<title>Windows ADK</title>
<para><emphasis role="italic">Windows Assessment and Deployment Kit (ADK) for
Windows® 8</emphasis> is required to build your own answer files for auto
unattended Windows installation.</para>
<para>You can dowload it from <link
xlink:href="http://www.microsoft.com/en-us/download/details.aspx?id=30652">
http://www.microsoft.com/en-us/download/details.aspx?id=30652 </link>
.</para>
</section>
<section xml:id="_putty">
<title>Putty</title>
<para>PuTTY is a useful tool to manage your Linux boxes via SSH.</para>
<para>You can download it from <link
xlink:href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"
> http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html </link>
</para>
</section>
<section xml:id="_windows_server_2012_iso_image">
<title>Windows Server 2012 ISO image</title>
<para>We use the following Windows installation images:</para>
<informaltable frame="all" rowsep="1" colsep="1">
<tgroup cols="2">
<colspec colname="col_1" colwidth="1*"/>
<colspec colname="col_2" colwidth="2.28*"/>
<thead>
<row>
<entry>Windows Version</entry>
<entry>Image Name</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top">
<para>Windows Server 2008 R2</para>
</entry>
<entry align="left" valign="top">
<para>7601.17514.101119-1850_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso
</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>Windows Server 2012</para>
</entry>
<entry align="left" valign="top">
<para>
9200.16384.WIN8_RTM.120725-1247_X64FRE_SERVER_EVAL_EN-US-HRM_SSS_X64FREE_EN-US_DV5.iso
</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>You may download them using one of the following links:</para>
<informaltable frame="all" rowsep="1" colsep="1">
<tgroup cols="2">
<colspec colname="col_1" colwidth="1*"/>
<colspec colname="col_2" colwidth="2.3*"/>
<thead>
<row>
<entry>Windows Version</entry>
<entry>Download Link</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top">
<para>Windows Server 2008 R2</para>
</entry>
<entry align="left" valign="top">
<para>
<link
xlink:href="http://www.microsoft.com/en-us/download/details.aspx?id=11093"
>
http://www.microsoft.com/en-us/download/details.aspx?id=11093
</link>
</para>
</entry>
</row>
<row>
<entry align="left" valign="top">
<para>Windows Server 2012</para>
</entry>
<entry align="left" valign="top">
<para>
<link
xlink:href="http://technet.microsoft.com/en-US/evalcenter/hh670538.aspx?ocid=&amp;wt.mc_id=TEC_108_1_33"
>
http://technet.microsoft.com/en-US/evalcenter/hh670538.aspx?ocid=&amp;wt.mc_id=TEC_108_1_33
</link>
</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="_virtio_red_hat_drivers_iso_image">
<title>VirtIO Red Hat drivers ISO image</title>
<para>Download drivers from <link
xlink:href="http://alt.fedoraproject.org/pub/alt/virtio-win/stable/">
http://alt.fedoraproject.org/pub/alt/virtio-win/stable/ </link>
</para>
<para>Please, choose stable version instead of latest, We&#8217;ve got errors with
unstable drivers during guest unattended install. </para>
</section>
<section xml:id="_create_floppy_drive_image">
<title>Floppy Image With Unattended File</title>
<para>Run followinf commands as root:</para>
<orderedlist numeration="arabic">
<listitem>
<para> Create emtpy floppy image in your home folder </para>
<screen>># dd bs=512 count=2880 \
if=/dev/zero of=~/floppy.img \
mkfs.msdos ~/floppy.img </screen>
</listitem>
<listitem>
<para> Mount the image to <emphasis role="strong">/media/floppy</emphasis>
</para>
<screen>># mkdir /media/floppy mount -o loop \
~/floppy.img /media/floppy </screen>
</listitem>
<listitem>
<para> Download <emphasis role="strong">autounattend.xml</emphasis> file
from <link
xlink:href="https://raw.github.com/stackforge/murano-deployment/master/image-builder/share/files/ws-2012-std/autounattend.xml"
>
https://raw.github.com/stackforge/murano-deployment/master/image-builder/share/files/ws-2012-std/autounattend.xml
</link>
</para>
<screen>># cd ~
># wget https://raw.github.com/stackforge/murano-deployment\
/master/image-builder/share/files/ws-2012-std/autounattend.xml </screen>
</listitem>
<listitem>
<para> Copy our <emphasis role="strong">autounattend.xml</emphasis> to
<emphasis role="strong">/media/floppy</emphasis>
</para>
<screen>># cp ~/autounattend.xml /media/floppy</screen>
</listitem>
<listitem>
<para> Unmount the image </para>
<screen>># umount /media/floppy</screen>
</listitem>
</orderedlist>
</section>
</section>
</chapter>
<chapter xml:id="_automated_build">
<title>Build Windows Image (Automatic Way)</title>
<orderedlist numeration="arabic">
<listitem>
<para> Clone <emphasis role="strong">murano-deployment</emphasis> repository </para>
<screen>># git clone git://github.com/stackforge/murano-deployment.git</screen>
</listitem>
<listitem>
<para> Change directory to <emphasis role="strong"
>murano-deployment/image-builder</emphasis> folder. </para>
</listitem>
<listitem>
<para> Create folder structure for image builder </para>
<screen>># make build-root</screen>
</listitem>
<listitem>
<para> Create shared resource </para>
<formalpara>
<title>Add to /etc/samba/smb.conf</title>
<para>
<screen>[image-builder-share]
comment = Image Builder Share
browsable = yes
path = /opt/image-builder/share
guest ok = yes
guest user = nobody
read only = no
create mask = 0755 </screen>
</para>
</formalpara>
<formalpara>
<title>Restart samba services</title>
<para>
<screen>># restart smbd &amp;&amp; restart nmbd</screen>
</para>
</formalpara>
</listitem>
<listitem>
<para> Test that all required files are in place </para>
<screen>># make test-build-files</screen>
</listitem>
<listitem>
<para> Get list of available images </para>
<screen>># make</screen>
</listitem>
<listitem>
<para> Run image build process </para>
<screen>># make ws-2012-std</screen>
</listitem>
<listitem>
<para> Wait until process finishes </para>
</listitem>
<listitem>
<para> The image file <emphasis role="strong">ws-2012-std.qcow2</emphasis> should be
stored under <emphasis role="strong">/opt/image-builder/share/images</emphasis>
folder. </para>
</listitem>
</orderedlist>
</chapter>
<chapter xml:id="_manual_build">
<title>Build Windows Image (Manual Way)</title>
<warning>
<para>Please note that the preferred way to build images is to use <emphasis
role="strong">Automated Build</emphasis> described later in this book. </para>
</warning>
<section xml:id="_get_windows_post_install_script">
<title>Get Windows Post Install script</title>
<para>All post-install actions are performed by script named<emphasis role="strong"
>wpi.ps1</emphasis>. You may download it using the link <link
xlink:href="https://raw.github.com/stackforge/murano-deployment/master/image-builder/share/scripts/ws-2012-std/wpi.ps1"
>
https://raw.github.com/stackforge/murano-deployment/master/image-builder/share/scripts/ws-2012-std/wpi.ps1
</link>
</para>
<para>To finish image preparation <emphasis role="strong">Start-Sysprep.ps1</emphasis>
script is used. You may download it using the link <link
xlink:href="https://raw.github.com/stackforge/murano-deployment/master/image-builder/share/scripts/ws-2012-std/Start-Sysprep.ps1"
>
https://raw.github.com/stackforge/murano-deployment/master/image-builder/share/scripts/ws-2012-std/Start-Sysprep.ps1
</link>
</para>
<note>
<para>There are a few scripts named<emphasis role="strong">wpi.ps1</emphasis>, each
supports only one version of Windows image. The script above is intended to be
used to create Windows Server 2012 Standard. To build other version of Windows
please use appropriate script from <emphasis role="strong">scripts</emphasis>
folder. </para>
</note>
</section>
<section xml:id="_copy_scripts_to_the_shared_folder">
<title>Copy scripts to the shared folder</title>
<para>All scripts should be copied to the shared resource folder, subfolder<emphasis
role="strong"> Scripts</emphasis>. </para>
</section>
<section xml:id="_create_guest_vm">
<title>Create guest VM</title>
<section xml:id="_way_1_from_console">
<title>Way 1 - from console</title>
<para>Run all commands as root.</para>
<formalpara>
<title>Preallocate disk image</title>
<para>
<screen>># qemu-img create -f qcow2 -o preallocation=metadata \
/var/lib/libvirt/images/winserv_vio.qcow2 20G </screen>
</para>
</formalpara>
<formalpara>
<title>Start guest install</title>
<para>
<screen>># virt-install --connect qemu:///system --hvm --name WinServ \
--ram 2048 --vcpus 2 --cdrom /opt/samba/share/9200.16384.WIN8_RTM\
.120725-1247_X64FRE_SERVER_EVAL_EN-US-HRM_SSS_X64FREE_EN-US_DV5.ISO \
--disk path=/opt/samba/share/virtio-win-0.1-52.iso,device=cdrom \
--disk path=/opt/samba/share/flop.img,device=floppy \
--disk path=/var/lib/libvirt/images/winserv_vio.qcow2\
,format=qcow2,bus=virtio,cache=none \
--network network=default,model=virtio \
--memballoon model=virtio --vnc --os-type=windows \
--os-variant=win2k8 --noautoconsole \
--accelerate --noapic --keymap=en-us --video=cirrus --force </screen>
</para>
</formalpara>
</section>
<section xml:id="_way_2_from_virt_manager_ui">
<title>Way 2 - from virt-manager UI</title>
<itemizedlist>
<listitem>
<para> launch virt-manager from shell as root </para>
</listitem>
<listitem>
<para> set Guest VM name and Local install media </para>
</listitem>
<listitem>
<para> add 1 cdrom - Windows Server ISO image </para>
</listitem>
<listitem>
<para> set OS type: Windows and version: Windows Server 2008 </para>
</listitem>
<listitem>
<para> set CPU and RAM amount </para>
</listitem>
<listitem>
<para> deselect Enable storage for this virtual machine </para>
</listitem>
<listitem>
<para> select Customize configuration before install </para>
</listitem>
<listitem>
<para> add 2 cdrom - virtio ISO image </para>
</listitem>
<listitem>
<para> add floppy - our floppy image </para>
</listitem>
<listitem>
<para> add/or create HDD image with Disk bus: VirtIO and storage format:
QCOW2 </para>
</listitem>
<listitem>
<para> set network device model: VirtIO </para>
</listitem>
<listitem>
<para> If everything OK - start installation process, guest vm screen
accessible through Console button </para>
</listitem>
</itemizedlist>
</section>
</section>
<section xml:id="_finish_process">
<title>Finish process</title>
<para>After install process finished for reference image compression run as root</para>
<screen>># qemu-img convert -O qcow2 /var/lib/libvirt/images/winserv_vio.qcow2 \
/var/lib/libvirt/images/winserv_vio_ref.qcow2 </screen>
</section>
</chapter>
<chapter xml:id="_post_building_setup">
<title>Upload Image Into Glance</title>
<para>
Services deployed by Murano require specially prepared images, that can be created manually or via
automated scripts. Please refer to corresponding chapters of this book to create image. After images are
created they should be registered in Openstack Glance - image operation service.
</para>
<orderedlist>
<listitem>
<para> Use the glance image-create command to import your disk image to Glance:
<screen>>$ glance image-create --name &lt;NAME> \
--is-public true --disk-format qcow2 \
--container-format bare \
--file &lt;IMAGE_FILE> \
--property &lt;IMAGE_METADATA></screen>
</para>
<para>
Replace the command line arguments to glance image-create with the
appropriate values for your environment and disk image:
</para>
<itemizedlist>
<listitem>
<para>Replace <emphasis role="bold">&lt;NAME></emphasis> with the name that
users will refer to the disk image by. E.g. '<emphasis role="bold"
>ws-2012-std</emphasis>'</para>
</listitem>
<listitem>
<para> Replace <emphasis role="bold">&lt;IMAGE_FILE></emphasis> with the
local path to the image file to upload. E.g. '<emphasis role="bold"
>ws-2012-std.qcow2</emphasis>'.</para>
</listitem>
<listitem>
<para> Replace IMAGE_METADATA with the following property string<screen>murano_image_info='{"title": "Windows 2012 Core Edition", "type": "ws-2012-core"}</screen>where<itemizedlist>
<listitem>
<para>title - user-friendly description of the image</para>
</listitem>
<listitem>
<para>type - one of possible image types<itemizedlist>
<listitem>
<para>ws-2012-std - Windows Server 2012 Standart
Edition</para>
</listitem>
<listitem>
<para>ws-2012-core - Windows 2012 Core
Edition</para>
</listitem>
<listitem>
<para>ws-2008r2-std - Windows Server 2008R2 Standart
Edition</para>
</listitem>
<listitem>
<para>ws-2008r2 - Windows Server 2012R2</para>
</listitem>
</itemizedlist></para>
</listitem>
</itemizedlist><warning>
<para>Setting <emphasis>murano_image_info</emphasis> property is
required to pick up image from Murano Dashboard.</para>
</warning>
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>To update metadata of the existing image run the command:</para>
<screen>>$ glance image-update &lt;IMAGE-ID> --property &lt;IMAGE_MATADATA></screen>
<itemizedlist>
<listitem>
<para>Replace <emphasis role="bold">&lt;IMAGE-ID></emphasis> with image id
from the previous command output.</para>
</listitem>
<listitem>
<para> Replace <emphasis role="bold">&lt;IMAGE_METADATA></emphasis> with
murano_image_info property,
e.g.<screen>murano_image_info='{"title": "Windows 2012 Core Edition",\
"type": "ws-2012-core"}'</screen></para>
</listitem>
</itemizedlist>
</listitem>
</orderedlist>
<para>After these steps desired image can be chosen in Murano dashboard and used for services platform.</para>
</chapter>
</book>

@ -19,7 +19,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mirantis.murano</groupId>
<artifactId>murano-manual</artifactId>
<artifactId>developers-guide</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Murano Project Documentation</name>
@ -41,7 +41,7 @@
<xincludeSupported>true</xincludeSupported>
<chunkSectionDepth>100</chunkSectionDepth>
<postProcess>
<copy todir="target/docbkx/webhelp/murano-manual/figures">
<copy todir="target/docbkx/webhelp/developers-guide/figures">
<fileset dir="src/docbkx/figures">
<include name="**/*.png"/>
</fileset>

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Architecture</title>
<section xml:id="architecture">
<title>Architecture</title>
<para>
The Murano Service communicates with the following OpenStack components:
<itemizedlist>
<listitem>
<para>Horizon - provides a GUI with ability to use all Murano features;</para>
</listitem>
<listitem>
<para>Keystone - authenticates users and provides the security token that is used to work with
OpenStack, hence limiting the user abilities in Murano based on OpenStack privileges;
</para>
</listitem>
<listitem>
<para>Heat - is used to provision VMs and other OpenStack resources for Windows Environments;
</para>
</listitem>
<listitem>
<para>Glance - stores Windows Server VM images, with each image containing an installed OS and a
set of scripts
</para>
</listitem>
<listitem>
<para>Quantum - provides the network configuration API</para>
</listitem>
<listitem>
<para>Agent - provides agent functionality to communicate with the Orchestration Engine and
executes tasks on VMs
</para>
</listitem>
</itemizedlist>
</para>
<figure xml:id="muranoarchitecture">
<title>Architecture</title>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../figures/architecture_diagram.png"
contentwidth="5in"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/architecture_diagram.png"/>
</imageobject>
</mediaobject>
</figure>
<section>
<title>REST API</title>
<para>Murano exposes a service endpoint for communication with a client. It exposes API functions to
manipulate objects such as environment and service.
</para>
<para>This component is responsible for translating API function parameters to Object Model attributes
and propagating the deployment status from the Orchestration Engine.
</para>
</section>
<section>
<title>Object Model</title>
<para>An internal representation of Windows Services and Environments. All attributes and entities are
described in the API specification.
</para>
</section>
<section>
<title>Orchestration Engine</title>
<para>This is the core component which evaluates Object Model changes and creates a plan for
implementing these changes on the instances or in the cloud. This component will support extensions
via plug-ins. Plugins can add new services and extend existing services for integration.
</para>
</section>
</section>
<section xml:id="releases">
<title>Releases</title>
<itemizedlist>
<listitem>
<para> <emphasis>Release-0.1</emphasis>
has 0.1 tag in all Murano repositories. Released 2013-05-30.
</para>
</listitem>
<listitem>
<para>
<emphasis>Release-0.2</emphasis>
has 0.2 tag in all Murano repositories. Released 2013-09-05.
</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Integration with Heat</title>
<para>Heat is a cloud resource management engine that allows you to manipulate resources that represent
OpenStack entities (Security Groups, Instances, Floating IPs, Volumes, etc.) and some entities such as
AutoScaling groups from a single point of control.
</para>
<para>OpenStack resource provisioning is one of the steps required for environment deployment and Heat will
be used for that purpose. Heat allows you to define all OpenStack resources in a single document that
will be easy to maintain and will not require resorting to multiple OpenStack APIs while keeping the
software configuration separate.
</para>
</section>
<section>
<title>Windows on OpenStack</title>
<para>Windows works on KVM pretty smoothly, and with the RedHat-created open-source VirtIO drivers for
Windows, its possible to work efficiently with KVM exposed devices.
</para>
<para>In OpenStacks Grizzly release, Microsofts hypervisor Hyper-V will be supported. The Hyper-V virtual
switch will be also supported as a Quantum plug-in. From the performance viewpoint, Hyper-V Server 2012
compares very favorably with bare metal, processing just over 6% fewer transactions per second compared
to the same workload running on a similarly configured physical server.
</para>
<para>Also, unlike the current OpenStack, Hyper-V also natively supports Windows Clusters.
</para>
</section>
</chapter>

@ -33,13 +33,14 @@
<para>Murano supports the following operating systems:</para>
<orderedlist>
<listitem>
<para>Ubuntu</para>
<para>Ubuntu 12.04</para>
</listitem>
<listitem>
<para>RHEL/CentOS</para>
<para>RHEL/CentOS 6.4</para>
</listitem>
</orderedlist>
<para>Ensure that these packages are installed before Murano installation using your OS package manager:</para>
<para>These system packages are required for Murano:</para>
<para><emphasis>Ubuntu</emphasis></para>
<orderedlist>
<listitem>
<para>python-dev</para>
@ -54,6 +55,23 @@
<para>libffi-dev</para>
</listitem>
</orderedlist>
<para>
<emphasis>CentOS</emphasis>
</para>
<orderedlist>
<listitem>
<para>python-devel</para>
</listitem>
<listitem>
<para>libxml2-devel</para>
</listitem>
<listitem>
<para>libxslt-devel</para>
</listitem>
<listitem>
<para>libffi-devel</para>
</listitem>
</orderedlist>
</section>
<section>
@ -62,40 +80,33 @@
<para>This chapter describes the procedure of installation and condiguration of Murano API. </para>
<section>
<title>Install</title>
<itemizedlist>
<itemizedlist spacing="compact">
<listitem>
<para>We need to have superuser privileges in order to install and configure system packages. Let's switch to root account:</para>
<para>Superuser privileges is required to install and configure system packages. Let's switch to root account:</para>
<programlisting>
<![CDATA[
sudo su
sudo su -
]]>
</programlisting>
</listitem>
<listitem>
<para>Clone Murano API Service from repository</para>
<para>
<emphasis>Ubuntu Linux 12.04 / 12.10</emphasis>
</para>
<para>Clone Murano API git repository:</para>
<programlisting>
<![CDATA[
apt-get install -y git
git clone https://github.com/stackforge/murano-api
]]>
</programlisting>
<para>
<emphasis>CentOS 6.x</emphasis>
</para>
<para>Stable version one of our <link linkend="releases"> releases</link> can be checked by tag:</para>
<programlisting>
<![CDATA[
yum install -y git gcc python-paste-deploy python-routes
git clone https://github.com/stackforge/murano-api
]]>
git checkout 0.2
]]>
</programlisting>
</listitem>
<listitem>
<para>Switch to just created directory and them perform installation</para>
<para>Switch to just created directory and then perform installation</para>
<para>
<emphasis>Ubuntu Linux 12.04 / 12.10</emphasis>
<emphasis>Ubuntu</emphasis>
</para>
<programlisting>
<![CDATA[
@ -104,7 +115,7 @@ sh setup.sh install
]]>
</programlisting>
<para>
<emphasis>CentOS 6.x</emphasis>
<emphasis>CentOS</emphasis>
</para>
<programlisting>
<![CDATA[
@ -122,7 +133,7 @@ Successfully installed muranoapi
Cleaning up...
LOG:> Making sample configuration files at "/etc/murano-api"
LOG:> Reloading initctl
LOG:> Please, make proper configugation,located at "/etc/murano-api", before starting the "murano-api" daemon!
LOG:> Please, make proper configuration,located at "/etc/murano-api", before starting the "murano-api" daemon!
]]>
</programlisting>
</listitem>
@ -130,7 +141,7 @@ LOG:> Please, make proper configugation,located at "/etc/murano-api", before sta
</section>
<section>
<title>Configure</title>
<itemizedlist>
<itemizedlist spacing="compact">
<listitem>
<para>First configure rabbitMQ by adding vhost and user with administrator rights:</para>
<programlisting>
@ -213,6 +224,7 @@ admin_password = password
</programlisting>
</listitem>
<listitem>
<anchor xml:id="murano_api_endpoint"></anchor>
<para>Register murano-api service in Openstack. </para>
<para>Note: you need to be authorized in Openstack to run this commands. To do this, you can run something like (having changed variables to appropriate values)</para>
<programlisting>
@ -220,9 +232,6 @@ admin_password = password
source $(YOUR_OPENSTACK_DIR)/openrc $(LOGIN) $(PASSWORD)
]]>
</programlisting>
<anchor xml:id="murano_api_endpoint"></anchor>
<programlisting>
<![CDATA[
keystone service-create --name muranoapi --type murano --description "Murano-Api Service"
@ -245,7 +254,7 @@ keystone endpoint-create
<listitem>
<para>Run Murano API service:</para>
<para>
<emphasis>Ubuntu Linux 12.04 / 12.10</emphasis>
<emphasis>Ubuntu</emphasis>
</para>
<programlisting>
<![CDATA[
@ -253,7 +262,7 @@ service murano-api start
]]>
</programlisting>
<para>
<emphasis>CentOS 6.x</emphasis>
<emphasis>CentOS</emphasis>
</para>
<programlisting>
<![CDATA[
@ -269,14 +278,14 @@ initctl start murano-api
<para>Conductor is a Murano orchestration engine that transforms object model sent by REST API service into
a series of Heat and Murano-Agent commands.
</para>
<para>This document describes Conductor for contributors of the project.</para>
<para>This chapter describes Conductor for contributors of the project.</para>
<section>
<title>Install</title>
<itemizedlist>
<itemizedlist spacing="compact">
<listitem>
<para>Murano Condutor uses OpenStack Heat for new virtual machines creation, therefore Heat should
<para>Murano Conductor uses OpenStack Heat for new virtual machines creation, therefore Heat should
been installed and configured. Some services require the Internet access for virtual machines to
successfull deployment.
successful deployment.
</para>
<para>The detailed information about Heat configuration is described
<link xlink:href="http://docs.openstack.org/developer/heat/getting_started/index.html">here.
@ -293,42 +302,34 @@ initctl start murano-api
</para>
</listitem>
<listitem>
<para>Need to work as root</para>
<para>Superuser privileges is required to install and configure system packages. Let's switch to root account:</para>
<programlisting>
<![CDATA[
sudo su
sudo su -
]]>
</programlisting>
</listitem>
<listitem>
<para>Navigate to the temporary directory and clone Murano Conductor Service from repository</para>
<para>
<emphasis>Ubuntu Linux 12.04 / 12.10</emphasis>
</para>
<para>Clone Murano Conductor repository from the github.</para>
<programlisting>
<![CDATA[
mkdir -p /tmp/murano
cd /tmp/murano
apt-get install -y git
git clone https://github.com/stackforge/murano-conductor
]]>
</programlisting>
<para>
<emphasis>CentOS 6.x</emphasis>
<para>Stable version one of our
<link linkend="releases">releases</link>
can be checked out by tag:
</para>
<programlisting>
<![CDATA[
mkdir -p /tmp/murano
cd /tmp/murano
yum install -y git
git clone https://github.com/stackforge/murano-conductor
]]>
git checkout 0.2
]]>
</programlisting>
</listitem>
<listitem>
<para>Switch to just created directory and then perform installation</para>
<para>
<emphasis>Ubuntu Linux 12.04 / 12.10</emphasis>
<emphasis>Ubuntu</emphasis>
</para>
<programlisting>
<![CDATA[
@ -337,7 +338,7 @@ sh setup.sh install
]]>
</programlisting>
<para>
<emphasis>CentOS 6.x</emphasis>
<emphasis>CentOS</emphasis>
</para>
<programlisting>
<![CDATA[
@ -348,13 +349,13 @@ sh setup-centos.sh install
]]>
</programlisting>
</listitem>
</itemizedlist>
</itemizedlist >
</section>
<section>
<title>Configure</title>
<itemizedlist>
<itemizedlist spacing="compact">
<listitem>
<para>Edit configuration file where each parameter has a comment:</para>
<para>Edit configuration file and take a look at inline comments:</para>
<programlisting>
<![CDATA[
cd /etc/murano-conductor
@ -369,7 +370,7 @@ cp conductor.conf.sample conductor.conf
vi conductor.conf
]]>
</programlisting>
<itemizedlist>
<itemizedlist >
<listitem>
<para><emphasis>[DEFAULT]</emphasis>section is responsible for logging.
</para>
@ -447,7 +448,7 @@ virtual_host = muranovhost
<listitem>
<para>Run Murano Conductor service:</para>
<para>
<emphasis>Ubuntu Linux 12.04 / 12.10</emphasis>
<emphasis>Ubuntu</emphasis>
</para>
<programlisting>
<![CDATA[
@ -455,7 +456,7 @@ service murano-conductor start
]]>
</programlisting>
<para>
<emphasis>CentOS 6.x</emphasis>
<emphasis>CentOS</emphasis>
</para>
<programlisting>
<![CDATA[
@ -473,64 +474,57 @@ initctl start murano-conductor
<title>Install</title>
<itemizedlist>
<listitem>
<para>Need to work as root</para>
<para>Superuser privileges is required to install and configure system packages. Let's switch to root account:</para>
<programlisting>
<![CDATA[
sudo su
sudo su -
]]>
</programlisting>
</listitem>
<listitem>
<para>Navigate to the temporary directory and clone Murano Dashboard Service from repository</para>
<para>
<emphasis>Ubuntu Linux 12.04 / 12.10</emphasis>
</para>
<para>Clone Murano Dashboard repository from the github:</para>
<programlisting>
<![CDATA[
mkdir -p /tmp/murano
cd /tmp/murano
apt-get install -y git
git clone https://github.com/stackforge/murano-dashboard
]]>
</programlisting>
<para>
<emphasis>CentOS 6.x</emphasis>
</para>
<programlisting>
<![CDATA[
mkdir -p /tmp/murano
cd /tmp/murano
yum install -y git
git clone https://github.com/stackforge/murano-dashboard
]]>
</programlisting>
</listitem>
<listitem>
<para>Switch to just created directory and run installation script</para>
<para>
<emphasis>Ubuntu Linux 12.04 / 12.10</emphasis>
<emphasis>Ubuntu</emphasis>
</para>
<programlisting>
<![CDATA[
cd /tmp/murano/murano-dashboard
cd murano-dashboard
sh setup.sh install
]]>
</programlisting>
<para>
<emphasis>CentOS 6.x</emphasis>
<emphasis>CentOS</emphasis>
</para>
<programlisting>
<![CDATA[
cd /tmp/murano/murano-dashboard
cd murano-dashboard
sh setup-centos.sh install
]]>
</programlisting>
</listitem>
</itemizedlist>
<para>
This script will supplement openstack dashboard configuration and the panel with Murano "Environments" should appear.
Don't forget to <link linkend="murano_api_endpoint"> register </link>
Murano API in keystone and set OPENSTACK_HOST in
<link xlink:href="http://docs.openstack.org/developer/horizon/topics/settings.html#openstack-host">horizon settings</link>.
</para>
</section>
</section>
<section xml:id="ssl">
<title>SSL configuration</title>
<para>
Murano components are able to work with SSL. This chapter will
help your to make proper settings with SSL configuration.
</para>
<section>
<title>HTTPS for Murano API</title>
<para>
@ -540,10 +534,10 @@ sh setup-centos.sh install
</para>
<programlisting>
<![CDATA[
[ssl]
cert_file = PATH
key_file = PATH
ca_file = PATH
[ssl]
cert_file = PATH
key_file = PATH
ca_file = PATH
]]>
</programlisting>
<itemizedlist>
@ -596,7 +590,7 @@ sh setup-centos.sh install
self-signed certificates.
</para>
<programlisting>
<![CDATA[
<![CDATA[
[rabbitmq]
# Use SSL for RabbitMQ connections (True or False)
@ -604,7 +598,7 @@ sh setup-centos.sh install
# Path to SSL CA certificate or empty to allow self signed server certificate
ca_certs =
]]>
]]>
</programlisting>
</section>
<section>
@ -616,7 +610,7 @@ sh setup-centos.sh install
self-signed certificates.
</para>
<programlisting>
<![CDATA[
<![CDATA[
[rabbitmq]
# Use SSL for RabbitMQ connections (True or False)
@ -624,7 +618,7 @@ sh setup-centos.sh install
# Path to SSL CA certificate or empty to allow self signed server certificate
ca_certs = /home/user/certificates/example.crt
]]>
]]>
</programlisting>
</section>
<section>
@ -636,7 +630,7 @@ sh setup-centos.sh install
Take a look at appSettings section:
</para>
<programlisting>
<![CDATA[
<![CDATA[
<appSettings>
<add key="rabbitmq.host" value="%RABBITMQ_HOST%"/>
<add key="rabbitmq.port" value="%RABBITMQ_PORT%"/>
@ -655,7 +649,7 @@ sh setup-centos.sh install
<add key="rabbitmq.allowInvalidCA" value="true"/>
<add key="rabbitmq.sslServerName" value=""/>
</appSettings>
]]>
]]>
</programlisting>
<para>
Desired parameter should be set directly to the value of the key

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Known Issues</title>
<para>
Actual bug state can be found in Murano launchpad
<link xlink:href="https://bugs.launchpad.net/murano"> page.
</link>
</para>
<itemizedlist>
<listitem>
<para>
Due to current Heat limitation services that involve
load-balancer creation (farms) can be deployed only by tenant administrators.
</para>
</listitem>
<listitem>
<para>
When Heat creates different clients for Nova, Cinder and others
it doesn't pass SSL-related options to clients' constructor.
If Nova is configured to have SSL endpoints and self-signed
certificates Heat will fail to create instances because there
is no way to disable server certificate validation as there is
no "insecure" flag passed etc.
</para>
</listitem>
<listitem>
<para>
Farm services can't be deployed without KeyPair. If KeyPair is not set
load balancer won't be created and these messages will show up in logs:
<programlisting>
<![CDATA[
2013-08-06 09:10:07 - Unable to deploy instance ipkrmhk0vzq4b6 (asp-farm_instance_0) due to Unexpected state
2013-08-06 09:10:07 - Unable to create a Server Farm load balancer on unit ipkrmhk0vzq4b6 (asp-farm_instance_0) due to Unexpected state
]]> </programlisting>
And deploy will hang up.
</para>
</listitem>
</itemizedlist>
</chapter>

@ -23,6 +23,17 @@
version="5.0">
<title>Overview</title>
<para>Welcome to Murano Project.
Full information about Murano in openstack wiki
<link xlink:href="https://wiki.openstack.org/wiki/Murano"> page.</link>
</para>
<para>
Murano is intended to get opportunity for non-experienced
users to deploy reliable Windows-based environments with 1-Click.
Key goal is to provide UI and API which
allows to deploy and operate Windows environments on the "Windows
Services" abstraction level. The Service should be able to orchestrate
complex circular dependent cases in order to setup complete Windows
environments with many dependant services.
</para>
<section>
<title>Intended Audience</title>
@ -55,19 +66,17 @@
</itemizedlist>
</td>
</tr>
<tr>
<td colspan="1" align="center">September. 4, 2013</td>
<td colspan="4">
<itemizedlist spacing="compact">
<listitem>
<para>update for Release-0.2</para>
</listitem>
</itemizedlist>
</td>
</tr>
</tbody>
</informaltable>
</section>
<section>
<title>Additional Resources</title>
<itemizedlist spacing="compact">
<listitem>
<para>
<link xlink:href="http://www.mirantis.com">
Mirantis - Cloud Software
</link>
</para>
</listitem>
</itemizedlist>
</section>
</chapter>

@ -36,7 +36,7 @@
<td colspan="4">
<itemizedlist spacing="compact">
<listitem>
<para>Initial document creation</para>
<para>Initial</para>
</listitem>
</itemizedlist>
</td>
@ -2584,7 +2584,7 @@
</tgroup>
</table>
<table frame="all">
<title>ASP.NET Application Farm Unit Object</title>
<title>SQL Server Unit object</title>
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colnum="1" colname="col1" colwidth="2*"/>
<colspec colnum="2" colname="col2" colwidth="1*"/>
@ -2609,7 +2609,7 @@
<section>
<title>Create Object Specs</title>
<table frame="all">
<title>ASP.NET Application Farm Object</title>
<title>SQL Server Unit object</title>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colnum="1" colname="col1" colwidth="2*"/>
<colspec colnum="2" colname="col2" colwidth="1*"/>
@ -2664,7 +2664,7 @@
</tgroup>
</table>
<table frame="all">
<title>ASP.NET Application Farm Unit Object</title>
<title>MS SQL Server Unit Object</title>
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colnum="1" colname="col1" colwidth="2*"/>
<colspec colnum="2" colname="col2" colwidth="1*"/>

@ -159,8 +159,6 @@ For both list and map functions names of item nodes ("item" in examples above) i
</section>
<section>
<title>Workflows</title>
<section>
<title>About workflows</title>
<para>
Workflows are XML DSL scripts that describe the steps that conductor need to perform in order to deploy specified environment. All workflow constructs are just ordinary DSL functions similar to those described above.
</para>
@ -171,10 +169,12 @@ For both list and map functions names of item nodes ("item" in examples above) i
Actions are:
<itemizedlist>
<listitem>
<para>
Heat commands that update or delete Heat Stack: <![CDATA[ <update-cf-stack>, <delete-cf-stack> ]]>
</para>
</listitem>
<listitem>
Send command to Murano Agent: <![CDATA[ <send-command> ]]>
<para>Send command to Murano Agent: <![CDATA[ <send-command> ]]></para>
</listitem>
<listitem>
Report state to API: <![CDATA[ <report> ]]>
@ -185,26 +185,31 @@ For both list and map functions names of item nodes ("item" in examples above) i
Workflow logic can be described in 6 steps:
<orderedlist>
<listitem>
Choose a node (set of nodes) to update. If none of the nodes can be updated we are done.
<para>
Choose a node (set of nodes) to update. If none of the nodes can be updated we are done.
</para>
</listitem>
<listitem>
According to the current state of node (that is a part of input Object Model) choose appropriate command to execute (update Heat stack or issue PowerShell command)
<para>
According to the current state of node (that is a part of input Object Model) choose appropriate command to execute (update Heat stack or issue PowerShell command)
</para>
</listitem>
<listitem>
Select appropriate information from Object Model and substitute it into chosen template
<para>
Select appropriate information from Object Model and substitute it into chosen template
</para>
</listitem>
<listitem>
Execute command
<para>Execute command</para>
</listitem>
<listitem>
Update Object Model according to command execution result
<para>Update Object Model according to command execution result</para>
</listitem>
<listitem>
Go to step 1
<para>Go to step 1</para>
</listitem>
</orderedlist>
</para>
</section>
<section>
<title>Accessing Object Model</title>
<para>Object Model is a definition of environment that Murano Conductor was asked to deploy.</para>

@ -22,7 +22,7 @@
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Murano User Guide</title>
<title>Murano Developers Guide</title>
<info>
<author>
<personname>
@ -39,7 +39,7 @@
</copyright>
<releaseinfo>v0.1</releaseinfo>
<productname>Murano™</productname>
<pubdate>2013-04-04</pubdate>
<pubdate>2013-09-04</pubdate>
<legalnotice role="apache2">
<annotation>
<remark>Copyright details are filled in by the template. Change
@ -50,8 +50,7 @@
</legalnotice>
<abstract>
<para>This document is intended for individuals who wish to
configure
and use our product or intend to contribute.
use our product or intend to contribute.
</para>
</abstract>
<cover>
@ -63,10 +62,9 @@
</info>
<xi:include href="./content/overview.xml" xlink:title="Overview" />
<xi:include href="./content/installation-guide.xml" xlink:title="Installation Guide" />
<xi:include href="./content/blueprint.xml" xlink:title="Blueprint" />
<xi:include href="content/architecture.xml" xlink:title="Blueprint" />
<xi:include href="./content/specification.xml" xlink:title="API Specification" />
<xi:include href="./content/workflows.xml" xlink:title="Workflows XML DSL" />
<xi:include href="./content/screenshots.xml" xlink:title="Screenshots" />
<xi:include href="./content/knownissues.xml" xlink:title="Known Issues" />
<chapter>
<title>How To Participate</title>
@ -74,12 +72,10 @@
FreeNode. Typically somebody from our team will be online at irc from 6:00 to 20:00 UTC. You can also
contact
Murano community directly by
<link xlink:href="mailto:murano-all@lists.launchpad.net">murano-all@lists.launchpad.net</link>
(please, note that your email address should be registered in launchpad, otherwise your mail will be ignored
by mailing system).
<link xlink:href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</link>
</para>
<para>
Were going to hold public weekly meetings on Mondays at 17:00 UTC on #openstack-meeting-alt irc channel.
Were going to hold public weekly meetings on Mondays at 15:00 UTC on #openstack-meeting-alt irc channel.
</para>
<para>If you want to contribute either to docs or to code, simply send us change request via
<link xlink:href="http://review.openstack.org">review.openstack.org</link>

@ -0,0 +1,51 @@
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mirantis.murano</groupId>
<artifactId>murano-getting-started-guide</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Murano Getting Started Guide</name>
<build>
<plugins>
<plugin>
<groupId>com.agilejava.docbkx</groupId>
<artifactId>docbkx-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate-pdf</goal>
<goal>generate-webhelp</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
<configuration>
<htmlCustomization>${basedir}/src/docbkx/style/config.xsl
</htmlCustomization>
<htmlStylesheet>${basedir}/src/docbkx/style/getting-started.css
</htmlStylesheet>
<xincludeSupported>true</xincludeSupported>
<chunkSectionDepth>100</chunkSectionDepth>
</configuration>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xml:id="Appendix" xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Appendix</title>
<para>
<emphasis role="bold">Murano VM</emphasis>
<note>
<para>
Your VM MUST be attached to the network with Internet access
and openstack management network (lab network) access.
</para>
</note>
</para>
<para>
<emphasis>Ubuntu Server 12.04 LTS x86_64</emphasis>
</para>
<para>Installation steps:</para>
<itemizedlist>
<listitem>
<para>Install minimal version of the system</para>
</listitem>
<listitem>
<para>When prompted, mark OpenSSH Server to be installed
</para>
</listitem>
<listitem>
<para>Login as root</para>
</listitem>
<listitem>
<para>Enable Cloud Archive repository</para>
</listitem>
<listitem>
<para>Update installed OS and packages</para>
</listitem>
<listitem>
<para>Add lines below to the
<filename>/etc/apt/sources.list.d/grizzly.list</filename>
file
<programlisting>
deb http://ubuntu-cloud.archive.canonical.com/ubuntu
precise-updates/grizzly main
deb http://archive.gplhost.com/debian grizzly main
deb http://archive.gplhost.com/debian grizzly-backports main
</programlisting>
</para>
</listitem>
<listitem>
<para>Update the system
<programlisting>
># apt-get update
># apt-get install ubuntu-cloud-keyring
># apt-get install gplhost-archive-keyring
># apt-get upgrade
</programlisting>
</para>
</listitem>
<listitem>
<para>Install additional packages
<programlisting>
># apt-get install mc unzip git make gcc
python-setuptools python-pip
</programlisting>
</para>
</listitem>
</itemizedlist>
<para>
<emphasis>CentOS 6.4 x86_64</emphasis>
</para>
<para>Installation steps:</para>
<itemizedlist>
<listitem>
<para>Install minimal version of the system.</para>
</listitem>
<listitem>
<para>When prompted, mark OpenSSH Server to be installed</para>
</listitem>
<listitem>
<para>Login as root</para>
</listitem>
<listitem>
<para>Enable RedHat Openstack and Epel repository</para>
</listitem>
<listitem>
<para>Update installed OS and packages</para>
</listitem>
<listitem>
<para>Add repositories and update OS
<programlisting>
># yum install -y http://rdo.fedorapeople.org/openstack/
openstack-grizzly/rdo-release-grizzly.rpm
># yum install -y http://mirror.yandex.ru/
epel/6/x86_64/epel-release-6-8.noarch.rpm
># yum update
># yum upgrade
</programlisting>
</para>
</listitem>
<listitem>
<para>Install additional packages
<programlisting>
># yum install mc unzip git make gcc python-setuptools
python-pip upstart
</programlisting>
</para>
</listitem>
</itemizedlist>
<para>
Most of dependent packages will be installed
automatically with setup scripts.
<note>
<para>
Some words about pip (python-pip) version. In order to have
proper versions of python dependency packages installed,
pip version MUST be 1.4 or higher!
</para>
</note>
</para>
<para>How-to determine python-pip version:</para>
<programlisting>
># pip --version
</programlisting>
<para>How-to upgrade pip to latest version:
<programlisting>
># pip install --upgrade pip
># pip install
https://pypi.python.org/packages/source/p/pip/pip-1.4.1.tar.gz
</programlisting>
<note>
<para>
You should pay attention to python-pip after upgrade to
version 1.4, because its filesystem location can change
from /usr/bin/pip to /usr/local/bin/pip!
</para>
</note>
</para>
<para>How to handle this situation:</para>
<programlisting>
># rm /usr/bin/pip
># ln -s /usr/local/bin/pip /usr/bin/pip
</programlisting>
</chapter>

@ -0,0 +1,184 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Before You Begin</title>
<para><emphasis role="bold">Naming Conventions</emphasis>
</para>
<para>To clearly separate commands and parts of configuration files we use boxes, like shown below:</para>
<programlisting>
...
# Part of config file here
</programlisting>
<para>
All commands start either with &gt;$ mark or with &gt;# mark.
The difference is that first should be executed as regular user, while second - as superuser (root).
</para>
<programlisting>
&gt;$ echo Execute this command as regular user
&gt;# echo Execute this command as root
</programlisting>
<para><emphasis role="bold"> Use Appropriate Branch</emphasis></para>
<para>There are a few branches that can be found in all Murano repositories: master, release-0.1,
release-0.2 and so on. Branch master is the most recent between the releases, but not as stable as release-x.x branches.</para>
<para><emphasis role="bold">Use Separate vHost in <link linkend="Rabbit"></link>RabbitMQ</emphasis></para>
<para>
In general it is OK to configure Murano services to use the root (/) vHost in RabbitMQ and use the same user credentials as OpenStack services use.
However, we recommend to create a separate vHost with separate user for each Murano devbox. There are a few reasons for that:
<itemizedlist>
<listitem>
<para>this prevents queue name collisions</para>
</listitem>
<listitem>
<para>this prevents message stealing from queues</para>
</listitem>
<listitem>
<para>this simplify debugging</para>
</listitem>
</itemizedlist>
</para>
<para>
If you are planning to use only one devbox then you may stay with /
vHost.
Steps required to configure your own vHost are described in <link
linkend="Rabbit">RabbitMQ Configuration Notes</link>.
</para>
<section>
<title>System Requirements</title>
<itemizedlist>
<listitem>
<para><emphasis>OpenStack Lab</emphasis> - a single node Openstack environment.</para>
</listitem>
<listitem>
<para>
<emphasis>Devbox</emphasis> - a mahine where all murano components and services are running.
This machine should have access to the Openstack Lab.
</para>
</listitem>
</itemizedlist>
<section>
<title>OpenStack Lab</title>
<para>
<emphasis role="bold">Supported OS</emphasis>
</para>
<itemizedlist>
<listitem>
<para>Ubuntu Server 12.04 x64</para>
</listitem>
</itemizedlist>
<para>
<emphasis role="bold"><anchor xml:id="LabHardware"></anchor>Hardware Requirements</emphasis>
</para>
<itemizedlist>
<listitem>
<para>CPU: 8+ cores</para>
</listitem>
<listitem>
<para>RAM: 12+ GB</para>
</listitem>
<listitem>
<para>HDD (select any option)</para>
</listitem>
<listitem>
<para>NIC: 1x Ethernet 1+ Gbps</para>
</listitem>
</itemizedlist>
<para>
<emphasis role="bold">Software Requirements</emphasis>
</para>
<itemizedlist>
<listitem>
<para>Heat installed</para>
</listitem>
<listitem>
<para>
RabbitMQ configured (+ additional vhosts and user
accounts)
</para>
</listitem>
<listitem>
<para>Windows Server 2012 Standard image imported into Glance
(described later)
</para>
</listitem>
<listitem>
<para>Samba share with prerequisites (described later)</para>
</listitem>
<listitem>
<para>OpenStack metadata service.</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Devbox</title>
<para>
We suggest to use virtual machine for Murano, as it allows you to
backup your VM easily.
Any type of hypervisor software which supports linux as guest OS
could be used. KVM, VMWare and VirtualBox were tested with success.
There is a <link linkend="Appendix">Murano VM Appendix</link>
which contains steps to build your own VM.
</para>
<para>
<emphasis role="bold">Supported OS</emphasis>
</para>
<itemizedlist>
<listitem>
<para>Ubuntu Server 12.04 LTS x86_64</para>
</listitem>
<listitem>
<para>CentOS 6.4 x86_64</para>
</listitem>
</itemizedlist>
<para>
<emphasis role="bold">Hardware Requirements</emphasis>
</para>
<itemizedlist>
<listitem>
<para>RAM: 512 MB</para>
</listitem>
<listitem>
<para>CPU: 1 core</para>
</listitem>
<listitem>
<para>HDD: 20 GB</para>
</listitem>
<listitem>
<para>1 NIC</para>
</listitem>
</itemizedlist>
<para>
<emphasis role="bold">Software Requirements</emphasis>
</para>
<itemizedlist>
<listitem>
<para>Packages:</para>
</listitem>
<listitem>
<para>X Server is NOT required and system runlevel 3 is
preferred.
</para>
</listitem>
</itemizedlist>
</section>
</section>
</chapter>

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>About Murano</title>
<para>
Murano is a new service which allows a non-experienced user to deploy
reliable Windows based environments in a “push-the-button” manner. The
key goal is to provide a UI and API enabling the deployment and
operation of Windows Environments at the Windows Services abstraction
level. The service is able to orchestrate complex circular dependent
cases in order to set up a complex Windows Environment with multiple
dependant services.
</para>
<para>
The service addresses following use cases:
<itemizedlist>
<listitem>
<para>Self-provisioning of predefined Windows services with their dependencies</para>
</listitem>
<listitem>
<para>Automation of administrative tasks during data center roll-out</para>
</listitem>
<listitem>
<para>Custom windows application as a windows service</para>
</listitem>
</itemizedlist>
</para>
<para>
The solution provides higher level of abstraction for manipulation
Windows Environments. Key concepts are:
<itemizedlist>
<listitem>
<para>Windows Service - a service such as Active Directory, MSSQL, or IIS, which usually consists of multiple virtual machines and has multiple dependencies.
</para>
</listitem>
<listitem>
<para>Windows Environment - a logical unit for all Services and represents a classical Windows Datacenter.
</para>
</listitem>
<listitem>
<para>Windows VM instance - a VM which hosts a Windows Service. A Windows Service might be deployed over several Windows VM instances.</para>
</listitem>
</itemizedlist>
</para>
<para>
The Key Features of the Service are the following:
<orderedlist>
<listitem>
<para>Native to OpenStack</para>
</listitem>
<listitem>
<para>Introduces abstraction level for Windows Environments</para>
</listitem>
<listitem>
<para>Supports Availability Zones and Disaster Recovery scenarios</para>
</listitem>
<listitem>
<para>Uses native Windows features for HA solutions</para>
</listitem>
</orderedlist>
</para>
<section>
<title>Document change history</title>
<para>The following table describes the most recent changes:</para>
<informaltable rules="all" frame="all">
<thead>
<tr>
<td align="center" colspan="1">Revision Date</td>
<td align="center" colspan="4">Summary of Changes</td>
</tr>
</thead>
<tbody>
<tr>
<td colspan="1" align="center">September. 4, 2013</td>
<td colspan="4">
<itemizedlist>
<listitem>
<para>Initial document creation.</para>
</listitem>
</itemizedlist>
</td>
</tr>
</tbody>
</informaltable>
</section>
</chapter>

@ -0,0 +1,559 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Setup Devbox</title>
<para>There are a few ways to install Murano devbox</para>
<itemizedlist>
<listitem>
<para>using Vagrant automation tool</para>
</listitem>
<listitem>
<para>using a script to install all components automatically
</para>
</listitem>
<listitem>
<para>install everything manually</para>
</listitem>
</itemizedlist>
<note>
<para>
The preferred way is to use script for automated
installation. It is described in
<link linkend="AutomatedWay">Automated Way </link>section below.
</para>
</note>
<section>
<title>Vagrant Way</title>
<para>The simplest way to get working Murano devbox is Vagrant tool.</para>
<para><emphasis role="bold">Prepare Environment (Ubuntu)</emphasis></para>
<itemizedlist>
<listitem>
<para>Install VirtualBox:</para>
</listitem>
</itemizedlist>
<programlisting>
># apt-get install virtualbox
</programlisting>
<itemizedlist>
<listitem>
<para>Install VirtualBox Extension Pack.
</para>
</listitem>
<listitem>
<para>Install Vagrant:</para>
</listitem>
</itemizedlist>
<programlisting>
># apt-get install vagrant --no-install-recommends
</programlisting>
<itemizedlist>
<listitem>
<para>Upgrade the Vagrant:</para>
</listitem>
</itemizedlist>
<programlisting>
># wget http://files.vagrantup.com/
packages/7ec0ee1d00a916f80b109a298bab08e391945243/
vagrant_1.2.7_x86_64.deb
</programlisting>
<programlisting>
># dpkg --install vagrant_1.2.7_x86_64.deb
</programlisting>
<para><emphasis role="bold">Launch The Box</emphasis></para>
<itemizedlist>
<listitem>
<para>Clone murano-vagrant repository</para>
</listitem>
</itemizedlist>
<programlisting>
>$ git clone https://github.com/stackforge/murano-deployment.git
</programlisting>
<itemizedlist>
<listitem>
<para>Change directory to cloned repository folder</para>
</listitem>
</itemizedlist>
<programlisting>
>$ cd murano-deployment/getting-started
>$ git checkout -b release-0.2 origin/release-0.2
</programlisting>
<itemizedlist>
<listitem>
<para>IMPORTANT STEP: Edit the lab-binding.rc file - replace
all the markers *** to your settings. For example:
</para>
</listitem>
</itemizedlist>
<programlisting>
# Lab Settings
#-------------
# Address of the host which provides Keystone service.
#
# LAB_HOST='192.168.1.2'
LAB_HOST='***.***.***.***'
...
</programlisting>
<itemizedlist>
<listitem>
<para>Launch the box:</para>
</listitem>
</itemizedlist>
<programlisting>
>$ ./launch-the-box.sh
</programlisting>
<itemizedlist>
<listitem>
<para>The script will do the following:</para>
</listitem>
<listitem>
<para>Vagrant will do the rest:</para>
</listitem>
<listitem>
<para>When everything is done open the http://127.0.0.1:8080/horizon link.
</para>
</listitem>
</itemizedlist>
</section>
<section xml:id="AutomatedWay">
<title>Automated Way</title>
<para>
Build your VM using instructions from <link linkend="Appendix">Murano VM</link> first.
</para>
<itemizedlist>
<listitem>
<para>Create a folder to hold cloned repositories</para>
</listitem>
</itemizedlist>
<programlisting>
># mkdir -p /opt/git
</programlisting>
<itemizedlist>
<listitem>
<para>Clone murano-deployment repository</para>
</listitem>
</itemizedlist>
<programlisting>
># cd /opt/git># git clone git://github.com/stackforge/murano-deployment.git
</programlisting>
<itemizedlist>
<listitem>
<para>
Change directory to murano-deployment and switch to release-0.2 branch
</para>
</listitem>
</itemizedlist>
<programlisting>
># cd /opt/git/murano-deployment
># git checkout -b release-0.2 origin/release-0.2
</programlisting>
<itemizedlist>
<listitem>
<para>Install prerequisites</para>
</listitem>
</itemizedlist>
<programlisting>
># cd /opt/git/murano-deployment/devbox-scripts
># ./murano-git-install.sh prerequisites
</programlisting>
<itemizedlist>
<listitem>
<para>Configure lab binding configuration file
<filename>/etc/murano-deployment/lab-binding.rc</filename>
</para>
</listitem>
</itemizedlist>
<programlisting>
LAB_HOST='***.***.***.***'
AUTH_URL="http://$LAB_HOST:5000/v2.0"
ADMIN_USER='admin'
ADMIN_PASSWORD='***'
RABBITMQ_LOGIN='muranouser'
RABBITMQ_PASSWORD='murano'
RABBITMQ_VHOST='muranovhost'
BRANCH_NAME='release-0.2'
</programlisting>
<para>It's recommended to use separate vHost in
<link linkend="Rabbit">RabbitMQ</link>
</para>
<itemizedlist>
<listitem>
<para>Install Murano components</para>
</listitem>
</itemizedlist>
<programlisting>
># ./murano-git-install.sh install
</programlisting>
<itemizedlist>
<listitem>
<para>Login to the Dashboard using URL http://uth_port = 35357;your VM IP>/dashboard</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Manual Way</title>
<para>Build your VM using instructions from
<link linkend="Appendix">Murano VM</link>
first.
</para>
<para>
Package for Ubuntu and CentOS already in progress and will soon
be accessible for users. While they are not available, we provide
information about how to get and install all murano services from
source code below. We made setup scripts for automated installation
of our products which accepts install and uninstall command line
arguments. Service startup jobs are handled by Upstart.
</para>
<para>At first we need to create a working directory.</para>
<note> <para>All installation steps require the superuser rights.</para></note>
<programlisting>
># mkdir -p /opt/git &amp;&amp; cd /opt/git
</programlisting>
<note>
<para>
Please, track actual projects stable branch, at the time of
writing current stable branch is - release-0.2
</para>
</note>
<para>
<emphasis role="bold">Murano-Api</emphasis></para>
<itemizedlist>
<listitem>
<para>Get source code</para>
</listitem>
</itemizedlist>
<programlisting>
># git clone https://github.com/stackforge/murano-api -b release-0.2
># chmod +x murano-api/setup*.sh
</programlisting>
<itemizedlist>
<listitem>
<para>Install the component</para>
</listitem>
</itemizedlist>
<programlisting>
># murano-api/setup.sh install
</programlisting>
<itemizedlist>
<listitem/>
</itemizedlist>
<programlisting>
># murano-api/setup-centos.sh install
</programlisting>
<para>Configuration:</para>
<programlisting>
># cd /etc/murano-api &amp;&amp; cp murano-api-paste.ini.sample \
murano-api-paste.ini
># cd /etc/murano-api &amp;&amp; cp murano-api.conf.sample murano-api.conf
</programlisting>
<note>
<para>
Before start service, set proper configuration values in
configuration files mentioned above.
</para>
</note>
<para>
Service control:
</para>
<programlisting>
># start murano-api
># stop murano-api
># restart murano-api
># status murano-api
</programlisting>
<para><emphasis role="bold">Murano-Conductor</emphasis></para>
<itemizedlist>
<listitem>
<para>Get source code</para>
</listitem>
</itemizedlist>
<programlisting>
># git clone https://github.com/stackforge/murano-conductor \
-b release-0.2
># chmod +x murano-conductor/setup*.sh
</programlisting>
<itemizedlist>
<listitem>
<para>Install the component</para>
</listitem>
</itemizedlist>
<programlisting>
># murano-conductor/setup.sh install
</programlisting>
<itemizedlist>
<listitem>
<para><emphasis>on CentOS</emphasis></para>
</listitem>
</itemizedlist>
<programlisting>
># murano-conductor/setup-centos.sh install
</programlisting>
<para>Configuration</para>
<programlisting>
># cd /etc/murano-conductor &amp;&amp; cp \
conductor-paste.ini.sample conductor-paste.ini
># cd /etc/murano-conductor &amp;&amp; cp \
conductor.conf.sample conductor.conf
</programlisting>
<note>
<para>
Before starting the service, set proper configuration values in
configuration files mentioned above.
</para>
</note>
<para>Service control:</para>
<programlisting>
># start murano-conductor
># stop murano-conductor
># restart murano-conductor
># status murano-conductor
</programlisting>
<para>
<emphasis role="bold">Murano-Dashboard</emphasis></para>
<para>At first, Install OpenStack dashboard(Horizon)  and dependent
packages.
</para>
<para>How-to do this:</para>
<itemizedlist>
<listitem>
<para><emphasis>On Ubuntu</emphasis></para>
</listitem>
</itemizedlist>
<programlisting>
># apt-get install -y memcached libapache2-mod-wsgi openstack-dashboard
># dpkg --purge openstack-dashboard-ubuntu-theme # optional step
</programlisting>
<para>After installation is complete, openstack dashboard should be
available at: http://&lt;your VM IP>/horizon
</para>
<itemizedlist>
<listitem>
<para><emphasis>on CentOS</emphasis></para>
</listitem>
</itemizedlist>
<programlisting>
># yum install python-netaddr.noarch \
python-keystoneclient.noarch \
python-django-horizon.noarch \
python-django-openstack-auth.noarch \
 httpd.x86_64 mod_wsgi.x86_64 \
openstack-dashboard.noarch --assumeyes
># chkconfig httpd on
</programlisting>
<para>After installation is complete, openstack dashboard should be available
at: http://&lt;your VM IP>/dashboard
</para>
<para>Installation of the murano-dashboard is described below.</para>
<itemizedlist>
<listitem>
<para>Get source code</para>
</listitem>
</itemizedlist>
<programlisting>
># git clone https://github.com/stackforge/murano-dashboard
-b release-0.2
># chmod +x murano-dashboard/setup*.sh
</programlisting>
<itemizedlist>
<listitem>
<para>Install the component</para>
<para><emphasis>On Ubuntu</emphasis>
<programlisting>
># murano-dashboard/setup.sh install
</programlisting>
</para>
<para>
<emphasis>on CentOS</emphasis>
<programlisting>
># murano-dashboard/setup-centos.sh install
</programlisting>
</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Murano Services Configuration</title>
<para>This chapter descrides how to configure Murano services
and services communicating with Murano.</para>
<section xml:id="Rabbit">
<title>RabbitMQ Configuration Notes</title>
<para>OpenStack rabbitMQ credentials could be used for murano services,
but prefered way is to make additional changes into rabbitMQ
configuration, like own vhost, login and password. These steps
require superuser rights and should be run on the OpenStack
controller node where rabbitMQ service resides.
</para>
<para>How to do this:
<programlisting>
># rabbitmqctl add_user muranouser muranopassword
># rabbitmqctl set_user_tags muranouser administrator
># rabbitmqctl add_vhost muranovhost
># rabbitmqctl set_permissions -p muranovhost muranouser ".*" ".*" ".*"
</programlisting>
</para>
</section>
<section>
<title>Keystone Configuration Notes</title>
<para>Service entry for murano-api and endpoint associated with it
could also be  configured in the keystone. If there is no record
about murano-api in the keystone murano-dashboard would try to
reach murano-api service at localhost on the default murano-api
port 8082.
</para>
<para>How to add service record into the keystone using python keystone
client:
<programlisting>
># keystone service-create --name muranoapi --type murano \
--description "Murano-Api Service"
</programlisting>
This command returns UUID of the created service record, which
should be used below.
<programlisting>
># keystone endpoint-create \
  --service-id UUID_from_above \
  --publicurl http://murano_vm_address:8082 \
  --internalurl http://murano_vm_address:8082 \
  --adminurl http://murano_vm_address:8082 \
</programlisting>
</para>
</section>
<section>
<title>Murano-Api Configuration</title>
<para>Configuration files of the murano-api service reside at <filename>
/etc/murano-api</filename> directory. Basic configuration parameters are
listed below.
</para>
<itemizedlist>
<listitem>
<para>murano-api.conf</para>
</listitem>
</itemizedlist>
<programlisting>
[DEFAULT]
...
bind_host = 0.0.0.0
bind_port = 8082
log_file = /var/log/murano-api.log
...
[database]
...
#connection = mysql://mysqluser:mysqlpassword@mysqlhost:3306/murano
connection = sqlite:////etc/murano-api/murano.sqlite
...
[rabbitmq]
host = &lt;rabbitmq ip>
port = 5672
login = &lt;rabbitmq login>
password = &lt;rabbitmq password>
virtual_host = &lt;rabbitmq vhost>
...
</programlisting>
<itemizedlist>
<listitem>
<para>murano-api-paste.ini</para>
</listitem>
</itemizedlist>
<programlisting>
...
[filter:authtoken]
auth_host = &lt;keystone_ip>
auth_port = 35357
auth_protocol = http
admin_tenant_name = admin
admin_user = admin
admin_password = admin_password
...
</programlisting>
</section>
<section>
<title>Murano-Conductor</title>
<para>
Configuration files of the murano-conductor service reside at
<filename>/etc/murano-conductor </filename>directory. Basic configuration parameters are
listed below:
</para>
<itemizedlist>
<listitem>
<para>conductor.conf</para>
</listitem>
</itemizedlist>
<programlisting>
[DEFAULT]
log_file = /var/log/murano-conductor.log
[keystone]
# URL of OpenStack KeyStone service REST
API.
# Typically only hostname (or IP) needs to be
changed
auth_url = http://keystone_ip:5000/v2.0
...
...
[rabbitmq]
host = &lt;rabbitmq ip>
port = 5672
login = &lt;rabbitmq login>
password = &lt;rabbitmq password>
virtual_host = &lt;rabbitmq vhost>
...
</programlisting>
<itemizedlist>
<listitem>
<para>conductor-paste.ini</para>
</listitem>
</itemizedlist>
<para>Its empty but must exist.</para>
</section>
<section>
<title>Murano-Dashboard</title>
<para> Murano-dashboard does not need to be configured, but we need to
set up proper OPENSTACK_HOST variable in the OpenStack dashboard
configuration file, which resides at
<filename> /etc/openstack-dashboard </filename>
directory. It should point to the OpenStack controller node.
</para>
<programlisting>
# optional, but sometimes very useful to set DEBUG to True
DEBUG = True
...
OPENSTACK_HOST =
“openstack_controller_address”
...
</programlisting>
</section>
</section>
</chapter>

@ -0,0 +1,405 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Setup Lab Environment</title>
<section>
<title>Install OpenStack</title>
<para>
To install Murano you need a working copy of OpenStack.
If you already have a Openstack installation make sure it meets the requirements
described in <link linkend="LabHardware">this</link> chapter.
To install Openstack that will be ready to use with Murano
follow the instructions below.
</para>
<para><emphasis role="bold">Using Devstack</emphasis></para>
<para>
Currently the most simple way to build a lab is to use
devstack. The steps are quite simple:
</para>
<itemizedlist>
<listitem>
<para>
Install and configure OS on your hardware. The
recommended OS is Ubuntu Server 12.04 x64. Minimal
configuration would be enough.
</para>
</listitem>
<listitem>
<para>Install all the latest updates.</para>
</listitem>
</itemizedlist>
<programlisting>
># apt-get update
># apt-get -y upgrade
</programlisting>
<itemizedlist>
<listitem>
<para>Create a user <emphasis>stack</emphasis></para>
</listitem>
</itemizedlist>
<programlisting>
># adduser stack
</programlisting>
<itemizedlist>
<listitem>
<para>Add user <emphasis>stack</emphasis> to sudoers</para>
</listitem>
</itemizedlist>
<programlisting>
># echo stack ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/stack
># chmod 0440 /etc/sudoers.d/stack
</programlisting>
<itemizedlist>
<listitem>
<para>Create a folder for OpenStack installation files
</para>
</listitem>
</itemizedlist>
<programlisting>
># mkdir /opt/stack
># chown stack:stack /opt/stack
</programlisting>
<itemizedlist>
<listitem>
<para>Clone the <emphasis>devstack</emphasis> repo</para>
</listitem>
</itemizedlist>
<programlisting>
># su stack
>$ cd
>$ git clone https://github.com/openstack-dev/devstack.git
</programlisting>
<itemizedlist>
<listitem>
<para>Checkout the stable/grizzly branch</para>
</listitem>
</itemizedlist>
<programlisting>
>$ cd devstack
>$ git checkout stable/grizzly
</programlisting>
<itemizedlist>
<listitem>
<para>Get <filename>localrc</filename> and <filename>local.sh</filename> files</para>
</listitem>
</itemizedlist>
<programlisting>
>$ wget https://raw.github.com/stackforge/murano-deployment/release-0.2/
getting-started/localrc
>$ wget https://raw.github.com/stackforge/murano-deployment/release-0.2/
getting-started/local.sh -O local.sh-O local.sh
>$ chmod +x local.sh
</programlisting>
<itemizedlist>
<listitem>
<para>Start <emphasis>devstack</emphasis></para>
</listitem>
</itemizedlist>
<programlisting>
>$ ./stack.sh
</programlisting>
<para>
When stack.sh finishes execution your OpenStack
installation is ready.
</para>
</section>
<section xml:id="Samba">
<title>Prepare Shared Prerequisites</title>
<para><emphasis role="bold">Configure Samba Share</emphasis></para>
<para>
<itemizedlist>
<listitem>
<para>Install SAMBA</para>
</listitem>
</itemizedlist>
<programlisting>
># apt-get update
># apt-get install samba
</programlisting>
<itemizedlist>
<listitem>
<para>Create shared folder</para>
</listitem>
</itemizedlist>
<programlisting>
># mkdir -p /opt/samba/share
>#chown nobody:nogroup /opt/samba/share
</programlisting>
<itemizedlist>
<listitem>
<para>Edit /etc/samba/smb.conf</para>
</listitem>
</itemizedlist>
<programlisting>
...
[global]    
...    
security = user
...
[share]
   comment = Deployment Share
path = /opt/samba/share  
browsable = yes
guest ok = yes    
guest account = nobody
   read only = no
create mask = 0755
</programlisting>
<itemizedlist>
<listitem>
<para>Restart services</para>
</listitem>
</itemizedlist>
<programlisting>
># restart smbd># restart nmdb
</programlisting>
</para>
<para><emphasis role="bold">Copy Prerequisites Into The Share</emphasis></para>
<itemizedlist>
<listitem>
<para>Create folder structure</para>
</listitem>
</itemizedlist>
<programlisting>
># mkdir -p “/opt/samba/share/Prerequisites/IIS”
># mkdir -p “/opt/samba/share/Prerequisites/SQL Server/2012”
># mkdir -p “/opt/samba/share/Prerequisites/SQL Server/Tools”
</programlisting>
<itemizedlist>
<listitem>
<para>Add files to the folder structure under
/opt/samba/share folder:
</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Build Windows Image</title>
<para>A pre-built Windows Image is required to create environments
in Murano. Because of its size its better to build the image
on the same host where OpenStack is installed. This section describe
steps required to build such an image.
</para>
<para><emphasis role="bold">Prepare Build Environment</emphasis></para>
<itemizedlist>
<listitem>
<para>
Samba should be already installed (See <link linkend="Samba">Configure samba share</link>)
</para>
</listitem>
<listitem>
<para>Clone murano-deployment repository</para>
</listitem>
</itemizedlist>
<programlisting>
># cd /opt/git
># git clone git://github.com/stackforge/murano-deployment.git
</programlisting>
<itemizedlist>
<listitem>
<para>Change directory to <filename>murano-deployment/image-builder</filename>
folder
</para>
</listitem>
</itemizedlist>
<programlisting>
># cd /opt/git/murano-deployment/image-builder
</programlisting>
<itemizedlist>
<listitem>
<para>Create folder structure for image builder</para>
</listitem>
</itemizedlist>
<programlisting>
># make build-root
</programlisting>
<itemizedlist>
<listitem>
<para>
Download and put the following files to the specified paths under
<filename>/opt/image-builder </filename>folder:
<orderedlist>
<listitem>
<para>
<link xlink:href="http://technet.microsoft.com/en-us/evalcenter/hh670538.aspx">
Windows 2012 Server ISO evaluation version</link>: libvirt/images/ws­2012­eval.iso
</para>
</listitem>
<listitem>
<para>
<link xlink:href="http://alt.fedoraproject.org/pub/alt/virtio-win/stable/virtio-win-0.1-52.iso">
VirtIO drivers
</link>
should be placed to libvirt/images/virtio-win-0.1-52.iso
</para>
</listitem>
<listitem>
<para>
<link xlink:href=" http://www.cloudbase.it/downloads/CloudbaseInitSetup_Beta.msi">
CloudBase-Init for Windows:
</link>
share/files/CloudbaseInitSetup_Beta.msi
</para>
</listitem>
<listitem>
<para>
<link xlink:href="http://www.farmanager.com/files/Far30b3525.x64.20130717.msi">
Far Manager:
</link>
share/files/Far30b3367.x64.20130426.msi
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://msysgit.googlecode.com/files/Git-1.8.3-preview20130601.exe">
Git client
</link>
share/files/Git-1.8.1.2-preview20130201.exe
</para>
</listitem>
<listitem>
<para>
<link xlink:href="http://download.sysinternals.com/files/SysinternalsSuite.zip">
Sysinternals
</link>
Suiteshare/files/SysinternalsSuite.zip
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://www.dropbox.com/sh/zthldcxnp6r4flm/-k1Om_V6XR">
unzip.exe tool
</link>
share/files/unzip.exe
</para>
</listitem>
<listitem>
<para>
<link xlink:href="http://www.microsoft.com/en-us/download/details.aspx?id=34595">
PowerShell v3
</link>
share/files/Windows6.1-KB2506143-x64.msu
</para>
</listitem>
<listitem>
<para>
<link xlink:href="http://www.microsoft.com/en-us/download/details.aspx?id=17718">
.NET 4.0:
</link>
share/files/dotNetFx40_Full_x86_x64.exe
</para>
</listitem>
<listitem>
<para>
<link xlink:href="http://www.microsoft.com/en-us/download/details.aspx?id=30653">
.NET 4.5:
</link>
share/files/dotNetFx45_Full_setup.exe
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://www.dropbox.com/sh/zthldcxnp6r4flm/-k1Om_V6XR ">
Murano Agent
</link>
share/files/MuranoAgent.zip
</para>
</listitem>
</orderedlist>
</para>
</listitem>
<listitem>
<para>Test that all required files are in place</para>
</listitem>
</itemizedlist>
<programlisting>
># make test-build-files
</programlisting>
<para>
<emphasis role="bold">Build The Image</emphasis></para>
<itemizedlist>
<listitem>
<para>Get list of supported images</para>
</listitem>
</itemizedlist>
<programlisting>
># make
</programlisting>
<itemizedlist>
<listitem>
<para>Run image build process</para>
</listitem>
</itemizedlist>
<programlisting>
># make ws-2012-std
</programlisting>
<itemizedlist>
<listitem>
<para>Wait until process finishes</para>
</listitem>
<listitem>
<para>The image file ws-2012-std.qcow2 will be stored in <filename>
/opt/image-builder/share/images </filename> folder.
</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Import Windows Image Into Glance</emphasis></para>
<para>Now when youve built a Windows Image it must be imported into Glance.
</para>
<itemizedlist>
<listitem>
<para>Import openrc file which contains environment
variables definitions required by OpenStack components
</para>
</listitem>
</itemizedlist>
<programlisting>
>$ source openrc
</programlisting>
<itemizedlist>
<listitem>
<para>
Import the Windows Server 2012 image into Glance
<programlisting>
>$ cd /opt/image-builder/share/images
>$ glance image-create --name ws-2012-std --disk-format qcow2 \
--container-type bare --file ws-2012-std.qcow2 \
--is-public true \
--property murano_image_info='{"type":"ws-2012-std",\
"title":"Windows Server 2012 Standard"}'
</programlisting>
</para>
<warning>
<para>
The value of the --property argument named
murano_image_info is a JSON string. Only double quotes are
valid in JSON, so please type the string exactly as in the
example above.
</para>
</warning>
</listitem>
</itemizedlist>
</section>
</chapter>

@ -0,0 +1,155 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Troubleshooting</title>
<para>
Set debug options to "true" in all config files - dashboard, api,
conductor.
<note>
<para>
The following debug sequence should be used when you have
no idea about why the system isn't working. If you have one, you
may skip unnecessary sections.
</para>
</note>
First, stop both murano-api and murano-conductor services. We
will start them one by one from the console.
</para>
<para><emphasis role="bold">Murano-Api</emphasis></para>
<itemizedlist>
<listitem>
<para>Open new console</para>
</listitem>
<listitem>
<para>Start api service manually</para>
</listitem>
</itemizedlist>
<programlisting>
># murano-api --config-dir /etc/murano-api \
> /var/log/murano-api-live.log &amp;
># tailf /var/log/murano-api-live.log
</programlisting>
<itemizedlist>
<listitem>
<para>Open dashboard, create and send to deploy some simple
environment.
</para>
</listitem>
<listitem>
<para>Open RabbitMQ web console, open your vhost and ensure
that queues were created and there is at least one message.
</para>
</listitem>
<listitem>
<para>Check log for errors - there shouldn't be any</para>
</listitem>
<listitem>
<para>Keep murano-api service running.</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Murano-Conductor</emphasis></para>
<itemizedlist>
<listitem>
<para>Open new console</para>
</listitem>
<listitem>
<para>Start conductor from console</para>
</listitem>
</itemizedlist>
<programlisting>
># muranoconductor --config-dir /etc/murano-conductor > \
/var/log/murano-conductor-live.log &amp;
># tailf /var/log/murano-conductor-live.log
</programlisting>
<itemizedlist>
<listitem>
<para>Check that there is no python exceptions in the log. Some
errors like 404 are ok, as conductor tries to delete
environment that doesn't exist.
</para>
</listitem>
<listitem>
<para>Check heat stack status. It should not be in FAILED
state. If it is - check heat and nova error log to find the
cause.
</para>
</listitem>
<listitem>
<para>Keep murano-conductor service running.</para>
</listitem>
</itemizedlist>
<para>Now, the environment should be created, and instance(s)
launched.
</para>
<para>
Next, check if instances were configured correctly by the
cloudbase init tool.
</para>
<para>
Log in to any instance and open powershell log file at <filename>
C:\Murano\PowerShell.log</filename>. There shouldn't be any exceptions logged.
Other symptoms of successful configuration is that the instance was
renamed and you have to press &lt;Ctrl>+&lt;Alt>+&lt;Del>
to log into. Unconfigured instance has autologon enabled for the
first logon, so if console is open, the instance is not configured
(yet).
</para>
<para>Check that Murano Agent has correct config file. If there is a
.bak file, then it was changed by the init script. Check the file,
 ensure that it has correct values.
</para>
<para>Check Murano Agent log file. There should be logged all tasks
received by the agent from the conductor.
</para>
<para>Check PowerShell log. There should be messages about all
functions, executed on the instance.
</para>
<section>
<title>Log files</title>
<para><emphasis role="bold">Murano Log Files</emphasis></para>
<itemizedlist>
<listitem>
<para>/var/log/murano-api.log</para>
</listitem>
<listitem>
<para>/var/log/murano-conductor.log</para>
</listitem>
<listitem>
<para>/var/log/apache2/errors.log
</para>
</listitem>
<listitem>
<para>/var/log/httpd/errors.log</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Windows Log Files</emphasis></para>
<itemizedlist>
<listitem>
<para>C:\Murano\PowerShell.log</para>
</listitem>
<listitem>
<para>C:\Murano\Agent\log.txt</para>
</listitem>
</itemizedlist>
</section>
</chapter>

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<book xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Murano Getting Started Guide</title>
<info>
<author>
<personname>
<firstname/>
<surname/>
</personname>
<affiliation>
<orgname>Mirantis, Inc.</orgname>
</affiliation>
</author>
<copyright>
<year>2013</year>
<holder>Mirantis, Inc.</holder>
</copyright>
<releaseinfo>v0.1</releaseinfo>
<productname>Murano™</productname>
<pubdate>2013-09-04</pubdate>
<legalnotice role="apache2">
<annotation>
<remark>Copyright details are filled in by the template. Change
the value of the role
attribute on the legalnotice element to change the license.
</remark>
</annotation>
</legalnotice>
<abstract>
<para>This document is intended for individuals who wish to
use our product or intend to contribute.
</para>
</abstract>
<cover>
<para>this is a placeholder for the front cover</para>
</cover>
<cover>
<para>this is a placeholder for the back cover</para>
</cover>
</info>
<xi:include href="./content/overview.xml" xlink:title="Overview" />
<xi:include href="./content/before_you_begin.xml" xlink:title="Before You Begin"/>
<xi:include href="./content/setup_lab_environment.xml" xlink:title="Setup Lab Environment"/>
<xi:include href="./content/setup_devbox.xml" xlink:title="Setup Devbox"/>
<xi:include href="./content/troubleshooting.xml" xlink:title="Troubleshooting"/>
<xi:include href="./content/appendix.xml" xlink:title="Appendix"/>
</book>

@ -0,0 +1,10 @@
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<xsl:param name="use.id.as.filename" select="'1'"/>
<xsl:param name="admon.graphics" select="'1'"/>
<xsl:param name="admon.graphics.path"></xsl:param>
<xsl:param name="chunk.section.depth" select="0"></xsl:param>
<xsl:param name="html.stylesheet" select="'getting-started.css'"/>
</xsl:stylesheet>

@ -0,0 +1,54 @@
img {
max-width: 100%;
width: auto;
height: auto;
}
body {
font-family: luxi sans,sans-serif;
}
.screen {
font-family: monospace;
font-size: 1em;
display: block;
padding: 10px;
border: 1px solid #bbb;
background-color: #eee;
color: #000;
overflow: auto;
border-radius: 2.5px;
-moz-border-radius: 2.5px;
margin: 0.5em 2em;
}
.programlisting {
font-family: monospace;
font-size: 1em;
display: block;
padding: 10px;
border: 1px solid #bbb;
background-color: #ddd;
color: #000;
overflow: auto;
border-radius: 2.5px;
-moz-border-radius: 2.5px;
margin: 0.5em 2em;
}
a[href] {
text-decoration: none;
color: #0a5ba8;
}
a[href]:hover {
text-decoration:underline
}
a:visited {
color: #131580;
}
a:active {
color: #0a5ba8;
}

File diff suppressed because it is too large Load Diff

@ -1,213 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Blueprint</title>
<section>
<title>Project Background</title>
<para>Enterprise customers frequently use Windows-based environments for their internal and external
products. Configuration of the Windows environment is a complex task which usually requires a lot of
effort from administrators. Windows setup consists of numerous services which might be tightly coupled
to each other. While the automated installation of Windows services can be fairly straightforward,
service configuration can be hard to automate because it requires a well-designed Windows architecture
and deep knowledge of Windows services configuration.
</para>
<para>Currently several open source solutions exists that can help to partially solve automation of Windows
environment provisioning. In the world of OpenStack there is the Heat project, which is similar to
Amazon Cloud Formation. Heat is an excellent tool for managing OpenStack cloud resources such as VM
instances, security groups, and so on. It allows you to define all cloud resources in a single JSON
template, then later maintain all of those resources by editing that template. Although the declarative
template approach is well suited to OpenStack resources, it quickly becomes complex when it comes to
application management.
</para>
<para>Another option is a tool such as Chef or Puppet. These tools are flexible, but require you to have a
deep knowledge of scripting and require a significant amount of effort to manually script or modify
cookbooks for your specific environment configuration. This is manageable in a stable environment, but
it becomes time-consuming and involves manual script coding when one needs to deploy various
environments with rapidly changing configurations. Also Chef and Puppet require additional
infrastructure to support them.
</para>
<para>The biggest problem for both approaches above is in supporting multi-step configuration of services
with circular dependencies required for correct configuration of Windows services. This can be solved by
using external orchestration.
</para>
<para>Another potential problem is the lack of UI functionality enabling creation and configuration of an
environment without writing a script.
</para>
<section>
<title>Proposal</title>
<para>Mirantis proposes to introduce a new service which will allow a non-experienced user to deploy
reliable Windows based environments in a “push-the-button” manner. The key goal is to provide a UI
and API enabling the deployment and operation of Windows Environments at the Windows Services
abstraction level. The service should be able to orchestrate complex circular dependent cases in
order to set up a complex Windows Environment with multiple dependant services.
</para>
<para>The service will address following use cases:
<itemizedlist spacing="compact">
<listitem>
<para>Self-provisioning of predefined Windows services with their dependencies</para>
</listitem>
<listitem>
<para>Automation of administrative tasks during data center roll-out</para>
</listitem>
<listitem>
<para>Custom windows application as a windows service</para>
</listitem>
</itemizedlist>
</para>
<para>
The solution will provide higher level of abstraction for manipulation Windows Environments. Key
concepts are:
<itemizedlist spacing="compact">
<listitem>
<para>Windows Service - a service such as Active Directory, MSSQL, or IIS, which usually
consists of multiple virtual machines and has multiple dependencies.
</para>
</listitem>
<listitem>
<para>Windows Environment - a logical unit for all Services and represents a classical
Windows Datacenter
</para>
</listitem>
<listitem>
<para>Windows VM instance - a VM which hosts a Windows Service. A Windows Service might be
deployed
</para>
</listitem>
</itemizedlist>
</para>
<para>
The Key Features of the Service are the following:
<orderedlist>
<listitem>
<para>Native to OpenStack</para>
</listitem>
<listitem>
<para>Introduces abstraction level for Windows Environments</para>
</listitem>
<listitem>
<para>Supports Availability Zones and Disaster Recovery scenarios</para>
</listitem>
<listitem>
<para>Uses native Windows features for HA solutions</para>
</listitem>
</orderedlist>
</para>
</section>
</section>
<section xml:id="architecture">
<title>Architecture</title>
<para>
The Murano Service communicates with the following OpenStack components:
<itemizedlist>
<listitem>
<para>Horizon - provides a GUI with ability to use all Murano features;</para>
</listitem>
<listitem>
<para>Keystone - authenticates users and provides the security token that is used to work with
OpenStack, hence limiting the user abilities in Murano based on OpenStack privileges;
</para>
</listitem>
<listitem>
<para>Heat - is used to provision VMs and other OpenStack resources for Windows Environments;
</para>
</listitem>
<listitem>
<para>Glance - stores Windows Server VM images, with each image containing an installed OS and a
set of scripts
</para>
</listitem>
<listitem>
<para>Quantum - provides the network configuration API</para>
</listitem>
<listitem>
<para>Agent - provides agent functionality to communicate with the Orchestration Engine and
executes tasks on VMs
</para>
</listitem>
</itemizedlist>
</para>
<figure xml:id="muranoarchitecture">
<title>Architecture</title>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="figures/architecture_diagram.png"
contentwidth="5in"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="figures/architecture_diagram.png"/>
</imageobject>
</mediaobject>
</figure>
<section>
<title>REST API</title>
<para>Murano exposes a service endpoint for communication with a client. It exposes API functions to
manipulate objects such as environment and service.
</para>
<para>This component is responsible for translating API function parameters to Object Model attributes
and propagating the deployment status from the Orchestration Engine.
</para>
</section>
<section>
<title>Object Model</title>
<para>An internal representation of Windows Services and Environments. All attributes and entities are
described in the API specification.
</para>
</section>
<section>
<title>Orchestration Engine</title>
<para>This is the core component which evaluates Object Model changes and creates a plan for
implementing these changes on the instances or in the cloud. This component will support extensions
via plug-ins. Plugins can add new services and extend existing services for integration. Currently
there are two services which are already implemented as plugins. They are Active Directory and IIS
Service.
</para>
</section>
</section>
<section>
<title>Integration with Heat</title>
<para>Heat is a cloud resource management engine that allows you to manipulate resources that represent
OpenStack entities (Security Groups, Instances, Floating IPs, Volumes, etc.) and some entities such as
AutoScaling groups from a single point of control.
</para>
<para>OpenStack resource provisioning is one of the steps required for environment deployment and Heat will
be used for that purpose. Heat allows you to define all OpenStack resources in a single document that
will be easy to maintain and will not require resorting to multiple OpenStack APIs while keeping the
software configuration separate.
</para>
</section>
<section>
<title>Windows on OpenStack</title>
<para>Windows works on KVM pretty smoothly, and with the RedHat-created open-source VirtIO drivers for
Windows, its possible to work efficiently with KVM exposed devices.
</para>
<para>In OpenStacks Grizzly release, Microsofts hypervisor Hyper-V will be supported. The Hyper-V virtual
switch will be also supported as a Quantum plug-in. From the performance viewpoint, Hyper-V Server 2012
compares very favorably with bare metal, processing just over 6% fewer transactions per second compared
to the same workload running on a similarly configured physical server.
</para>
<para>Also, unlike the current OpenStack, Hyper-V also natively supports Windows Clusters.
</para>
</section>
</chapter>

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Known Issues</title>
<para>Due to current Heat limitations services that involve load-balancer creation (farms) can be deployed only by users having tenant administrator rights.
</para>
</chapter>

@ -1,98 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Screenshots</title>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../figures/screens/1.png"
contentwidth="5in"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/screens/1.png"/>
</imageobject>
</mediaobject>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../figures/screens/2.png"
contentwidth="5in"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/screens/2.png"/>
</imageobject>
</mediaobject>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../figures/screens/3.png"
contentwidth="5in"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/screens/3.png"/>
</imageobject>
</mediaobject>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../figures/screens/4.png"
contentwidth="5in"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/screens/4.png"/>
</imageobject>
</mediaobject>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../figures/screens/5.png"
contentwidth="5in"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/screens/5.png"/>
</imageobject>
</mediaobject>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../figures/screens/6.png"
contentwidth="5in"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/screens/6.png"/>
</imageobject>
</mediaobject>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../figures/screens/7.png"
contentwidth="5in"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/screens/7.png"/>
</imageobject>
</mediaobject>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../figures/screens/1.png"
contentwidth="5in"/>
</imageobject>
<imageobject role="html">
<imagedata fileref="../figures/screens/1.png"/>
</imageobject>
</mediaobject>
</chapter>

Binary file not shown.

Before

(image error) Size: 214 KiB

Binary file not shown.

Before

(image error) Size: 36 KiB

Binary file not shown.

Before

(image error) Size: 38 KiB

Binary file not shown.

Before

(image error) Size: 234 KiB

Binary file not shown.

Before

(image error) Size: 325 KiB

Binary file not shown.

Before

(image error) Size: 278 KiB

Binary file not shown.

Before

(image error) Size: 267 KiB

58
src/user-guide/pom.xml Normal file

@ -0,0 +1,58 @@
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mirantis.murano</groupId>
<artifactId>user-guide</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Murano User Guide</name>
<build>
<plugins>
<plugin>
<groupId>com.agilejava.docbkx</groupId>
<artifactId>docbkx-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate-pdf</goal>
<goal>generate-webhelp</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
<configuration>
<htmlCustomization>${basedir}/src/docbkx/style/config.xsl
</htmlCustomization>
<htmlStylesheet>${basedir}/src/docbkx/style/user-guide.css
</htmlStylesheet>
<xincludeSupported>true</xincludeSupported>
<chunkSectionDepth>100</chunkSectionDepth>
<postProcess>
<copy todir="target/docbkx/webhelp/user-guide/images">
<fileset dir="src/docbkx/images">
<include name="**/*.png"/>
</fileset>
</copy>
</postProcess>
</configuration>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,746 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>Murano dashboard plugin</title>
<para>
To use Murano you should be familiar with Openstack. Murano Dashboard is just a plugin to Openstack dashboard - Horizon.
Please visit
<link xlink:href="http://docs.openstack.org/user-guide/content/"> horizon user guide </link>
first to see how dashboard is organized and how to login to it.
</para>
<section>
<title>Creating environment</title>
<para> Once you installed all Murano components and login to horizon dashboard successfully you will see Environments panel:</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/env_panel.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
First thing you need to do is to create an environment - virtual Windows Data Center which will contain different Windows services.
Navigate to the "Environments" page and click the "Create Environment". After setting name to your virtual environment it will be created.
Just created environment has status <emphasis>Ready to configure</emphasis>.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/env_btn.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
</section>
<section>
<title>Creating service prototype</title>
<para >
All services should be created in the context of Environment
- virtual Windows Data Center. After Environment is created services prototypes
and then deploy the Environment. When deploy process is done instances
with your services will be spawned in Openstack.
To create a service prototype navigate to environment services by
clicking on the environment name (or on the "Services" button) and click
the "Create Service" button.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/service_btn.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
You have an opportunity to create one of the following services:
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/service_list.png" scalefit="1" width="100%" contentdepth="50%" />
</imageobject>
</mediaobject>
<para>
Once you choose service that you want to create click "Next" and fill the form.
Forms for each service are specific.
To see more information about filling the form for a specific service follow one of the link below:
</para>
<itemizedlist>
<listitem>
<para>
<emphasis role="bold"><link linkend="AD">Active Directory:</link></emphasis>
Active Directory is a directory service implemented by Microsoft for Windows domain networks.
In one installation, in addition to primary Domain Controller,
you can add optional count of secondary Domain Controllers.
Any other services you are intending to create can be
joined to that domain.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">
<link linkend="IIS">Internet Information Service:</link></emphasis>
IIS is a web server and a set of feature extension modules.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">
<link linkend="IISfarm">Internet Information Web Farm Service:</link>
</emphasis>
Murano installs the Web Farm Framework on the controller server,
configures the primary server and prepares the secondary servers.
In addition load balancer is installed to monitor service statuses.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">
<link linkend="ASP">ASP.NET Service:</link>
</emphasis>
is a server-side Web application framework designed for Web
development to produce dynamic Web pages. Service is able
to install custom application onto one IIS Web Server. Murano installs
all needed components and make proper configuration.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">
<link linkend="ASPfarm">ASP.NET Farm Service:</link>
</emphasis>
ASP.NET Farm Service installs a custom application on a
load-balanced array of IIS servers
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold"><link linkend="SQL">MS SQL Service:</link></emphasis>
Microsoft SQL Service is a relational database management system.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">
<link linkend="SQLfarm">SQL Server Failover Cluster:</link>
</emphasis>
Murano installs all needed components and configures your
SQL Server Cluster the way you want.
</para>
</listitem>
</itemizedlist>
<para>
On the last step of creating service prototype you have opportunity to set
the hardware flavor of the instance which will be created -
and the image with the operating system, which will be installed on
the instance. Also you may select availability zone, if there are more
then one in your environment.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/last_step.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<section xml:id="AD">
<title>Active Directory</title>
<para>
After you picked the Active Directory service in service creation
wizard you'll see the following form:
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/ad.png" width="100%" contentdepth="100%" format="PDF" />
</imageobject>
</mediaobject>
<para>
Enter or select values for this fields:
</para>
<informaltable rules="all" frame="border"
width="100%" cellpadding="3" cellspacing="3">
<col width="25%" align="left" style="font-weight:bold" valign="top"/>
<col width="70%" style="padding:6px"/>
<tbody>
<tr>
<td style="font-weight:bold">
<para>Domain name</para>
</td>
<td >
<para>
Enter a desired name for a new domain. This name should fit to
DNS Domain Name requirements: it should contain
only A-Z, a-z, 0-9, (.) and (-) and should not end with a dash.
DNS server will be automatically set up on each of the Domain
Controller instances.
Period characters are allowed only when they
are used to delimit the components of domain style
names. Single-level domain is not appropriate.
Note: Only first 15 characters or characters
before first period is used as NetBIOS name.
</para>
</td>
</tr>
<tr>
<td><para>Instance Count</para></td>
<td>
<para>
You can create several Active Directory instances by setting
instance number larger than one. One primary
Domain Controller and a few secondary DCs will be created.
</para>
</td>
</tr>
<tr>
<td><para>Account Name</para></td>
<td >
<para>
You account will have Active Directory administrator rights.
So initial value is "Administrator" but you can change it to any name you like.
</para>
</td>
</tr>
<tr>
<td><para>Administrator password</para></td>
<td>
<para>
Windows requires strong password for service administration.
Your password should have at least one letter
in each
register, a number and a special character.
Password length should be
a minimum of 7 characters.
Once you forget your password you won't be able
to
operate the service until recovery password
would be entered. So it's
better for Recovery and Administrator password
to be different.
</para>
</td>
</tr>
<tr>
<td><para>Confirm password</para></td>
<td>
<para>Password confirmation is required.</para>
</td>
</tr>
<tr>
<td><para>Recovery password</para></td>
<td>
<para>
Restrictions are the same as for the Administrator password.
Please provide password that is different from Administrator.
It's not required for form validation though.
</para>
</td>
</tr>
<tr>
<td><para>Confirm password</para></td>
<td>
<para>Password confirmation is required.</para>
</td>
</tr>
</tbody>
</informaltable>
</section>
<section xml:id="IIS">
<title>Internet Information Service</title>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/iis.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
</section>
<section xml:id="IISfarm">
<title>Internet Information Web Farm Service</title>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/iis_farm.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
</section>
<section xml:id="ASP">
<title>ASP.NET Service</title>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/asp_net.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
</section>
<section xml:id="ASPfarm">
<title>ASP.NET Farm Service</title>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/asp_net_farm.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
</section>
<section xml:id="SQL">
<title>MS SQL Service</title>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/sql.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
</section>
<section xml:id="SQLfarm">
<title>SQL Server Failover Cluster</title>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/cluster1.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>Enter or select values for the following fields:</para>
<informaltable rules="all" frame="border" width="100%" cellpadding="3"
cellspacing="3">
<col width="25%" align="left" style="font-weight:bold"
valign="top"/>
<col width="70%" style="padding:6px"/>
<tbody>
<tr>
<td style="font-weight:bold">
<para>Service Name</para>
</td>
<td>
<para>
Enter a desired name for a service. Just A-Z,
a-z, 0-9, dash and underline are allowed.
</para>
</td>
</tr>
<tr>
<td>
<para>Administrator password</para>
</td>
<td>
<para>
Windows requires strong password for service
administration.
Your password should have at least one letter
in each register, a number and a special character.
Password length should be a minimum of 7 characters.
</para>
</td>
</tr>
<tr>
<td>
<para>Confirm password</para>
</td>
<td>
<para>Password confirmation is required.</para>
</td>
</tr>
<tr>
<td>
<para>Active Directory is configured by the System Administrator
</para>
</td>
<td>
<para>
Enable this option only if you have properly configured rules
that will include service to the domain, that already exists in you environment.
Once you set this option to true, additional fields will appear. (See information below)
</para>
</td>
</tr>
<tr>
<td>
<para>Domain</para>
</td>
<td>
<para>
Service should be joined to the Active
Directory
domain. Please, create Active Directory Service
prototype first.
</para>
</td>
</tr>
<tr>
<td>
<para>Mixed-mode Authentication</para>
</td>
<td>
<para>
Mixed authentication mode allows the use of Windows
credentials but supplements them with local SQL
Server user accounts that the administrator may create and
maintain within SQL Server. If this mode is on SA password is required
</para>
</td>
</tr>
<tr>
<td>
<para>SA Password</para>
</td>
<td>
<para>
Set system administrator password for the MS SQL Server.
Password requirements are the same as previous.
</para>
</td>
</tr>
</tbody>
</informaltable>
<para>
In case pre-configured AD is enabled following fields will appeared:
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/cluster1a.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<informaltable rules="all" frame="border" width="100%" cellpadding="3"
cellspacing="3">
<col width="25%" align="left" style="font-weight:bold"
valign="top"/>
<col width="70%" style="padding:6px"/>
<tbody>
<tr>
<td style="font-weight:bold">
<para>Active Directory User</para>
<para>Active Directory Password</para>
</td>
<td>
<para>
Specify administrator user credentials to the existent AD domain
(to which service service will be join according to your system automation setup)
</para>
</td>
</tr>
</tbody>
</informaltable>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/cluster2.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/cluster3.png" scalefit="1"
width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
</section>
</section>
<section>
<title>Deploying environment</title>
<para>
Once all services are prepared you can send environment to deploy.
Just press the "Deploy Environment" button.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/deploy_btn.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
And you'll see a message about successful start of deploying your services in Openstack. Since now all you have to do is just wait for a little bit
while Murano installing and configuring your services.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/deploy_started.png" scalefit="1"
width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
You can monitor deploying process. Just go to the Log tab on service
detailed page, where you can get by clicking on the service name.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/service_name.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
And now you can see installation progress.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/logs.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
As long as installation and configuration are in progress, environment
is in <emphasis>Deploying</emphasis> state. Depending on how many
services you are deploying or how many nodes in your cluster, process of spawning instances,
installation and post installation settings takes from 10 minutes up to one hour.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/env_deploy.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
If installation process finished without any errors, environment changes its status to
<emphasis>Ready:</emphasis>
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/done.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
</section>
<section>
<title>Working with deployed environment</title>
<para>
Congratulations! After some time waiting you are able to operate with the services.
To get information about installed services, navigate to service detailed page.
To do that click on the environment name and then on the name of the service you what to know about.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/iis_farm_detail.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
Now you are seeing general information about the service in terms of Murano Environment.
To get information about the instance in Openstack terms follow the link on service instance name.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/name_link.png" scalefit="1"/>
</imageobject>
</mediaobject>
<para>
You can login to the virtual machine directly from the horizon (if your Openstack installation allows you) or by RDP protocol.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/instance_console.png" scalefit="1"
width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>There are more things you can do with Murano Environment:</para>
<itemizedlist>
<listitem>
<para><link linkend="redeploy">Add new services and deploy it again;</link></para>
</listitem>
<listitem>
<para><link linkend="delete">Delete outdated and unnecessary environments or services;</link></para>
</listitem>
<listitem>
<para><link linkend="deployments">Browse deployment history and service installation logs;</link></para>
</listitem>
<listitem>
<para><link linkend="edit">Rename your environment.</link></para>
</listitem>
</itemizedlist>
<section xml:id="redeploy">
<title>Redeploying Murano Environment</title>
<para>
Murano gives an opportunity to supplement already deployed environment.
Thus if you already deployed the Active Directory service and want to add
any other services just create desired service prototype and click the "Deploy Environment" button.
During service prototype creation you can join this service to the existent Active Directory domain.
</para>
</section>
<section xml:id="delete">
<title>Deleting</title>
<para>Services as well as environments can be easily deleted.</para>
<itemizedlist>
<listitem>
<para>To delete an environment go to the environment index page and click "More" -> "Delete Environment" in Actions column of ready to delete environment.</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/env_delete.png"
scalefit="1" width="100%"
contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
Environment deletion means to kill all services with instances on which they are installed.
Instances will be scheduled to delete right after you choose the "Delete Environment" action.
</para>
</listitem>
<listitem>
<para>
To delete a service go service list page and click the "Delete Service" button in Actions column. <emphasis role="bold">Note:</emphasis>
If you are deleting service that was already deployed you'll need to <emphasis>Deploy</emphasis> the environment again by pressing corresponding button.
In case you want to delete service prototype - it has <emphasis>"Service draft created"</emphasis> in the <emphasis>
Last operation</emphasis> column (see the screenshot below) - changes applies right away.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/service_delete.png"
scalefit="1" width="100%"
contentdepth="100%"/>
</imageobject>
</mediaobject>
</listitem>
</itemizedlist>
</section>
<section xml:id="deployments">
<title>Browsing Murano Deployment</title>
<para>
Since Murano Environment can be deployed many times you may want
to see the history of its deployments. To do that click the "More-> Show deployments"
button on environments index page:
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/env_show.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
From this page it's easy to see how many times and when Murano Environment was deployed:
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/deployments.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
For each deployment you can get a detailed information by clicking the "Show Details" button.
You always can go back to any level using navigation string at the page header.
From here you can observe what services were installed during deployment:
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/deployment_configuration.png"
scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>Also deployment logs are available at the "Logs" tab:</para>
<mediaobject>
<imageobject role="fo">
<imagedata
fileref="../images/deployment_logs.png"
scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
</section>
<section xml:id="edit">
<title>Renaming Murano Environment</title>
<para>
It's possible to change a name of your environment: just click the "More-> Edit Environment" button on environment index page:
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/env_edit.png" scalefit="1" width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
<para>
Environment name is not involved in service creation process so you can use spaces and any other
characters you want.
</para>
<mediaobject>
<imageobject role="fo">
<imagedata fileref="../images/env_edit2.png" scalefit="1"
width="100%" contentdepth="100%"/>
</imageobject>
</mediaobject>
</section>
</section>
<section xml:id="trouble">
<title>Troubleshooting</title>
<para><emphasis role="bold"> How to debug OpenStack Heat?</emphasis></para>
<para>
If you can execute Heat command via console interface - all good. It is
the most simple way to check Heat state on the node - jest execute CLI
command 'heat list'.
See more information about Heat in openstack wiki
<link xlink:href="https://wiki.openstack.org/wiki/Heat/TroubleShooting"> page</link>
</para>
<para><emphasis role="bold"> If 'heat list' returns 503 error</emphasis></para>
<para>
It means that OpenStack Heat configuration files contain incorrect
credentials. Need to set 'user' = 'heat' and change passwords
'verybadpass' in all configuration files from directory /etc/heat/
</para>
<para><emphasis role="bold">If 'heat list' hangs up</emphasis></para>
<para>
Sometimes you can see that 'heat list' hangs up. The root of this
problem - connection to the rabbitMQ.
</para>
<para><emphasis role="bold">How I can connect to LoadBalancer instance in Server Farms?</emphasis></para>
<para>
First of all you should have KeyPair file 'murano-lb-key'. You can
create this file using commands
<programlisting>
<![CDATA[
nova keypair-add murano-lb-key > murano-lb-key.priv
chmod 600 murano-lb-key.priv
]]>
</programlisting>
And after that server farms need to be created with this KeyPair.
The second step is to 'how to connect to VM with LoadBalancer':
<programlisting>
<![CDATA[
ssh -i murano-lb-key.priv root@10.0.0.3
]]>
</programlisting>
</para>
<para><emphasis role="bold">Murano dashboard can not connect to Murano API. How I can fix it?</emphasis></para>
<para>
This problem has two ways to fix:
Add string
<programlisting>
<![CDATA[
MURANO_API_URL='http://localhost:8082'
]]>
</programlisting>
to the /etc/openstack-dashboard/local_settings (or
/etc/openstack-dashboard/local_settings.py - it depends on OpenStack
configuration)
and after that web server restart is needed.
Add keystone endpoints for Murano API
<programlisting>
<![CDATA[
keystone service-create --name muranoapi --type murano --description "Murano-Api Service"
keystone endpoint-create --region RegionOne --service-id
--publicurl http://localhost:8082 --internalurl http://localhost:8082 --adminurl http://localhost:8082
]]>
</programlisting>
</para>
<para><emphasis role="bold">
Murano API Service does not work on CentOS 6.x. WebUI can not connect
to this service. How to fix this?</emphasis>
</para>
<para>
The problem in pip lib routes. Need to upgrade this lib and restart
Murano API:
<programlisting>
<![CDATA[
python-pip install routes --upgrade
initctl stop murano-api
initctl start murano-api
]]>
</programlisting>
</para>
<para><emphasis role="bold">
Error 'Unexpected state' during the deployment of Web Farms. What the
problem? </emphasis>
</para>
<para>
Sometimes we can see in deployments logs:
<programlisting>
<![CDATA[
2013-08-06 09:10:07 - Unable to deploy instance ipkrmhk0vzq4b6 (asp-farm_instance_0) due to Unexpected state
2013-08-06 09:10:07 - Unable to create a Server Farm load balancer on unit ipkrmhk0vzq4b6 (asp-farm_instance_0) due to Unexpected state
]]>
</programlisting>
The root of this problem is incorrect configuration - Heat can not
create Load Balancer instance. Please, remember that you should have
admin access for the project in OpenStack to deploy LoadBalancer and also,
you should have KeyPair with default name 'murano-lb-key'.
</para>
<para><emphasis role="bold">Error in Murano API logs 'No module named helpers.token_sanitizer'</emphasis></para>
<para>
This pip version problem. Need to install pip 1.4 and after that reinstall murano-client, murano-common and murano-api.
</para>
</section>
</chapter>

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2013 Mirantis, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://docbook.org/ns/docbook http://www.docbook.org/xml/5.0/xsd/docbook.xsd
http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd"
version="5.0">
<title>How can I use Murano Service?</title>
<para>
Murano is intended to get opportunity for non-experienced
users to deploy reliable Windows-based environments extremely simple.
This document describes process of creation virtual Windows Environment with different services.
</para>
<section>
<title>Document change history</title>
<para>The following table describes the most recent changes:</para>
<informaltable rules="all">
<thead>
<tr>
<td align="center" colspan="1">Revision Date</td>
<td align="center" colspan="4">Summary of Changes</td>
</tr>
</thead>
<tbody>
<tr>
<td colspan="1" align="center">September. 4, 2013</td>
<td colspan="4">
<itemizedlist>
<listitem>
<para>Initial document creation.</para>
</listitem>
</itemizedlist>
</td>
</tr>
</tbody>
</informaltable>
</section>
</chapter>

Binary file not shown.

After

(image error) Size: 30 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 29 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 4.6 KiB

Binary file not shown.

After

(image error) Size: 29 KiB

Binary file not shown.

After

(image error) Size: 20 KiB

Binary file not shown.

After

(image error) Size: 43 KiB

Binary file not shown.

After

(image error) Size: 39 KiB

Binary file not shown.

After

(image error) Size: 21 KiB

Binary file not shown.

After

(image error) Size: 29 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 30 KiB

Binary file not shown.

After

(image error) Size: 29 KiB

Binary file not shown.

After

(image error) Size: 34 KiB

Binary file not shown.

After

(image error) Size: 35 KiB

Binary file not shown.

After

(image error) Size: 36 KiB

Binary file not shown.

After

(image error) Size: 35 KiB

Binary file not shown.

After

(image error) Size: 34 KiB

Some files were not shown because too many files have changed in this diff Show More