These instructions have been verified on OSX High Sierra 10.13.4 using Docker for Mac Version 18.05.0-ce-rc1-mac63 (24246), which is latest edge version, stable channel will work as well.
...
- Recent Docker for Mac (tested with latest edge and stable release)
- Docker for Mac has to be sized to allow running all SDC containers, see instructions.
- Code changes from: https://gerrit.onap.org/r/#/c/45921/Basic development utils for building the source code (Git, java, maven etc..)
Instructions:
Make sure your docker is up and running, and is fully updated. Once docker is up and running (you can pull images and run them, ie docker pull ubuntu && docker run -it ubuntu /bin/bash), set resources for docker to something like this(these work on my MacBook Pro 15 Retina):
...
Save settings and restart docker.
These instructions assume, you have installed git, java, maven etc.. on your OSX. Installing these basic development tools are out of scope of these instructions.
...
Building the source code
Change directory to SDC project and run:
Code Block | ||||
---|---|---|---|---|
| ||||
mvn clean install -Pdocker |
This will build entire project and all docker containers. Note that this might take a while.
Preparing the configuration files
These instructions are taken from: Deploying SDC on a Linux VM for Development and slightly modified to facilitate for OSX specifics.
...
- Inside SDC project root directory, create new folder called data in SDC project directory, and add it to .gitignore, since we dont want to commit this ever.
- Export variable WORKSPACE=$(pwd) where in this case, $(pwd) is SDC project root, so change directory to SDC project root, and run: export WORKSPACE=$(pwd)
- Follow instructions 1,2 and 3 from Deploying SDC on a Linux VM for Development section Initial Setup, placing files in above created data directory
- In above mentioned file AUTO.json, update yyy with IP adress of your mac (usually en0 interface)
Running containers:
- Add above created data directory to gitignore, as we don't want this to be included with any commits.
- Inside data directory, do following:
- create opt/config/
- place the following files in this data/opt/config/ folder:
- Configuration files
- Inside data directory, create environments directory
- Copy the file from here: https://git.onap.org/sdc/tree/sdc-os-chef/environments/Template.json into data/environments/AUTO.json
- Edit AUTO.json file, replace yyy with your en0 IP address (your laptop's IP address), and update name and description xxx with AUTO
Code Block language bash #brew install iproute2mac # uncomment if needed for following commands IP=`ip route get 8.8.8.8 | awk '/src/{ print $7 }'` sed -i '' -e"s/yyy/${IP}/g" ./AUTO.json sed -i '' -e"s/xxx/AUTO/g" ./AUTO.json
Example file looks like this after editing:
Code Block | ||
---|---|---|
| ||
{
"name": "AUTO",
"description": "OpenSource-AUTO",
"cookbook_versions": {
"Deploy-SDandC": "= 1.0.0"
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"default_attributes": {
"disableHttp": false,
"CS_VIP": "159.107.152.117",
"BE_VIP": "159.107.152.117",
"ONBOARDING_BE_VIP": "159.107.152.117",
"FE_VIP": "159.107.152.117",
"ES_VIP": "159.107.152.117",
"KB_VIP": "159.107.152.117",
"DCAE_BE_VIP": "159.107.152.117",
"DCAE_FE_VIP": "159.107.152.117",
"interfaces": {
"application": "eth0",
"private": "eth1"
},
"ECompP": {
"ecomp_rest_url": "http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi",
"ueb_url_list": "10.0.11.1,10.0.11.1",
"app_secret": "XftIATw9Jr3VzAcPqt3NnJOu",
"app_key": "x9UfO7JsDn8BESVX",
"inbox_name": "ECOMP-PORTAL-INBOX",
"ecomp_redirect_url": "http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm",
"app_topic_name": "ECOMP-PORTAL-OUTBOX-SDC1",
"decryption_key": "AGLDdG4D04BKm2IxIWEr8o=="
},
"UEB": {
"PublicKey": "iPIxkpAMI8qTcQj8",
"SecretKey": "Ehq3WyT4bkif4zwgEbvshGal",
"fqdn": ["10.0.11.1", "10.0.11.1"]
},
"Nodes": {
"CS": [
"159.107.152.117"
],
"BE": "159.107.152.117",
"ONBOARDING_BE": "159.107.152.117",
"FE": "159.107.152.117",
"ES": [
"159.107.152.117"
],
"KB": "159.107.152.117"
},
"Plugins": {
"DCAE": {
"dcae_discovery_url": "159.107.152.117",
"dcae_source_url": "159.107.152.117"
},
"WORKFLOW": {
"workflow_discovery_url": "159.107.152.117",
"workflow_source_url": "159.107.152.117"
}
},
"VnfRepo": {
"vnfRepoPort": "8702",
"vnfRepoHost": "192.168.50.5"
}
},
"override_attributes": {
"FE": {
"http_port": "8181",
"https_port": "9443"
},
"BE": {
"http_port": "8080",
"https_port": "8443"
},
"ONBOARDING_BE": {
"http_port": "8081",
"https_port": "8445"
},
"elasticsearch": {
"cluster_name": "SDC-ES-",
"ES_path_home": "/usr/share/elasticsearch",
"ES_path_data": "/usr/share/elasticsearch/data",
"num_of_replicas": "0",
"num_of_shards": "1"
},
"cassandra": {
"concurrent_reads": "32",
"num_tokens": "256",
"data_dir": "/var/lib/cassandra/data",
"hinted_handoff_enabled": "true",
"cassandra_user": "asdc_user",
"cassandra_password": "Aa1234%^!",
"concurrent_writes": "32",
"cluster_name": "SDC-CS-",
"multithreaded_compaction": "false",
"cache_dir": "/var/lib/cassandra/saved_caches",
"log_file": "/var/lib/cassandra/log/system.log",
"phi_convict_threshold": "8",
"commitlog_dir": "/var/lib/cassandra/commitlog",
"socket_read_timeout": "20000",
"socket_connect_timeout": "20000",
"titan_connection_timeout": "10000"
}
}
} |
Running containers:
Change directory to SDC project and export WORKSPACE env variable:
Code Block | ||||
---|---|---|---|---|
| ||||
export WORKSPACE=$(pwd) |
and you can start locally built containers now with:
Code Block | ||||
---|---|---|---|---|
| ||||
sdc-os-chef/scripts/docker_run.sh -e AUTO -l |
After It takes a while to start them all and init cassandra, elastic and import normatives, but after sometime you should have:
All containers will be exposed (as per Docker for OSX) on localhost and your machine IP (en0 interface).
...