diff --git a/doc/user/Makefile b/doc/user/Makefile new file mode 100644 index 0000000..ee88bfa --- /dev/null +++ b/doc/user/Makefile @@ -0,0 +1,177 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/FuelNSXtplugin.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/FuelNSXtplugin.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/FuelNSXtplugin" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/FuelNSXtplugin" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/doc/user/conf.py b/doc/user/conf.py new file mode 100644 index 0000000..b6c3260 --- /dev/null +++ b/doc/user/conf.py @@ -0,0 +1,255 @@ +# -*- coding: utf-8 -*- +# +# Fuel NSX-T plugin documentation build configuration file, created by +# sphinx-quickstart on Fri Aug 14 12:14:29 2015. +# +# 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 sys +import os + +# 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. +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'Fuel NSX-T plugin' +copyright = u'2016, Mirantis Inc.' + +# 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 = '1.0.0' +# The full version, including alpha/beta/rc tags. +release = '1.0-1.0.0-1' + +# 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 = [] + +# 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 = 'default' + +# 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 = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v 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 = ['_static'] + +# 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. +#html_last_updated_fmt = '%b %d, %Y' + +# 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 = True + +# 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 = True + +# 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 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 = 'FuelNSX-Tplugindoc' + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + 'classoptions': ',openany,oneside', + 'babel': '\\usepackage[english]{babel}' +} + +# 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', 'nsx-t-user-guide-' + version + '.tex', u'Fuel NSX-T plugin documentation', + u'Mirantis Inc.', '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', 'fuelnsxtplugin', u'Fuel NSX-T plugin documentation', + [u'Mirantis Inc.'], 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', 'FuelNSX-Tplugin', u'Fuel NSX-T plugin documentation', + u'Mirantis Inc.', 'FuelNSX-Tplugin', 'One line description of project.', + '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 + +# Insert footnotes where they are defined instead of at the end. +pdf_inline_footnotes = True diff --git a/doc/user/image/floating-ip.png b/doc/user/image/floating-ip.png new file mode 100644 index 0000000..20adb3c Binary files /dev/null and b/doc/user/image/floating-ip.png differ diff --git a/doc/user/image/neutron-nsxt-item.png b/doc/user/image/neutron-nsxt-item.png new file mode 100644 index 0000000..9530a1a Binary files /dev/null and b/doc/user/image/neutron-nsxt-item.png differ diff --git a/doc/user/image/nsx-t-mgmt.png b/doc/user/image/nsx-t-mgmt.png new file mode 100644 index 0000000..21b29dc Binary files /dev/null and b/doc/user/image/nsx-t-mgmt.png differ diff --git a/doc/user/image/nsx-t-public.png b/doc/user/image/nsx-t-public.png new file mode 100644 index 0000000..432b536 Binary files /dev/null and b/doc/user/image/nsx-t-public.png differ diff --git a/doc/user/image/nsxt-settings.png b/doc/user/image/nsxt-settings.png new file mode 100644 index 0000000..4fe59a2 Binary files /dev/null and b/doc/user/image/nsxt-settings.png differ diff --git a/doc/user/image/public-network-assignment.png b/doc/user/image/public-network-assignment.png new file mode 100644 index 0000000..516514f Binary files /dev/null and b/doc/user/image/public-network-assignment.png differ diff --git a/doc/user/image/stt-interface.png b/doc/user/image/stt-interface.png new file mode 100644 index 0000000..58e8425 Binary files /dev/null and b/doc/user/image/stt-interface.png differ diff --git a/doc/user/image/uca-archive.png b/doc/user/image/uca-archive.png new file mode 100644 index 0000000..b671de3 Binary files /dev/null and b/doc/user/image/uca-archive.png differ diff --git a/doc/user/index.rst b/doc/user/index.rst new file mode 100644 index 0000000..ec66b1f --- /dev/null +++ b/doc/user/index.rst @@ -0,0 +1,27 @@ +.. Fuel NSX-T plugin documentation master file + +Welcome to Fuel NSX-T plugin's documentation! +============================================ + +The Fuel NSX-T plugin allows end user to use VMware NSX Transformers SDN +as network backend for Neutron. + +The plugin supports VMware NSX Transformers version 1.0.0 and 1.0.1. + +The pre-built package of the plugin is in +`Fuel Plugin Catalog `_. + +Documentation contents +====================== + +.. toctree:: + :maxdepth: 2 + + source/installation + source/environment + source/configuration + source/limitations + source/usage + source/troubleshooting + source/release-notes + source/build diff --git a/doc/user/source/build.rst b/doc/user/source/build.rst new file mode 100644 index 0000000..f834b26 --- /dev/null +++ b/doc/user/source/build.rst @@ -0,0 +1,49 @@ +How to build the plugin from source +=================================== + +To build the plugin, you first need to install fuel-plugin-builder_ 4.1.0 + +.. code-block:: bash + + $ pip install fuel-plugin-builder==4.1.0 + +Build the plugin: + +.. code-block:: bash + + $ git clone https://git.openstack.org/openstack/fuel-plugin-nsx-t + + $ cd fuel-plugin-nsx-t/ + +The librarian-puppet_ ruby package is required to be installed. It is used to fetch +upstream fuel-library_ puppet modules that the plugin uses. It can be installed via +the *gem* package manager: + +.. code-block:: bash + + $ gem install librarian-puppet + +or if you are using ubuntu linux, you can install it from the repository: + +.. code-block:: bash + + $ apt-get install librarian-puppet + +and build the plugin: + +.. code-block:: bash + + $ fpb --build . + +fuel-plugin-builder will produce an .rpm package of the plugin which you need to +upload to the Fuel master node: + +.. code-block:: bash + + $ ls nsx*.rpm + + nsx-t-1.0-1.0.0-1.noarch.rpm + +.. _fuel-plugin-builder: https://pypi.python.org/pypi/fuel-plugin-builder/4.1.0 +.. _librarian-puppet: http://librarian-puppet.com +.. _fuel-library: https://github.com/openstack/fuel-library diff --git a/doc/user/source/configuration.rst b/doc/user/source/configuration.rst new file mode 100644 index 0000000..a0e6082 --- /dev/null +++ b/doc/user/source/configuration.rst @@ -0,0 +1,86 @@ +Configuration +============= + +Node interfaces for overlay traffic +----------------------------------- + +NSX Transformers uses STT protocol to carry virtual machines traffic. Plugin +requires that interfaces which are going to be used for STT traffic must not +carry any other traffic (PXE, storage, openstack management). + +.. image:: /image/stt-interface.png + +Switch to the :guilabel:`Networks` tab of the Fuel web UI and click the +:guilabel:`Settings`/`Other` label. The plugin checkbox is enabled +by default. The screenshot below shows only the settings in focus: + +.. image:: /image/nsxt-settings.png + :scale: 60 % + +The plugin contains the following settings: + +#. Bypass NSX Manager certificate verification -- if enabled, the HTTPS + connection to NSX Manager is not verified. Otherwise, the two following + options are available: + + * The setting "CA certificate file" appears below making it possible to + upload a CA certificate that issued the NSX Manager certificate. + + * With no CA certificate provided, the NSX Manager certificate is verified + against the CA certificate bundle that comes with Ubuntu 14.04. + +#. NSX Manager -- IP address or hostname, multiple values can be separated by + comma. If you are going to use hostname in this textbox, ensure that your + OpenStack controller can resolve the hostname. Add necessary DNS servers in + the :guilabel:`Host OS DNS Servers` section. + + OpenStack Controller must have L3 connectivity with NSX Manager through + the Public network which is used as default route. + +#. Overlay transport zone ID -- UUID of overlay (STT) transport zone which must + be pre-created in NSX Manager. + +#. VLAN transport zone ID --- UUID of transport zone which represents network + that connects virtual machines with physical infrastructure. + +#. Tier-0 router ID -- UUID of tier0 router that must exist in NSX Transformers. + +#. Edge cluster -- UUID of NSX edge nodes cluster that must be installed and + configured. + +#. Uplink profile ID -- UUID of uplink profile which specifies STT interfaces + configuration (e.g. MTU value). + + +#. IP pool ID for controller VTEPs -- UUID of IP pool that will be assigned to + controllers STT interfaces. + +#. Colon separated pnics pairs for controller nodes -- this field sets + correspondence between physical NIC and uplink name that is used in "Uplink + profile ID" on controller nodes, e.g. ``enp0s1:uplink``. Each pair must be one + separate line. + + .. warning:: + Uplink name must exactly match value of "Active uplink" or "Standby + uplink" in uplink switch profile that was specified above. + +#. IP pool ID for compute VTEPs -- UUID of IP pool that will be assigned to + STT interfaces of compute nodes. + +#. Colon separated pnics pairs for compute nodes -- this fields sets + correspondence between physical NIC and uplink name that is used in "Uplink + profile ID" on compute nodes, e.g. "enp0s1:uplink". Each pair must be one + separate line. + +#. Floating IP ranges -- dash-separated IP addresses allocation pool for + external network, e.g. "172.16.212.2-172.16.212.40". + +#. External network CIDR -- network in CIDR notation that includes floating IP ranges. + +#. Gateway -- default gateway for the external network; if not defined, the + first IP address of the network is used. + +#. Internal network CIDR -- network in CIDR notation for use as internal. + +#. DNS for internal network -- comma-separated IP addresses of DNS server for + internal network. diff --git a/doc/user/source/environment.rst b/doc/user/source/environment.rst new file mode 100644 index 0000000..bf0c377 --- /dev/null +++ b/doc/user/source/environment.rst @@ -0,0 +1,58 @@ +OpenStack environment notes +=========================== + +Environment configuration +------------------------- + +The Fuel NSX-T plugin cannot deploy NSX Transformers. + +Before you start OpenStack deployment, verify that your VMware NSX Transformers +is configured and functions properly: + +* VLAN transport zone must present +* Overlay transport zone must present +* tier0 router must be created +* uplink profile for OpenStack nodes must be created +* NSX edge cluster must be formed +* IP address pool for OpenStack controllers and compute nodes must exist + +To use the NSX-T plugin, create a new OpenStack environment using the Fuel web +UI by doing the following: + +#. On the :guilabel:`Networking setup` configuration step, select + :guilabel:`Neutron with NSX-T plugin` radio button + + .. image:: /image/neutron-nsxt-item.png + :scale: 70 % + +Network setup +------------- + +Pay attention to on which interface you assign the *Public* network. The +OpenStack controllers must have connectivity with the NSX Manager host +through the *Public* network since the *Public* network is the default +route for packets. + +If NSX Manager and NSX Controllers are going to communicate with OpenStack +controllers and computes through Public network then setting :guilabel:`Assign +public network to all nodes` (Networks tab -> Settings/Other label) must be +enabled. Otherwise compute node will be communicating with NSX Manager through +controller that perform NAT which will hide compute node IP addresses and will +prevent them to register in NSX management plane. + + .. image:: /image/nsx-t-public.png + :scale: 100% + +Another way is to locate NSX nodes in OpenStack management network. In this +setup there is no need to assign public network to all nodes, because OpenStack +and NSX nodes has L2 connectivity and no NAT is performed. OpenStack +controllers and computes will still use Public network as default route. + + .. image:: /image/nsx-t-mgmt.png + :scale: 100% + +During the deployment, the plugin creates a simple network topology for +the admin tenant. The plugin creates a provider network which connects the +tenants with the transport (physical) network: one internal network and +a router that is connected to both networks. + diff --git a/doc/user/source/installation.rst b/doc/user/source/installation.rst new file mode 100644 index 0000000..0579738 --- /dev/null +++ b/doc/user/source/installation.rst @@ -0,0 +1,41 @@ +Installation +============ + +#. Download the plugin .rpm package from the `Fuel plugin catalog`_. + +#. Upload the package to the Fuel master node. + +#. Install the plugin with the ``fuel`` command-line tool: + + .. code-block:: bash + + [root@nailgun ~] fuel plugins --install nsx-t-1.0-1.0.0-1.noarch.rpm + + +#. Verify that the plugin installation is successful: + + .. code-block:: bash + + [root@nailgun ~] fuel plugins list + id | name | version | package_version | releases + ---+-------+---------+-----------------+-------------------- + 6 | nsx-t | 1.0.0 | 4.0.0 | ubuntu (mitaka-9.0) + +After the installation, the plugin can be used on new OpenStack clusters; +you cannot enable the plugin on the deployed clusters. + + + +Uninstallation +-------------- + +Before uninstalling the plugin, ensure there no environments left that use the +plugin, otherwise the uninstallation is not possible. + +To uninstall the plugin, run following: + +.. code-block:: bash + + [root@nailgun ~] fuel plugins --remove nsx-t==1.0.0 + +.. _Fuel plugin catalog: https://www.mirantis.com/products/openstack-drivers-and-plugins/fuel-plugins diff --git a/doc/user/source/limitations.rst b/doc/user/source/limitations.rst new file mode 100644 index 0000000..221bc10 --- /dev/null +++ b/doc/user/source/limitations.rst @@ -0,0 +1,41 @@ +Limitations +=========== + +NSX-T plugin cannot be used simultaneously with NSXv plugin +----------------------------------------------------------- + +Since both plugins provide the same network component called +``network:neutron:core:nsx`` it is not possible to use both plugins together. + + +The plugin is not hotpluggable +------------------------------ + +It is not possible to enable plugin on already existing OpenStack. + + +Ubuntu cloud archive distribution is not supported +-------------------------------------------------- + + .. image:: /image/uca-archive.png + :scale: 70 % + +Fuel 9.0 provides two options for OpenStack release. One is plain Ubuntu +distribution, another one includes Ubuntu cloud archive. The plugin does not +support Ubuntu cloud archive packages. + + +Ironic service is not supported +------------------------------- + +Ironic service requires control of top of rack switches and can not be used +with NSX Transformers. + + +OpenStack environment reset/deletion +------------------------------------ + +The Fuel NSX-T plugin does not provide a cleanup mechanism when an OpenStack +environment is reset or deleted. All registered transport nodes, logical +switches and routers remain intact, it is up to the operator to delete them and +free resources. diff --git a/doc/user/source/release-notes.rst b/doc/user/source/release-notes.rst new file mode 100644 index 0000000..ee9f240 --- /dev/null +++ b/doc/user/source/release-notes.rst @@ -0,0 +1,6 @@ +Release notes +============= + +Release notes for Fuel NSX-T plugin 1.0.0: + + * Plugin is compatible with Fuel 9.0 and 9.1. diff --git a/doc/user/source/troubleshooting.rst b/doc/user/source/troubleshooting.rst new file mode 100644 index 0000000..6d06e2c --- /dev/null +++ b/doc/user/source/troubleshooting.rst @@ -0,0 +1,84 @@ + +.. _troubleshooting: + +Troubleshooting +=============== + +Neutron NSX plugin issues +------------------------- + +The Neutron NSX-T plugin does not have a separate log file, its messages +are logged by the neutron server. The default log file on OpenStack controllers +for neutron server is ``/var/log/neutron/server.log`` + +Inability to resolve NSX Manager hostname +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you see following message: + +:: + + 2016-10-18 ... INFO vmware_nsx.plugins.nsx_v3.plugin [-] Starting NsxV3Plugin + 2016-10-18 ... INFO vmware_nsx.nsxlib.v3.cluster [-] Endpoint 'https://nsxmanager.mydom.org' + changing from state 'INITIALIZED' to 'DOWN' + 2016-10-18 ... WARNING vmware_nsx.nsxlib.v3.cluster [-] Failed to validate API cluster endpoint + '[DOWN] https://nsxmanager.mydom.org' due to: HTTPSConnectionPool(host='nsxmanager.mydom.org', + port=443): Max retries exceeded with url: /a...nes (Caused by NewConnectionError( + ': + Failed to establish a new connection: [Errno -2] Name or service not known',)) + 2016-10-18 ... ERROR neutron.service [-] Unrecoverable error: please check log for details. + 2016-10-18 ... ERROR neutron.service Traceback (most recent call last): + ... + 2016-10-18 ... ERROR neutron.service ServiceClusterUnavailable: Service cluster: + 'https://nsxmanager.mydom.org' is unavailable. Please, check NSX setup and/or configuration + + +It means that the controller cannot resolve the NSX Manager hostname +(``nsxmanager.mydom.org`` in this example) that is specified in the +configuration file. +Check that the DNS server IP addresses that you specified in the +:guilabel:`Host OS DNS Servers` section of the Fuel web UI are correct +and reachable by all controllers; pay attention to that the default route +for controllers is *Public* network. Also, verify that the hostname that you +entered is correct by trying to resolve it via the ``host`` or ``dig`` programs. + +SSL/TLS certificate problems +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:: + + 2016-10-28 12:32:26.086 2832 INFO vmware_nsx.nsxlib.v3.cluster [-] Endpoint + 'https://172.16.0.249' changing from state 'INITIALIZED' to 'DOWN' + 2016-10-28 12:32:26.087 2832 WARNING vmware_nsx.nsxlib.v3.cluster [-] Failed to + validate API cluster endpoint '[DOWN] https://172.16.0.249' due to: [Errno 1] + _ssl.c:510: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed + + +This error indicates that you enabled the SSL/TLS certificate verification, but +the certificate verification failed during connection to NSX Manager. +The possible causes are: + + #. NSX Manager certificate expired. Log into NSX Manager web GUI and check + certificate validation dates. + #. Check if the certification authority (CA) certificate is still valid. + The CA certificate is specified by ``ca_file`` directive in ``nsx.ini`` + (usually ``/etc/neutron/plugins/vmware/nsx.ini`` on controller node). + +User access problems +~~~~~~~~~~~~~~~~~~~~ + +:: + + 2016-10-28 12:28:20.060 18259 INFO vmware_nsx.plugins.nsx_v3.plugin [-] Starting NsxV3Plugin + 2016-10-28 12:28:20.201 18259 WARNING vmware_nsx.nsxlib.v3.client [-] The HTTP request returned error code 403, + whereas 200 response codes were expected. Response body {u'module_name': u'common-service', + u'error_message': u'The username/password combination is incorrect or the account specified has been locked.', u'error_code': u'98'} + 2016-10-28 12:28:20.202 18259 INFO vmware_nsx.nsxlib.v3.cluster [-] Endpoint 'https://172.16.0.249' changing + from state 'INITIALIZED' to 'DOWN' + 2016-10-28 12:28:20.203 18259 WARNING vmware_nsx.nsxlib.v3.cluster [-] Failed to validate API cluster endpoint + '[DOWN] https://172.16.0.249' due to: Unexpected error from backend manager (['172.16.0.249']) for GET https://172.16.0.249/api/ + v1/transport-zones : The username/password combination is incorrect or the account specified has been locked. + + +Verify that username and password that are entered on the plugins pane are +correct. diff --git a/doc/user/source/usage.rst b/doc/user/source/usage.rst new file mode 100644 index 0000000..fb1f846 --- /dev/null +++ b/doc/user/source/usage.rst @@ -0,0 +1,36 @@ +Usage +===== + +The easiest way to check that the plugin works as expected is to create a +network or router using the ``neutron`` command-line tool: + +:: + + [root@nailgun ~]# ssh node-4 # node-4 is a controller node + root@node-4:~# . openrc + root@node-4:~# neutron router-create r1 + +You can monitor the plugin actions in ``/var/log/neutron/server.log`` and see +how edges appear in the list of the ``Networking & Security -> NSX Edges`` +pane in vSphere Web Client. If you see error messages, check the +:ref:`Troubleshooting ` section. + +STT MTU considerations +---------------------- + +NSX Transformers uses STT protocol to encapsulate VM traffic. The protocol adds +additional data to the packet. Consider increasing MTU on the network equipment +connected to hosts that will emit STT traffic. + +Consider the following calculation: + +Outer IPv4 header == 20 bytes + +Outer TCP header == 24 bytes + +STT header == 18 bytes + +Inner Ethernet frame == 1518 (14 bytes header, 4 bytes 802.1q header, 1500 Payload) + +Summarizing all of these we get 1580 bytes. Consider increasing MTU on the +network hardware up to 1600 bytes.