INT-444 adding the osdf vm init script
[demo.git] / boot / oof_vm_init.sh
1 #!/bin/bash
2
3 CERT=/opt/optf-has/aai.cer
4 KEY=/opt/optf-has/aai.key
5 BUNDLE=/opt/optf-has/aai_bundle.pem
6
7 NEXUS_USERNAME=$(cat /opt/config/nexus_username.txt)
8 NEXUS_PASSWD=$(cat /opt/config/nexus_password.txt)
9 NEXUS_DOCKER_REPO=$(cat /opt/config/nexus_docker_repo.txt)
10 DOCKER_IMAGE_VERSION=$(cat /opt/config/docker_version.txt)
11
12 cd /opt/optf-has
13 #git pull
14
15 COND_CONF=/opt/optf-has/conductor.conf
16 LOG_CONF=/opt/optf-has/log.conf
17
18 #!!! THE FOLLOWING LINE IS A PLACEHOLDER !!!
19 AAI_cert=/opt/optf-has/aai_cert.cer
20
21 IMAGE_NAME="$NEXUS_DOCKER_REPO/onap/optf-has"
22
23 # MUSIC parameters
24 CASS_IMG=${NEXUS_DOCKER_REPO}/onap/music/cassandra_music:latest
25 MUSIC_IMG=${NEXUS_DOCKER_REPO}/onap/music/music:latest
26 TOMCAT_IMG=library/tomcat:8.5
27 ZK_IMG=library/zookeeper:3.4
28 WORK_DIR=/opt/optf-has
29 CASS_USERNAME=cassandra1
30 CASS_PASSWORD=cassandra1
31
32 # pull images from repo
33 docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO
34 docker pull $NEXUS_DOCKER_REPO/onap/optf-osdf:$DOCKER_IMAGE_VERSION
35 docker pull ${ZK_IMG}
36 docker pull ${TOMCAT_IMG}
37 docker pull ${CASS_IMG}
38 docker pull ${MUSIC_IMG}
39 docker pull $NEXUS_DOCKER_REPO/onap/optf-has:$DOCKER_IMAGE_VERSION
40
41
42 #run optf-osdf
43
44 OSDF_IMAGE_NAME="$NEXUS_DOCKER_REPO/onap/optf-osdf"
45 OSDF_CONFIG=/opt/optf-osdf/config/osdf_config.yaml
46
47 mkdir -p /opt/optf-osdf/config
48
49 cat > $OSDF_CONFIG<<NEWFILE
50
51 osdfUserNameForSO: ""   # The OSDF Manager username for MSO.
52 osdfPasswordForSO: ""   # The OSDF Manager password for MSO.
53
54 # msoUrl: ""   # The SO url for call back. This will be part of the request, so no need
55 soUsername: ""   # SO username for call back.
56 soPassword: ""   # SO password for call back.
57
58 conductorUrl: "https://localhost:8091"
59 conductorUsername: admin1
60 conductorPassword: plan.15
61 conductorPingWaitTime: 60  # seconds to wait before calling the conductor retry URL
62 conductorMaxRetries: 30  # if we don't get something in 30 minutes, give up
63
64 # Policy Platform -- requires ClientAuth, Authorization, and Environment
65 policyPlatformUrl: https://POLICY-URL:8081/pdp/getConfig # Policy Dev platform URL
66 policyPlatformEnv: TEST  # Environment for policy platform
67 policyPlatformUsername: POLICY-USER   # Policy platform username.
68 policyPlatformPassword: POLICY-PASSWD   # Policy platform password.
69 policyClientUsername: POLICY-CLIENT-USER   # For use with ClientAuth
70 policyClientPassword: POLICY-CLIENT-PASSWD   # For use with ClientAuth
71
72 messageReaderHosts: https://mr.api.simpledemo.onap.org:3905
73 messageReaderTopic: org.onap.oof.osdf.multicloud
74 messageReaderAafUserId: DMAAP-OSDF-MC-USER
75 messageReaderAafPassword: DMAAP-OSDF-MC-PASSWD
76
77 sdcUrl: "SDC-URL"
78 sdcUsername: SDC-OSDF-USER
79 sdcPassword: SDC-OSDF-PASSWD
80 sdcONAPInstanceID: ONAP-OSDF
81
82 osdfPlacementUrl: "http://127.0.0.1:8698/api/oof/v1/placement"
83 osdfPlacementUsername: "test"
84 osdfPlacementPassword: "testpwd"
85
86 NEWFILE
87
88 docker run -d --name osdf -v $OSDF_CONFIG:/optf/config/osdf_config.yaml -p 8698:8699 ${OSDF_IMAGE_NAME}:latest
89
90 # install MUSIC
91 # create directory for music properties and logs
92 mkdir -p /opt/optf-has/music/properties
93 mkdir -p /opt/optf-has/music/logs
94
95 # add music.properties file
96 cat > /opt/optf-has/music/properties/music.properties<<NEWFILE
97 my.id=0
98 all.ids=0
99 my.public.ip=localhost
100 all.public.ips=localhost
101
102 #######################################
103
104 # Optional current values are defaults
105
106 #######################################
107 zookeeper.host=music-zk
108 cassandra.host=music-db
109 #music.ip=localhost
110 #debug=true
111 #music.rest.ip=localhost
112 #lock.lease.period=6000
113 cassandra.user=cassandra1
114 cassandra.password=cassandra1
115
116 # AAF Endpoint if using AAF
117 aaf.endpoint.url=https://aaf.api.simpledemo.onap.org
118 NEWFILE
119
120 # Create Volume for mapping war file and tomcat
121 docker volume create music-vol
122
123 # Create a network for all the containers to run in.
124 docker network create music-net
125
126 # Start Cassandra
127 docker run -d --rm --name music-db --network music-net -p "7000:7000" -p "7001:7001" -p "7199:7199" -p "9042:9042" -p "9160:9160" -e CASSUSER=${CASS_USERNAME} -e CASSPASS=${CASS_PASSWORD} ${CASS_IMG}
128
129 # Start Music war
130 docker run -d --rm --name music-war -v music-vol:/app ${MUSIC_IMG}
131
132 # Start Zookeeper
133 docker run -d --rm --name music-zk --network music-net -p "2181:2181" -p "2888:2888" -p "3888:3888" ${ZK_IMG}
134
135 # Delay for Cassandra
136 sleep 20;
137
138 # Start Up tomcat - Needs to have properties,logs dir and war file volume mapped.
139 docker run -d --rm --name music-tomcat --network music-net -p "8080:8080" -v music-vol:/usr/local/tomcat/webapps -v ${WORK_DIR}/music/properties:/opt/app/music/etc:ro -v ${WORK_DIR}/music/logs:/opt/app/music/logs ${TOMCAT_IMG}
140
141 # Connect tomcat to host bridge network so that its port can be seen.
142 docker network connect bridge music-tomcat;
143
144 # Get MUSIC url
145 #MUSIC_URL=$(docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' music-tomcat)
146 MUSIC_URL=localhost
147
148 # Set A&AI and MUSIC url inside OOF-HAS conductor.conf
149 sed -i "138 s%.*%server_url = https://aai.api.simpledemo.onap.org:8443/aai%" $COND_CONF
150 sed -i "141 s%.*%server_url_version = v13%" $COND_CONF
151 #sed -i "250 s%.*%server_url = $MUSIC_URL:8080/MUSIC/rest/v2%" $COND_CONF
152
153 # Set A&AI authentication file locations inside OOF-HAS conductor.conf
154 sed -i "153 s%.*%certificate_authority_bundle_file = $AAI_cert%" $COND_CONF
155
156
157 echo "Values to data component"
158 echo $CERT
159 echo $KEY
160 echo $BUNDLE
161
162 # run optf-has
163 docker run -d --name controller -v $COND_CONF:/usr/local/bin/conductor.conf -v $LOG_CONF:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-controller --config-file=/usr/local/bin/conductor.conf
164
165 docker run -d --name api -p "8091:8091" -v $COND_CONF:/usr/local/bin/conductor.conf -v $LOG_CONF:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-api --port=8091 -- --config-file=/usr/local/bin/conductor.conf
166
167 docker run -d --name solver -v $COND_CONF:/usr/local/bin/conductor.conf -v $LOG_CONF:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-solver --config-file=/usr/local/bin/conductor.conf
168
169 docker run -d --name reservation -v $COND_CONF:/usr/local/bin/conductor.conf -v $LOG_CONF:/usr/local/bin/log.conf ${IMAGE_NAME}:latest python /usr/local/bin/conductor-reservation --config-file=/usr/local/bin/conductor.conf
170
171 docker run -d --name data -v $COND_CONF:/usr/local/bin/conductor.conf -v $LOG_CONF:/usr/local/bin/log.conf -v $CERT:/usr/local/bin/aai_cert.cer -v $KEY:/usr/local/bin/aai_key.key -v $BUNDLE:/usr/local/bin/bundle.pem ${IMAGE_NAME}:latest python /usr/local/bin/conductor-data --config-file=/usr/local/bin/conductor.conf
172
173