33ca6ad556
The current Tacker implementation does not support PostgreSQL, and differences between the MySQL and PostgreSQL implementations can cause errors in practice. This patch implements PostgreSQL support through Tacker and tacker-db-manage. Note that UT/FT is not added because conventional tests can cover this patch. Implements: blueprint support-multidb-backend Change-Id: Ide07befdb26f6b173d1185fe0dbcf59f8f3dbf81
252 lines
7.2 KiB
ReStructuredText
252 lines
7.2 KiB
ReStructuredText
..
|
|
Copyright 2015-2016 Brocade Communications Systems Inc
|
|
All Rights Reserved.
|
|
|
|
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 via Devstack
|
|
====================
|
|
|
|
Overview
|
|
--------
|
|
|
|
Devstack based installation requires ``local.conf`` file.
|
|
This file contains different configuration options required for
|
|
installation.
|
|
|
|
Tacker provides some sample ``local.conf`` templates which can be
|
|
used for Devstack based Tacker installation.
|
|
You can find them in ``${TACKER_ROOT}/devstack`` directory in the
|
|
tacker repository.
|
|
|
|
Devstack supports installation from different code branches by
|
|
specifying branch name in your ``local.conf``.
|
|
|
|
* For latest version installation, use ``master`` branch.
|
|
* For specific release based installation, use corresponding branch name.
|
|
For ex, to install ``wallaby`` release, use ``stable/wallaby``.
|
|
|
|
For installation, ``stack.sh`` script in Devstack should be run as a
|
|
non-root user with sudo enabled.
|
|
Add a separate user ``stack`` and granting relevant privileges is a
|
|
good way to install via Devstack [#f0]_.
|
|
|
|
Hardware Requirements
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
We recommend that your system meets the following hardware requirements:
|
|
|
|
.. note::
|
|
|
|
These are reference values to install ``Openstack and Kubernetes as VIM``
|
|
which generally requires the most resources. In reality, more parameters
|
|
affect required resources.
|
|
|
|
.. list-table::
|
|
:widths: 20 80
|
|
:header-rows: 1
|
|
|
|
* - Criteria
|
|
- Recommended
|
|
* - CPU
|
|
- 4 cores or more
|
|
* - RAM
|
|
- 16 GB or more
|
|
* - Storage
|
|
- 80 GB or more
|
|
|
|
.. note::
|
|
|
|
We recommend that you run DevStack in a VM, rather than on your bare-metal
|
|
server. If you have to run devstack on a bare-metal server, It is recommended
|
|
to use a server that has at least two network interfaces [#f1]_.
|
|
|
|
Install
|
|
-------
|
|
|
|
Devstack installation script ``stack.sh`` expects ``local.conf``.
|
|
|
|
So the first step of installing tacker is to clone Devstack and prepare your
|
|
``local.conf``.
|
|
|
|
#. Download DevStack
|
|
|
|
Get Devstack via git, with specific branch optionally if you prefer,
|
|
and go down to the directory.
|
|
|
|
.. code-block:: console
|
|
|
|
$ git clone https://opendev.org/openstack/devstack -b <branch-name>
|
|
$ cd devstack
|
|
|
|
#. Enable tacker related Devstack plugins in ``local.conf`` file
|
|
|
|
The ``local.conf`` can be created manually, or copied from Tacker
|
|
repo [#f2]_. If copied, rename it as ``local.conf``.
|
|
|
|
We have two choices for configuration basically:
|
|
|
|
#. All-in-one mode
|
|
|
|
All-in-one mode installs full Devstack environment including
|
|
Tacker in one PC or Laptop.
|
|
|
|
There are two examples for ``all-in-one`` mode:
|
|
|
|
#. OpenStack as VIM.
|
|
|
|
The example ``local.conf`` file for all-in-one mode with OpenStack
|
|
is available at ``${TACKER_ROOT}/devstack/local.conf.example``.
|
|
|
|
Refer below the contents of ``local.conf.example``:
|
|
|
|
.. literalinclude:: ../../../devstack/local.conf.example
|
|
:language: ini
|
|
|
|
|
|
#. Openstack and Kubernetes as VIM.
|
|
|
|
The difference between all-in-one mode with Kubernetes is
|
|
to deploy kuryr-kubernetes and octavia.
|
|
|
|
The example ``local.conf`` for all-in-one mode with Kubernetes is
|
|
available at ``${TACKER_ROOT}/devstack/local.conf.kubernetes``
|
|
|
|
Refer below the contents of ``local.conf.kubernetes``
|
|
|
|
.. literalinclude:: ../../../devstack/local.conf.kubernetes
|
|
:language: ini
|
|
:emphasize-lines: 60-65
|
|
|
|
.. note::
|
|
|
|
The above local.conf.kubernetes does not work on CentOS8.
|
|
Because docker-ce is not supported on CentOS8.
|
|
|
|
#. Standalone mode
|
|
|
|
Standalone mode installs only Tacker environment with some
|
|
mandatory OpenStack services. Nova, Neutron or other essential
|
|
components are not included in this mode.
|
|
|
|
|
|
The example ``local.conf`` for standalone mode is available at
|
|
``${TACKER_ROOT}/devstack/local.conf.standalone``
|
|
|
|
Refer below the contents of ``local.conf.standalone``
|
|
|
|
.. literalinclude:: ../../../devstack/local.conf.standalone
|
|
:language: ini
|
|
|
|
#. In CentOS environment install and start ovn services before executing
|
|
stack.sh.
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo yum install -y centos-release-openstack-victoria
|
|
$ sudo yum install -y openvswitch
|
|
$ sudo yum install -y openvswitch-ovn-common
|
|
$ sudo yum install -y openvswitch-ovn-central
|
|
$ sudo yum install -y openvswitch-ovn-host
|
|
$ sudo systemctl start ovn-northd.service
|
|
$ sudo systemctl start ovn-controller.service
|
|
$ sudo systemctl start ovs-vswitchd.service
|
|
$ sudo systemctl start ovsdb-server.service
|
|
|
|
#. Execute installation script
|
|
|
|
After saving the ``local.conf``, we can run ``stack.sh`` in the terminal
|
|
to start installation.
|
|
|
|
.. code-block:: console
|
|
|
|
$ ./stack.sh
|
|
|
|
Use PostgreSQL as Tacker database
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
When installing via Devstack, MySQL is used as Tacker database backend
|
|
by default.
|
|
|
|
To use PostgreSQL as Tacker database backend, execute the following command.
|
|
|
|
#. Install PostgreSQL and login.
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo apt install postgresql postgresql-contrib
|
|
$ sudo -i -u postgres
|
|
$ psql
|
|
|
|
#. Create PostgreSQL database and user.
|
|
|
|
.. code-block::
|
|
|
|
CREATE DATABASE tacker;
|
|
CREATE ROLE tacker WITH CREATEDB LOGIN PASSWORD '<TACKERDB_PASSWORD>';
|
|
exit;
|
|
|
|
#. Modify ``postgresql.conf`` and restart PostgreSQL server.
|
|
|
|
.. note::
|
|
|
|
The location of ``postgresql.conf`` is different for each distribution.
|
|
For Ubuntu distribution, modify
|
|
``/etc/postgresql/{POSTGRESQL_VERSION}/main/postgresql.conf``.
|
|
|
|
|
|
Insert ``escape`` as the value of ``bytea_output`` in ``postgresql.conf``.
|
|
|
|
.. code-block:: ini
|
|
|
|
bytea_output = 'escape'
|
|
|
|
Restart PostgreSQL server.
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo service postgresql restart
|
|
|
|
#. Modify ``tacker.conf`` for PostgreSQL and restart Tacker server.
|
|
|
|
Edit the configuration of [database] in ``/etc/tacker/tacker.conf``
|
|
as follows.
|
|
|
|
.. code-block:: ini
|
|
|
|
[database]
|
|
connection = postgresql://tacker:<POSTGRES_PASSWORD>@<POSTGRES_IP>/tacker?client_encoding=utf8
|
|
|
|
Restart Tacker server.
|
|
|
|
.. code-block:: console
|
|
|
|
$ sudo systemctl restart devstack@tacker.service
|
|
$ sudo systemctl restart devstack@tacker-conductor.service
|
|
|
|
#. Populate Tacker database.
|
|
|
|
.. code-block:: console
|
|
|
|
$ /usr/local/bin/tacker-db-manage \
|
|
--config-file /etc/tacker/tacker.conf \
|
|
upgrade head
|
|
|
|
.. rubric:: Footnotes
|
|
|
|
.. [#f0] https://docs.openstack.org/devstack/latest/
|
|
.. [#f1] https://docs.openstack.org/devstack/latest/networking.html
|
|
.. [#f2] https://opendev.org/openstack/tacker/src/branch/master/devstack
|