Merge "Adds instructions for manual Trove installation"
This commit is contained in:
commit
307b014b78
@ -11,7 +11,7 @@ To quickly run the tests for Python 2.7, run:
|
|||||||
$ tox -epy27
|
$ tox -epy27
|
||||||
|
|
||||||
To quickly run PEP8, run:
|
To quickly run PEP8, run:
|
||||||
$ to -epep8
|
$ tox -epep8
|
||||||
|
|
||||||
To generate a coverage report,run:
|
To generate a coverage report,run:
|
||||||
$ tox -ecover
|
$ tox -ecover
|
||||||
|
260
doc/source/dev/manual_install.rst
Normal file
260
doc/source/dev/manual_install.rst
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
.. _manual_install:
|
||||||
|
|
||||||
|
=========================
|
||||||
|
Manual Trove Installation
|
||||||
|
=========================
|
||||||
|
|
||||||
|
Objectives
|
||||||
|
==========
|
||||||
|
|
||||||
|
This document is aimed to provide a step-by-step guide for manual installation of Trove with an existing OpenStack
|
||||||
|
environment for development purposes.
|
||||||
|
|
||||||
|
This document does not cover OpenStack setup.
|
||||||
|
|
||||||
|
This document does not cover production-specific moments like high availability or security.
|
||||||
|
|
||||||
|
This document does not cover all possible configurations. It only provides one possible way to get things
|
||||||
|
running.
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
- PC with freshly installed Ubuntu 12.04 to run Trove services. This will be referred to as "local PC"
|
||||||
|
|
||||||
|
- Running Openstack Grizzly environment. All of Grizzly's services must be accessible directly from the local PC
|
||||||
|
|
||||||
|
- AMQP service provided by RabbitMQ
|
||||||
|
|
||||||
|
- MySQL database for Trove's internal needs, accessible from the local PC
|
||||||
|
|
||||||
|
- Though it is not required by OpenStack itself, all OpenStack services must be accessible via network from virtual machines
|
||||||
|
|
||||||
|
- Trove's database must be accessible from VMs, i.e. one must be able to connect to DB from VM
|
||||||
|
|
||||||
|
- VMs must be accessible from local PC (same network)
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
-----------
|
||||||
|
Gather info
|
||||||
|
-----------
|
||||||
|
|
||||||
|
..
|
||||||
|
TODO: Requirements below (e.g. admin credentials) are obviously excessive. Try to use regular account.
|
||||||
|
|
||||||
|
The following information about existing environment is required:
|
||||||
|
|
||||||
|
- Keystone host and port(s)
|
||||||
|
|
||||||
|
- OpenStack administrator's username, tenant and password
|
||||||
|
|
||||||
|
- Nova compute URL
|
||||||
|
|
||||||
|
- Cinder URL
|
||||||
|
|
||||||
|
- Swift URL
|
||||||
|
|
||||||
|
- RabbitMQ URL, user Id, password
|
||||||
|
|
||||||
|
- Trove's MySQL connection string
|
||||||
|
|
||||||
|
--------------------
|
||||||
|
Install dependencies
|
||||||
|
--------------------
|
||||||
|
* Install required packages::
|
||||||
|
|
||||||
|
# sudo apt-get install build-essential libxslt1-dev qemu-utils mysql-client git python-dev python-pexpect python-mysqldb
|
||||||
|
|
||||||
|
* Some packages in Ubuntu repo are outdated, so install their latest version from sources::
|
||||||
|
|
||||||
|
# cd ~
|
||||||
|
# wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.9.8.tar.gz
|
||||||
|
# tar xfvz setuptools-0.9.8.tar.gz
|
||||||
|
# cd setuptools-0.9.8
|
||||||
|
# python setup.py install --user
|
||||||
|
|
||||||
|
# cd ~
|
||||||
|
# wget https://pypi.python.org/packages/source/p/pip/pip-1.4.1.tar.gz
|
||||||
|
# tar xfvz pip-1.4.1.tar.gz
|
||||||
|
# cd pip-1.4.1
|
||||||
|
# python setup.py install --user
|
||||||
|
|
||||||
|
# cd ~
|
||||||
|
|
||||||
|
* Note '--user' above -- we installed packages in user's home dir, in $HOME/.local/bin, so we need to add it to path::
|
||||||
|
|
||||||
|
# echo PATH="$HOME/.local/bin:$PATH" >> ~/.profile
|
||||||
|
# . ~/.profile
|
||||||
|
|
||||||
|
* Install virtualenv, create environment and activate it::
|
||||||
|
|
||||||
|
# pip install virtualenv --user
|
||||||
|
# virtualenv --system-site-packages env
|
||||||
|
# . env/bin/activate
|
||||||
|
|
||||||
|
|
||||||
|
------------
|
||||||
|
Obtain Trove
|
||||||
|
------------
|
||||||
|
* Get Trove's sources from git::
|
||||||
|
|
||||||
|
# git clone https://github.com/openstack/trove.git
|
||||||
|
# git clone https://github.com/openstack/python-troveclient.git
|
||||||
|
|
||||||
|
-------------
|
||||||
|
Install Trove
|
||||||
|
-------------
|
||||||
|
* First install required python packages::
|
||||||
|
|
||||||
|
# cd ~/trove
|
||||||
|
# pip install -r requirements.txt
|
||||||
|
|
||||||
|
* Resolve dependency conflicts (if there are any)
|
||||||
|
|
||||||
|
Trove is being built and tested against latest versions of OpenStack components that can be obtained from GitHub.
|
||||||
|
But setup downloads dependencies from PyPI which may contain outdated versions. This may cause a dependency conflicts.
|
||||||
|
E.g. for now python-cinderclient from PyPI requires older 'requests' than one installed by default, so fix it manually::
|
||||||
|
|
||||||
|
# pip install --upgrade 'requests<1.2.3'
|
||||||
|
|
||||||
|
or consider manual installing fresh OpenStack components from GitHub
|
||||||
|
|
||||||
|
* Install Trove itself::
|
||||||
|
|
||||||
|
# python setup.py develop
|
||||||
|
|
||||||
|
* Install Trove CLI::
|
||||||
|
|
||||||
|
# cd ~/python-troveclient
|
||||||
|
# python setup.py develop
|
||||||
|
# cd ~
|
||||||
|
|
||||||
|
* We'll need glance client as well::
|
||||||
|
|
||||||
|
# pip install python-glanceclient
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
Prepare OpenStack
|
||||||
|
-----------------
|
||||||
|
* Create a tenant 'trove' and user 'trove' with password 'trove' to be used with Trove.
|
||||||
|
|
||||||
|
These values are not required to all be 'trove'; you can instead choose your own values for the name,
|
||||||
|
tenant, and password::
|
||||||
|
|
||||||
|
# keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword>
|
||||||
|
--os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIp>:35357/v2.0
|
||||||
|
tenant-create --name trove
|
||||||
|
|
||||||
|
# keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword>
|
||||||
|
--os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIp>:35357/v2.0
|
||||||
|
user-create --name trove --pass trove --tenant trove
|
||||||
|
|
||||||
|
# keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword>
|
||||||
|
--os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIp>:35357/v2.0
|
||||||
|
user-role-add --name trove --tenant trove --role admin
|
||||||
|
|
||||||
|
* Create service for trove::
|
||||||
|
|
||||||
|
# keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword>
|
||||||
|
--os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIp>:35357/v2.0
|
||||||
|
service-create --name trove --type database
|
||||||
|
|
||||||
|
* Create an endpoint that points to localhost. Pay attention to the use of quotes (')::
|
||||||
|
|
||||||
|
# keystone --os-username <OpenStackAdminUsername> --os-password <OpenStackAdminPassword>
|
||||||
|
--os-tenant-name <OpenStackAdminTenant> --os-auth-url http://<KeystoneIp>:35357/v2.0
|
||||||
|
endpoint-create --service trove --region RegionOne
|
||||||
|
--publicurl 'http://localhost:8779/v1.0/$(tenant_id)s'
|
||||||
|
--adminurl 'http://localhost:8779/v1.0/$(tenant_id)s'
|
||||||
|
--internalurl 'http://localhost:8779/v1.0/$(tenant_id)s'
|
||||||
|
|
||||||
|
---------------------------------
|
||||||
|
Prepare Trove configuration files
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
There are several configuration files for Trove:
|
||||||
|
|
||||||
|
- api-paste.ini and trove.conf -- for trove-api
|
||||||
|
|
||||||
|
- trove-taskmanager.conf -- for trove-taskmanager
|
||||||
|
|
||||||
|
- trove-guestagent.conf -- for trove-guestagent
|
||||||
|
|
||||||
|
- <service_type>.cloudinit -- cloudinit scripts for different service types. For now only 'mysql' and 'percona' are recognized as valid service types. NOTE: file names must exactly follow the pattern, e.g. 'mysql.cloudinit'
|
||||||
|
|
||||||
|
Samples of the above are available in $TROVE/trove/etc/trove/ as *.conf.sample files.
|
||||||
|
|
||||||
|
If a vanilla Ubuntu image used as a source image for Trove instances, then it is cloudinit script's responsibility
|
||||||
|
to install and run Trove guestagent in the instance.
|
||||||
|
|
||||||
|
As an alternative one may consider creating a custom image with pre-installed and pre-configured Trove in it.
|
||||||
|
|
||||||
|
-------------
|
||||||
|
Prepare image
|
||||||
|
-------------
|
||||||
|
* As the source image for trove instances, we will use a cloudinit-enabled vanilla Ubuntu image::
|
||||||
|
|
||||||
|
# wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
|
||||||
|
|
||||||
|
* Convert the downloaded image into uncompressed qcow2::
|
||||||
|
|
||||||
|
# qemu-img convert -O qcow2 precise-server-cloudimg-amd64-disk1.img precise.qcow2
|
||||||
|
|
||||||
|
* Upload the converted image into Glance::
|
||||||
|
|
||||||
|
# glance --os-username trove --os-password trove --os-tenant-name trove --os-auth-url http://<KeystoneIp>:35357/v2.0
|
||||||
|
image-create --name trove-image --public --container-format ovf --disk-format qcow2 --owner trove < precise.qcow2
|
||||||
|
|
||||||
|
----------------
|
||||||
|
Prepare database
|
||||||
|
----------------
|
||||||
|
* Initialize the database::
|
||||||
|
|
||||||
|
# trove-manage --config-file=<PathToTroveConf> db_wipe trove_test.sqlite mysql fake
|
||||||
|
|
||||||
|
* Setup trove to use the uploaded image. Enter the following in a single line, note quotes (') and backquotes(`)::
|
||||||
|
|
||||||
|
# trove-manage --config-file=<PathToTroveConf> image_update mysql
|
||||||
|
`nova --os-username trove --os-password trove --os-tenant-name trove
|
||||||
|
--os-auth-url http://<KeystoneIp>:5000/v2.0 image-list | awk '/trove-image/ {print $2}'`
|
||||||
|
|
||||||
|
---------
|
||||||
|
Run Trove
|
||||||
|
---------
|
||||||
|
* Run trove-api::
|
||||||
|
|
||||||
|
# trove-api --config-file=<PathToTroveConf> &
|
||||||
|
|
||||||
|
* Run trove-taskmanager::
|
||||||
|
|
||||||
|
# trove-taskmanager --config-file=<PathToTroveTaskmanagerConf> &
|
||||||
|
|
||||||
|
* Try executing a trove command, like get-instance. You must first issue an "auth login" to obtain an API key.::
|
||||||
|
|
||||||
|
# trove-cli --username=trove --apikey=trove --tenant=trove --auth_url=http://<KeystoneIp>:35357/v2.0/tokens auth login
|
||||||
|
|
||||||
|
# trove-cli instance list
|
||||||
|
|
||||||
|
|
||||||
|
Troubleshooting
|
||||||
|
===============
|
||||||
|
|
||||||
|
-------------
|
||||||
|
No instance IPs in the output of 'trove-cli instance get'
|
||||||
|
-------------
|
||||||
|
|
||||||
|
If Trove instance is created properly, is in the state ACTIVE, and is known for sure to be working,
|
||||||
|
but there are no IP addresses for the instance in the output of 'trove-cli instance get <id>', then make sure
|
||||||
|
the following lines are added to trove.conf::
|
||||||
|
|
||||||
|
add_addresses = True
|
||||||
|
network_label_regex = ^NETWORK_NAME$
|
||||||
|
|
||||||
|
where NETWORK_NAME should be replaced with real name of the nova network to which the instance is connected to.
|
||||||
|
|
||||||
|
One possible way to find the nova network name is to execute the 'nova list' command. The output will list
|
||||||
|
all Openstack instances for the tenant, including network information. Look for ::
|
||||||
|
|
||||||
|
NETWORK_NAME=IP_ADDRESS
|
@ -31,6 +31,8 @@ github in the `Trove Integration`_ Repository.
|
|||||||
For further details on how to install Trove using the integration
|
For further details on how to install Trove using the integration
|
||||||
scripts please refer to the :doc:`dev/install` page.
|
scripts please refer to the :doc:`dev/install` page.
|
||||||
|
|
||||||
|
For further details on how to install Trove to work with existing
|
||||||
|
OpenStack environment please refer to the :doc:`dev/manual_install` page.
|
||||||
|
|
||||||
Developer Resources
|
Developer Resources
|
||||||
===================
|
===================
|
||||||
|
Loading…
Reference in New Issue
Block a user