Create official murano install guide.

Currently, murano does not have an official murano install guide
located at [0], which affects murano maturity at [1].

This patch creates the official murano install guide following
the tutorial here: [2].

Also adds tox entry for generating the install guide.

[0] https://docs.openstack.org/project-install-guide/ocata/ubuntu-services.html
[1] https://www.openstack.org/software/releases/ocata/components/murano
[2] https://docs.openstack.org/contributor-guide/project-install-guide.html

Change-Id: I98052b646f3b1e97915aa7382dd2e60eaa4a6137
This commit is contained in:
Felipe Monteiro 2017-03-04 16:37:51 +00:00
parent be6c9ef2c0
commit f72d767a93
13 changed files with 1099 additions and 0 deletions

View File

@ -0,0 +1,97 @@
Prerequisites
-------------
Before you install and configure the Application Catalog service,
you must create a database, service credentials, and API endpoints.
#. To create the database, complete these steps:
Murano can use various database types on the back end. For development
purposes, SQLite is enough in most cases. For production installations, you
should use MySQL or PostgreSQL databases.
.. warning::
Although murano could use a PostgreSQL database on the back end, it wasn't
thoroughly tested and should be used with caution.
..
* Use the database access client to connect to the database
server as the ``root`` user:
.. code-block:: console
$ mysql -u root -p
..
* Create the ``murano`` database:
.. code-block:: mysql
CREATE DATABASE murano;
..
* Grant proper access to the ``murano`` database:
.. code-block:: mysql
GRANT ALL PRIVILEGES ON murano.* TO 'murano'@'localhost' IDENTIFIED BY 'MURANO_DBPASS';
..
Replace ``MURANO_DBPASS`` with a suitable password.
* Exit the database access client.
.. code-block:: mysql
exit;
..
#. Source the ``admin`` credentials to gain access to
admin-only CLI commands:
.. code-block:: console
$ . admin-openrc
..
#. To create the service credentials, complete these steps:
* Create the ``murano`` user:
.. code-block:: console
$ openstack user create --domain default --password-prompt murano
..
* Add the ``admin`` role to the ``murano`` user:
.. code-block:: console
$ openstack role add --project service --user murano admin
..
* Create the murano service entities:
.. code-block:: console
$ openstack service create --name murano --description "Application Catalog" application-catalog
..
#. Create the Application Catalog service API endpoints:
.. code-block:: console
$ openstack endpoint create --region RegionOne \
application-catalog public http://<murano-ip>:8082
$ openstack endpoint create --region RegionOne \
application-catalog internal http://<murano-ip>:8082
$ openstack endpoint create --region RegionOne \
application-catalog admin http://<murano-ip>:8082
..
.. note::
URLs (publicurl, internalurl and adminurl) may be different
depending on your environment.
..

View File

