diff options
Diffstat (limited to 'docs/platform/installation.rst')
-rw-r--r-- | docs/platform/installation.rst | 315 |
1 files changed, 315 insertions, 0 deletions
diff --git a/docs/platform/installation.rst b/docs/platform/installation.rst new file mode 100644 index 000000000..a10f02689 --- /dev/null +++ b/docs/platform/installation.rst @@ -0,0 +1,315 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Installation +------------ + +.. contents:: + :depth: 3 + +The installation of ONAP Policy is **automated** by design and can be done via Docker as a standalone system. +Various tools, including healthcheck, logs, and Swagger can be used to ensure proper operation. + +ONAP Policy Framework: Standalone Quick Start +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +This procedure explains how build the ONAP Policy Framework and get it running in Docker as a standalone system. +This procedure assumes that: + +* You are using a *\*nix* operating system such as linux or macOS. +* You are using a directory called *git* off your home directory *(~/git)* for your git repositories +* Your local maven repository is in the location *~/.m2/repository* + +The procedure documented here has been verified to work on a MacBook laptop running macOS Sierra Version 10.12.6 and a HP Z600 desktop running Ubuntu 16.04.3 LTS. + + +.. code-block:: bash + :caption: Typical ONAP Policy Framework Clone Script + :linenos: + + #!/usr/bin/env bash + + ## script name for output + MOD_SCRIPT_NAME=`basename $0` + + ## the ONAP clone directory, defaults to "onap" + clone_dir="onap" + + ## the ONAP repos to clone + onap_repos="\ + oparent \ + ecompsdkos \ + policy/api \ + policy/common \ + policy/docker \ + policy/drools-applications \ + policy/drools-pdp \ + policy/engine \ + policy/gui \ + policy/pap \ + policy/pdp" + + ## + ## Help screen and exit condition (i.e. too few arguments) + ## + Help() + { + echo "" + echo "$MOD_SCRIPT_NAME - clones all required ONAP git repositories" + echo "" + echo " Usage: $MOD_SCRIPT_NAME [-options]" + echo "" + echo " Options" + echo " -d - the ONAP clone directory, defaults to '.'" + echo " -h - this help screen" + echo "" + exit 255; + } + + ## + ## read command line + ## + while [ $# -gt 0 ] + do + case $1 in + #-d ONAP clone directory + -d) + shift + if [ -z "$1" ]; then + echo "$MOD_SCRIPT_NAME: no clone directory" + exit 1 + fi + clone_dir=$1 + shift + ;; + + #-h prints help and exists + -h) + Help;exit 0;; + + *) echo "$MOD_SCRIPT_NAME: undefined CLI option - $1"; exit 255;; + esac + done + + if [ -f "$clone_dir" ]; then + echo "$MOD_SCRIPT_NAME: requested clone directory '$clone_dir' exists as file" + exit 2 + fi + if [ -d "$clone_dir" ]; then + echo "$MOD_SCRIPT_NAME: requested clone directory '$clone_dir' exists as directory" + exit 2 + fi + + mkdir $clone_dir + if [ $? != 0 ] + then + echo cannot clone ONAP repositories, could not create directory '"'$clone_dir'"' + exit 3 + fi + + for repo in $onap_repos + do + repoDir=`dirname "$repo"` + repoName=`basename "$repo"` + + if [ ! -z $dirName ] + then + mkdir "$clone_dir/$repoDir" + if [ $? != 0 ] + then + echo cannot clone ONAP repositories, could not create directory '"'$clone_dir/repoDir'"' + exit 4 + fi + fi + + git clone https://gerrit.onap.org/r/${repo} $clone_dir/$repo + done + + echo ONAP has been cloned into '"'$clone_dir'"' + +Execution of the script above results in the following directory hierarchy in your *~/git* directory: + + * ~/git/onap + * ~/git/onap/ecompsdkos + * ~/git/onap/oparent + * ~/git/onap/policy + * ~/git/onap/policy/api + * ~/git/onap/policy/common + * ~/git/onap/policy/docker + * ~/git/onap/policy/drools-applications + * ~/git/onap/policy/drools-pdp + * ~/git/onap/policy/engine + * ~/git/onap/policy/gui + * ~/git/onap/policy/pap + * ~/git/onap/policy/pdp + + + +Building ONAP +^^^^^^^^^^^^^ + +**Step 1.** Optionally, for a completely clean build, remove the ONAP built modules from your local repository. + + * rm -fr ~/.m2/repository/org/onap + * rm -fr ~/.m2/repository/org/openecomp + + +**Step 2**. A pom such as the one below can be used to build all the ONAP policy modules and their dependencies. Create the *pom.xml* file in the directory *~/git/onap*. + +.. code-block:: xml + :caption: Typical pom.xml to build the ONAP Policy Framework + :linenos: + + <project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + <groupId>org.onap</groupId> + <artifactId>onap-policy_standalone</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>pom</packaging> + <name>${project.artifactId}</name> + <inceptionYear>2017</inceptionYear> + <organization> + <name>ONAP</name> + </organization> + + <profiles> + <profile> + <id>policy-dependencies</id> + <activation> + <property> + <name>policyDeps</name> + </property> + </activation> + <modules> + <module>oparent</module> + <module>ecompsdkos/ecomp-sdk</module> + </modules> + </profile> + <profile> + <id>policy</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>oparent</module> + <module>ecompsdkos/ecomp-sdk</module> + <module>policy</module> + </modules> + </profile> + </profiles> + </project> + + + +**Step 3**. A pom such as the one below can be used to build the ONAP Policy Framework modules. Create the *pom.xml* file in the directory *~/git/onap/policy* + +.. code-block:: xml + :caption: Typical pom.xml to build the ONAP Policy Framework Policy Modules + :linenos: + + <project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + <groupId>org.onap</groupId> + <artifactId>onap-policy</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>pom</packaging> + <name>${project.artifactId}</name> + <inceptionYear>2017</inceptionYear> + <organization> + <name>ONAP</name> + </organization> + + <modules> + <module>common</module> + <module>engine</module> + <module>pdp</module> + <module>pap</module> + <module>drools-pdp</module> + <module>drools-applications</module> + <module>api</module> + <module>gui</module> + <module>docker</module> + </modules> + </project> + +**Step 4**. The build cannot currently find the *org.onap.oparent:version-check-maven-plugin* plugin so, for now, comment that plugin out in the POMs *policy/drools-pdp/pom.xml* and *policy/drools-applications/pom.xml*. + +**Step 5**. Build the ONAP dependencies that are required for the ONAP policy framework and which must be built first to be available to the ONAP Policy Framework proper. + + * cd ~/git/onap + * mvn clean install -DpolicyDeps + +**Step 6**. You can now build the ONAP framework + + * On *Ubuntu*, just build the Policy Framework tests and all + + - cd ~/git/onap + - mvn clean install + + * On *macOS*, you must build build the ONAP framework with tests turned off first. Then rebuild the framework with tests turned on and all tests will pass. Note: The reason for this behaviour will be explored later. + + - cd ~/git/onap + - mvn clean install -DskipTests + - mvn install + + +Building the ONAP Policy Framework Docker Images +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The instructions here are based on the instructions in the file *~/git/onap/policy/docker/README*. + +**Step 1.** Prepare the Docker packages. This will pull the installation zip files needed for building the policy-pe and policy-drools Docker images into the target directory. It will not actually build the docker images; the additional steps below must be followed to actually build the Docker images. + + * cd ~/git/onap/policy/docker + * mvn prepare-package + +**Step 2**. Copy the files under *policy-pe* to *target/policy-pe*. + + * cp policy-pe/* target/policy-pe + +**Step 3**. Copy the files under *policy-drools* to *target/policy-drools*. + + * cp policy-drools/* target/policy-drools + +**Step 4**. Run the *docker build* command on the following directories in the order below. +Note that on some systems you may have to run the *docker* command as root or using *sudo*. + + * docker build -t onap/policy/policy-os policy-os + * docker build -t onap/policy/policy-db policy-db + * docker build -t onap/policy/policy-nexus policy-nexus + * docker build -t onap/policy/policy-base policy-base + * docker build -t onap/policy/policy-pe target/policy-pe + * docker build -t onap/policy/policy-drools target/policy-drools + +Starting the ONAP Policy Framework Docker Images +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +In order to run the containers, you can use *docker-compose*. This uses the *docker-compose.yml* yaml file to bring up the ONAP Policy Framework. + +**Step 1.** Make the file *config/drools/drools-tweaks.sh* executable + + * chmod +x config/drools/drools-tweaks.sh + +**Step 2**. Set the IP address to use to be an IP address of a suitable interface on your machine. Save the IP address into the file *config/pe/ip_addr.txt*. + +**Step 3**. Set the environment variable *MTU* to be a suitable MTU size for the application. + + * export MTU=9126 + +**Step 4**. Run the system using *docker-compose*. Note that on some systems you may have to run the *docker-compose* command as root or using *sudo*. Note that this command takes a number of minutes to execute on a laptop or desktop computer. + + * docker-compose up + + +Installation Complete +^^^^^^^^^^^^^^^^^^^^^ + +**You now have a full standalone ONAP Policy framework up and running!** + + +.. _Standalone Quick Start : https://wiki.onap.org/display/DW/ONAP+Policy+Framework%3A+Standalone+Quick+Start + + |