Moon installation and configuration instruction¶
1. Build Python Packages and Docker Images¶
1.1. Python Package¶
1.1.1. pre-requist¶
Get the code
git clone https://git.opnfv.org/moon cd moon/moonv4 export MOON_HOME=$(pwd) sudo ln -s $(pwd)/conf /etc/moon
Install python wheel
sudo apt install python3-wheel
Install pip twine
sudo pip install twine
Package code, wheel is a new format instead of tar.gz
python setup.py sdist bdist_wheel
Upload to PyPi
twine upload dist/moon_xxx-y.y.y.whl twine upload dist/moon_xxx-y.y.y.tar.gz
Install a package from PyPi
sudo pypi install moon_xxx –upgrade
1.1.2. moon_db¶
- change version in moon_db/__init__.py
- add Changelog
1.1.3. moon_utilities¶
- change version in moon_utilities/__init__.py
- add Changelog
1.1.4. moon_orchestrator¶
- change version in moon_orchestrator/__init__.py
- add Changelog
1.1.5. Build All Pip¶
sudo pip3 install pip –upgrade cd ${MOON_HOME}/bin source build_all_pip.sh
1.2. Container¶
1.2.1. keystone_mitaka¶
see templates/docker/keystone/README.md to build the keystone_mitaka container
1.3. How to hack the Moon platform¶
1.3.1. Force the build of components¶
If you want to rebuild one or more component, you have to modify the configuration file moon.conf.
For example, if you want to rebuild the moon_interface, got to the [interface] section and delete the value of the container key like this:
[interface] host=172.18.0.11 port=38001 # Name of the container to download (if empty build from scratch) # example: container=moon/moon_interface:latest container=
You can configure the interface, the router and both the security_function and security_policy. You can also force the version of the component like this: container=moon/moon_interface:4.0.0
1.3.2. Update the moon_interface¶
Go to the directory ${MOON_HOME}/moon_interface and update the code accordingly to your needs, then update the python package.
cd ${MOON_HOME}/moon_interface python setup.py sdist cp dist/moon_interface_* ../moon_orchestrator/dist # kill moon_orchestrator if needed and restart it
1.3.3. Update the moon_secrouter¶
Go to the directory ${MOON_HOME}/moon_secrouter and update the code accordingly to your needs, then update the python package.
cd ${MOON_HOME}/moon_secrouter python setup.py sdist cp dist/moon_secrouter* ../moon_orchestrator/dist # kill moon_orchestrator if needed and restart it
1.4. Problems that may arise¶
If the moon_orchestrator doesn’t want to start (with, for example, the following error: docker.errors.APIError: 409 Client Error: Conflict), check if the router and interface containers still exist and kill and delete them:
docker kill moon_interface docker kill moon_router docker rm moon_interface docker rm moon_router
If the moon_orchestrator complains that it cannot request the RabbitMQ server, check if the messenger server is up and running:
docker ps # you must see the messenger running here # if not, restart it docker run -dti –net=moon –hostname messenger –name messenger –link messenger:messenger
-e RABBITMQ_DEFAULT_USER=moon -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_NODENAME=rabbit@messenger -e RABBITMQ_DEFAULT_VHOST=moon -p 5671:5671 -p 5672:5672 rabbitmq:3-management
1.5. Configure DB¶
1.5.1. Relaunch Keystone docker¶
If error of get_keystone_projects(), then relaunch the Keystone docker, and wait 40 seconds!!!
docker rm -f keystone docker run -dti –net moon –name keystone –hostname=keystone -e DB_HOST=db -e DB_PASSWORD_ROOT=p4sswOrd1 -p 35357:35357 -p 5000:5000 keystone:mitaka
1.5.2. Add default data in DB¶
Pre-fill the DB with a RBAC policy
cd ${MOON_HOME}/moon_interface/tests/apitests python3 populate_default_values.py scenario/ rbac.py