@ -0,0 +1,301 @@
# 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.
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import os
# import sys
import openstackdocstheme
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
# sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
# TODO(ajaeger): enable PDF building, for example add 'rst2pdf.pdfbuilder'
# extensions =
# Add any paths that contain templates here, relative to this directory.
# templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
# source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'Installation Guide for Application Catalog Service'
bug_tag = u'install-guide'
copyright = u'2016, OpenStack contributors'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '0.1'
# The full version, including alpha/beta/rc tags.
release = '0.1'
# A few variables have to be set for the log-a-bug feature.
# giturl: The location of conf.py on Git. Must be set manually.
# gitsha: The SHA checksum of the bug description. Automatically extracted
# from git log.
# bug_tag: Tag for categorizing the bug. Must be set manually.
# These variables are passed to the logabug code via html_context.
giturl = u'http://git.openstack.org/cgit/openstack/murano/tree/install-guide/source' # noqa
git_cmd = "/usr/bin/git log | head -n1 | cut -f2 -d' '"
gitsha = os.popen(git_cmd).read().strip('\n')
html_context = {"gitsha": gitsha, "bug_tag": bug_tag,
"giturl": giturl,
"bug_project": "murano"}
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
# language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
# today = ''
# Else, today_fmt is used as the format for a strftime call.
# today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ["common_prerequisites.rst", "common_configure.rst"]
# The reST default role (used for this markup: `text`) to use for all
# documents.
# default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
# add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
# add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
# keep_warnings = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'openstackdocs'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
# html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = [openstackdocstheme.get_html_theme_path()]
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
# html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
# html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
# html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
# html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = []
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
# html_extra_path = []
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
# So that we can enable "log-a-bug" links from each output HTML page, this
# variable must be set to a format that includes year, month, day, hours and
# minutes.
html_last_updated_fmt = '%Y-%m-%d %H:%M'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
# html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
# html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
# html_additional_pages = {}
# If false, no module index is generated.
# html_domain_indices = True
# If false, no index is generated.
html_use_index = False
# If true, the index is split into individual pages for each letter.
# html_split_index = False
# If true, links to the reST sources are added to the pages.
html_show_sourcelink = False
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
# html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
# html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
# html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
# html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'install-guide'
# If true, publish source files
html_copy_source = False
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
# 'preamble': '',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
('index', 'InstallGuide.tex', u'Install Guide',
u'OpenStack contributors', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
# latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
# latex_use_parts = False
# If true, show page references after internal links.
# latex_show_pagerefs = False
# If true, show URL addresses after external links.
# latex_show_urls = False
# Documents to append as an appendix to all manuals.
# latex_appendices = []
# If false, no module index is generated.
# latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'installguide', u'Install Guide',
[u'OpenStack contributors'], 1)
]
# If true, show URL addresses after external links.
# man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
('index', 'InstallGuide', u'Install Guide',
u'OpenStack contributors', 'InstallGuide',
'This guide shows OpenStack end users how to install '
'an OpenStack cloud.', 'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
# texinfo_appendices = []
# If false, no module index is generated.
# texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
# texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
# texinfo_no_detailmenu = False
# -- Options for Internationalization output ------------------------------
locale_dirs = ['locale/']
# -- Options for PDF output --------------------------------------------------
pdf_documents = [
('index', u'InstallGuide', u'Install Guide',
u'OpenStack contributors')
]

View File

@ -0,0 +1,149 @@
..
Copyright 2014 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.
=================
SSL configuration
=================
Murano components are able to work with SSL. This section will help you
to configure proper settings for SSL configuration.
HTTPS for Murano API
====================
SSL for the Murano API service can be configured in the *ssl* section in
``/etc/murano/murano.conf``. Just point to a valid SSL certificate.
See the example below:
::
[ssl]
cert_file = PATH
key_file = PATH
ca_file = PATH
- *cert\_file* Path to the certificate file the server should use when binding to an SSL-wrapped socket.
- *key\_file* Path to the private key file the server should use when binding to an SSL-wrapped socket.
- *ca\_file* Path to the CA certificate file the server should use to validate client certificates provided during an SSL handshake. This is ignored if cert\_file and "key\_file" are not set.
.. note::
The use of SSL is automatically started after pointing to an HTTPS protocol
instead of HTTP, during the registration of the Murano API service endpoints
(Change publicurl argument to start with \https://).
..
SSL for Murano API is implemented like in any other OpenStack component.
This is because Murano uses the ssl python module; more information about
it can be found `here`_.
.. _`here`: https://docs.python.org/2/library/ssl.html
SSL for RabbitMQ
================
All Murano components communicate with each other via RabbitMQ. This
interaction can be encrypted with SSL. By default, all messages in Rabbit
MQ are not encrypted. Each RabbitMQ Exchange should be configured
separately.
**Murano API <-> Rabbit MQ exchange <-> Murano Engine**
Edit ssl parameters in default section of ``/etc/murano/murano.conf``. Set the
``rabbit_use_ssl`` option to *true* and configure the ssl kombu parameters.
Specify the path to the SSL keyfile and SSL CA certificate in a regular format:
/path/to/file without quotes or leave it empty to allow for self-signed
certificates.
::
# connect over SSL for RabbitMQ (boolean value)
#rabbit_use_ssl=false
# SSL version to use (valid only if SSL enabled). valid values
# are TLSv1, SSLv23 and SSLv3. SSLv2 may be available on some
# distributions (string value)
#kombu_ssl_version=
# SSL key file (valid only if SSL enabled) (string value)
#kombu_ssl_keyfile=
# SSL cert file (valid only if SSL enabled) (string value)
#kombu_ssl_certfile=
# SSL certification authority file (valid only if SSL enabled)
# (string value)
#kombu_ssl_ca_certs=
**Murano Agent -> Rabbit MQ exchange**
In the main murano configuration file, there is a section named *rabbitmq*,
which is responsible for setting up communication between Murano Agent and
Rabbit MQ. Just set the *ssl* parameter to True to enable ssl.
::
[rabbitmq]
host = localhost
port = 5672
login = guest
password = guest
virtual_host = /
ssl = True
If you want to configure Murano Agent in a different way, change the default
template. It can be found in the Murano Core Library, located at
*http://git.openstack.org/cgit/openstack/murano/tree/meta/io.murano/Resources/Agent-v1.template*.
Take a look at the appSettings section:
::
<appSettings>
<add key="rabbitmq.host" value="%RABBITMQ_HOST%"/>
<add key="rabbitmq.port" value="%RABBITMQ_PORT%"/>
<add key="rabbitmq.user" value="%RABBITMQ_USER%"/>
<add key="rabbitmq.password" value="%RABBITMQ_PASSWORD%"/>
<add key="rabbitmq.vhost" value="%RABBITMQ_VHOST%"/>
<add key="rabbitmq.inputQueue" value="%RABBITMQ_INPUT_QUEUE%"/>
<add key="rabbitmq.resultExchange" value=""/>
<add key="rabbitmq.resultRoutingKey" value="%RESULT_QUEUE%"/>
<add key="rabbitmq.durableMessages" value="true"/>
<add key="rabbitmq.ssl" value="%RABBITMQ_SSL%"/>
<add key="rabbitmq.allowInvalidCA" value="true"/>
<add key="rabbitmq.sslServerName" value=""/>
</appSettings>
The desired parameter should be set directly to the value of the key that
you want to change. Quotes need to be kept. Thus you can change
"rabbitmq.ssl" and "rabbitmq.port" values to make Rabbit MQ work with
this exchange differently than the default Murano Engine way.
.. note::
After modification, don't forget to zip and re-upload the core library.
..
SSL for Murano Dashboard
========================
If you are not going to use self-signed certificates, additional
configuration does not need to be done. Just prefix https in the URL.
Otherwise, set *MURANO_API_INSECURE = True* in Horizon's config file. You can
find it in ``/etc/openstack-dashboard/local_settings.py.``.

View File

@ -0,0 +1,23 @@
====================================
Application Catalog service overview
====================================
The Application Catalog service consists of the following components:
``murano`` command-line client
A CLI that communicates with the ``murano-api`` to publish various
cloud-ready applications on new virtual machines.
``murano-api`` service
An OpenStack-native REST API that processes API requests by sending
them to the ``murano-engine`` service via AMQP.
``murano-agent`` service
The agent that runs on guest VMs and executes the deployment plan,
a combination of execution plan templates and scripts.
``murano-engine`` service
The workflow component of Murano, responsible for the deployment of an
environment.
``murano-dashboard`` service
Murano UI implemented as a plugin for the OpenStack Dashboard.

View File

@ -0,0 +1,36 @@
..
Copyright 2014 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.
Applications need to be imported to fill the catalog.
This can be done via the dashboard or via CLI:
1. Clone the murano apps repository.
.. code-block:: console
cd ~/murano
git clone git://git.openstack.org/openstack/murano-apps
..
2. Import every package you need from this repository, using the command
below.
.. code-block:: console
cd ~/murano/murano
pushd ../murano-apps/Docker/Applications/%APP-NAME%/package
zip -r ~/murano/murano/app.zip *
popd
tox -e venv -- murano --murano-url http://<murano-ip>:8082 package-import app.zip

View File

@ -0,0 +1,21 @@
===========================
Application Catalog service
===========================
.. toctree::
:maxdepth: 2
get_started.rst
install.rst
verify.rst
next-steps.rst
The Murano Project introduces an application catalog to OpenStack, enabling
application developers and cloud administrators to publish various cloud-ready
applications in a browsable categorized catalog. Cloud users -- including
inexperienced ones -- can then use the catalog to compose reliable application
environments with the push of a button.
This chapter assumes a working setup of OpenStack following the
`OpenStack Installation Tutorial
<https://docs.openstack.org/project-install-guide/ocata/>`_.

View File

@ -0,0 +1,189 @@
..
Copyright 2014 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.
Install Murano API
~~~~~~~~~~~~~~~~~~
This section describes how to install and configure the Application Catalog
service for Ubuntu 14.04 (LTS).
.. include:: common_prerequisites.rst
Install and configure components
--------------------------------
#. Install the packages:
.. code-block:: console
# apt-get update
# apt-get install
#. Edit the ``/etc/murano/murano.conf`` file and complete the following
actions:
* In the ``[database]`` section, configure database access:
.. code-block:: ini
[database]
...
connection = mysql+pymysql://murano:MURANO_DBPASS@controller/murano
Install the API service and Engine
----------------------------------
#. Create a folder which will hold all Murano components.
.. code-block:: console
mkdir ~/murano
..
#. Clone the murano git repository to the management server.
.. code-block:: console
cd ~/murano
git clone git://git.openstack.org/openstack/murano
..
#. Set up the murano config file
Murano has a common config file for API and Engine services.
First, generate a sample configuration file, using tox
.. code-block:: console
cd ~/murano/murano
tox -e genconfig
..
And make a copy of it for further modifications
.. code-block:: console
cd ~/murano/murano/etc/murano
ln -s murano.conf.sample murano.conf
..
#. Edit ``murano.conf`` with your favorite editor. Below is an example
which contains basic settings you likely need to configure.
.. note::
The example below uses SQLite database. Edit **[database]** section
if you want to use any other database type.
..
.. code-block:: ini
[DEFAULT]
debug = true
verbose = true
rabbit_host = %RABBITMQ_SERVER_IP%
rabbit_userid = %RABBITMQ_USER%
rabbit_password = %RABBITMQ_PASSWORD%
rabbit_virtual_host = %RABBITMQ_SERVER_VIRTUAL_HOST%
driver = messagingv2
...
[database]
backend = sqlalchemy
connection = sqlite:///murano.sqlite
...
[keystone]
auth_url = 'http://%OPENSTACK_HOST_IP%:5000/v2.0'
...
[keystone_authtoken]
auth_uri = 'http://%OPENSTACK_HOST_IP%:5000/v2.0'
auth_host = '%OPENSTACK_HOST_IP%'
auth_port = 5000
auth_protocol = http
admin_tenant_name = %OPENSTACK_ADMIN_TENANT%
admin_user = %OPENSTACK_ADMIN_USER%
admin_password = %OPENSTACK_ADMIN_PASSWORD%
...
[murano]
url = http://%YOUR_HOST_IP%:8082
[rabbitmq]
host = %RABBITMQ_SERVER_IP%
login = %RABBITMQ_USER%
password = %RABBITMQ_PASSWORD%
virtual_host = %RABBITMQ_SERVER_VIRTUAL_HOST%
[networking]
default_dns = 8.8.8.8 # In case openstack neutron has no default
# DNS configured
..
#. Create a virtual environment and install Murano prerequisites. We will use
*tox* for that. The virtual environment will be created under *.tox*
directory.
.. code-block:: console
cd ~/murano/murano
tox
..
#. Create database tables for Murano.
.. code-block:: console
cd ~/murano/murano
tox -e venv -- murano-db-manage \
--config-file ./etc/murano/murano.conf upgrade
..
#. Open a new console and launch Murano API. A separate terminal is
required because the console will be locked by a running process.
.. code-block:: console
cd ~/murano/murano
tox -e venv -- murano-api --config-file ./etc/murano/murano.conf
..
#. Import Core Murano Library.
.. code-block:: console
cd ~/murano/murano
pushd ./meta/io.murano
zip -r ../../io.murano.zip *
popd
tox -e venv -- murano --murano-url http://localhost:8082 \
package-import --is-public io.murano.zip
..
#. Open a new console and launch Murano Engine. A separate terminal is
required because the console will be locked by a running process.
.. code-block:: console
cd ~/murano/murano
tox -e venv -- murano-engine --config-file ./etc/murano/murano.conf
..

View File

@ -0,0 +1,144 @@
..
Copyright 2014 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.
Install Murano Dashboard
========================
Murano API & Engine services provide the core of Murano. However, your need a
control plane to use it. This section describes how to install and run Murano
Dashboard.
#. Clone the murano dashboard repository.
.. code-block:: console
cd ~/murano
git clone git://git.openstack.org/openstack/murano-dashboard
..
#. Clone the ``horizon`` repository
.. code-block:: console
git clone git://git.openstack.org/openstack/horizon
..
#. Create a virtual environment and install ``muranodashboard`` as an editable
module:
.. code-block:: console
cd horizon
tox -e venv -- pip install -e ../murano-dashboard
..
#. Prepare local settings.
.. code-block:: console
cp openstack_dashboard/local/local_settings.py.example \
openstack_dashboard/local/local_settings.py
..
For more information, check out the official
`horizon documentation <http://docs.openstack.org/developer/horizon/topics/settings.html#openstack-settings-partial>`_.
#. Enable and configure Murano dashboard in the OpenStack Dashboard:
* For Newton (and later) OpenStack installations, copy the plugin file,
local settings files, and policy files.
.. code-block:: console
cp ../murano-dashboard/muranodashboard/local/enabled/*.py \
openstack_dashboard/local/enabled/
cp ../murano-dashboard/muranodashboard/local/local_settings.d/*.py \
openstack_dashboard/local/local_settings.d/
cp ../murano-dashboard/muranodashboard/conf/* openstack_dashboard/conf/
..
* For the OpenStack installations prior to the Newton release, run:
.. code-block:: console
cp ../murano-dashboard/muranodashboard/local/_50_murano.py \
openstack_dashboard/local/enabled/
..
Customize local settings of your horizon installation, by editing the
:file:`openstack_dashboard/local/local_settings.py` file:
.. code-block:: python
...
ALLOWED_HOSTS = '*'
# Provide OpenStack Lab credentials
OPENSTACK_HOST = '%OPENSTACK_HOST_IP%'
...
DEBUG_PROPAGATE_EXCEPTIONS = DEBUG
..
Change the default session back end-from using browser cookies to using a
database instead to avoid issues with forms during the creation of
applications:
.. code-block:: python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'murano-dashboard.sqlite',
}
}
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
..
#. (Optional) If you do not plan to get the murano service from the keystone
application catalog, specify where the murano-api service is running:
.. code-block:: python
MURANO_API_URL = 'http://%MURANO_IP%:8082'
..
#. (Optional) If you have set up the database as a session back-end (this is
done by default with the murano local_settings file starting with Newton),
perform database migration:
.. code-block:: console
tox -e venv -- python manage.py migrate --noinput
..
#. Run the Django server at 127.0.0.1:8000 or provide different IP and PORT
parameters:
.. code-block:: console
tox -e venv -- python manage.py runserver <IP:PORT>
..
.. note::
The development server restarts automatically following every code change.
..
**Result:** The murano dashboard is available at http://IP:PORT.

View File

@ -0,0 +1,61 @@
..
Copyright 2014 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.
=====================
Network Configuration
=====================
Murano may work in various networking environments and is capable of detecting
the current network configuration and choosing the appropriate settings
automatically. However, some additional actions are required to support
advanced scenarios.
Nova network support
====================
Nova Network is the simplest networking solution, which has limited
capabilities but is available on any OpenStack deployment without the need to
deploy any additional components. For more information about Nova Network, see
`<https://docs.openstack.org/admin-guide/compute-networking-nova.html>`__.
When a new Murano Environment is created, Murano checks if a dedicated
networking service (i.e. Neutron) exists in the current OpenStack deployment.
It relies on Keystone's service catalog for that. If such a service is not
present, Murano automatically falls back to Nova Network. No further
configuration is needed in this case; all the VMs spawned by Murano will join
the same network.
Neutron support
===============
If Neutron is installed, Murano enables its advanced networking features that
give you the ability to not care about configuring networks for your
application.
By default, Murano will create an isolated network for each environment and
attach all VMs needed by your application to that network. To install and
configure applications in just-spawned virtual machines, Murano also requires
a router connected to the external network.
Automatic Neutron network configuration
=======================================
To create a router automatically, provide the following parameters in the
config file:
.. code-block:: ini
[networking]
external_network = %EXTERNAL_NETWORK_NAME%
router_name = %MURANO_ROUTER_NAME%
create_router = true
..

View File

@ -0,0 +1,31 @@
.. _install:
Install and configure
~~~~~~~~~~~~~~~~~~~~~
This section describes how to install and configure the
Application Catalog service, code-named murano, on the controller node.
This section assumes that you already have a working OpenStack environment with
at least the following components installed: Identity service, Image service,
Compute service, Networking service, Block Storage service and Orchestration
service. See `OpenStack Install Guides <http://docs.openstack.org/
#install-guides>`__.
Note that installation and configuration vary by distribution. Currently,
this installation guide is tailored toward Ubuntu environments, but can easily
be adapted to work with other types of distros.
.. note::
Fedora support wasn't thoroughly tested. We do not guarantee that murano
will work on Fedora.
..
.. toctree::
:maxdepth: 2
install-api.rst
install-dashboard.rst
install-network-config.rst
enable-ssl.rst

View File

@ -0,0 +1,19 @@
.. _next-steps:
Next steps
~~~~~~~~~~
Your OpenStack environment now includes the Murano service.
Import Murano Applications
--------------------------
.. include:: import-murano-apps.rst
Additional Resources
--------------------
#. To add additional services, see
`<https://docs.openstack.org/project-install-guide/ocata/>`__.
#. If you would like to add glare as the storage service for packages, see:
`<https://docs.openstack.org/developer/murano/administrator-guide/using_glare.html>`__.

View File

@ -0,0 +1,25 @@
.. _verify:
Verify operation
~~~~~~~~~~~~~~~~
Verify operation of the Application Catalog service.
.. note::
Perform these commands on the controller node.
#. Source the ``admin`` project credentials to gain access to
admin-only CLI commands:
.. code-block:: console
$ . admin-openrc
#. List service components to verify successful launch and registration
of each process:
.. code-block:: console
$ openstack service list | grep application-catalog
| 7b12ef5edef848fc9200c271f71b1307 | murano | application-catalog |

View File

@ -62,6 +62,9 @@ commands =
[testenv:releasenotes] [testenv:releasenotes]
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
[testenv:install-guide]
commands = sphinx-build -a -E -W -d install-guide/build/doctrees -b html install-guide/source install-guide/build/html
[testenv:api-ref] [testenv:api-ref]
# This environment is called from CI scripts to test and publish # This environment is called from CI scripts to test and publish
# the API Ref to developer.openstack.org. # the API Ref to developer.openstack.org.