remove gerrit credentials from heat
[demo.git] / heat / OpenECOMP / onap_openstack.yaml
1 heat_template_version: 2015-10-15
2
3 description: Heat template to install ONAP components
4
5 ##############
6 #            #
7 # PARAMETERS #
8 #            #
9 ##############
10
11 parameters:
12
13   # Generic parameters used across all ONAP components
14   public_net_id:
15     type: string
16     description: Public network for floating IP address allocation
17
18   ubuntu_1404_image:
19     type: string
20     description: Name of the Ubuntu 14.04 image
21
22   ubuntu_1604_image:
23     type: string
24     description: Name of the Ubuntu 16.04 image
25
26   flavor_small:
27     type: string
28     description: Name of the Small Flavor supported by the cloud provider
29
30   flavor_medium:
31     type: string
32     description: Name of the Medium Flavor supported by the cloud provider
33
34   flavor_large:
35     type: string
36     description: Name of the Large Flavor supported by the cloud provider
37
38   flavor_xlarge:
39     type: string
40     description: Name of the Extra Large Flavor supported by the cloud provider
41     
42   vm_base_name:
43     type: string
44     description: Base name of ONAP VMs
45
46   key_name:
47     type: string
48     description: Public/Private key pair name
49
50   pub_key:
51     type: string
52     description: Public key to be installed on the compute instance
53
54   nexus_repo:
55     type: string
56     description: Complete URL for the Nexus repository.
57
58   nexus_docker_repo:
59     type: string
60     description: Complete URL for the Nexus repository for docker images.
61
62   nexus_username:
63     type: string
64     description: Nexus Repository username
65
66   nexus_password:
67     type: string
68     description: Nexus Repository Password
69     
70   artifacts_version:
71     type: string
72     description: Artifacts version of ONAP components
73     
74   docker_version:
75     type: string
76     label: Version number of ONAP docker images
77     
78   gerrit_branch:
79     type: string
80     label: Gerrit code branch
81     description: Gerrit branch where to download the code from
82
83   dmaap_topic:
84     type: string
85     description: DmaaP Topic name
86     
87   openstack_tenant_id:
88     type: string
89     description: Openstack tenant ID
90
91   openstack_username:
92     type: string
93     description: Openstack username
94
95   openstack_api_key:
96     type: string
97     description: Openstack API Key
98     
99   horizon_url:
100     type: string
101     description: URL of Openstack Horizon
102
103   keystone_url:
104     type: string
105     description: URL of Openstack Keystone
106     
107   # Network parameters
108   external_dns:
109     type: comma_delimited_list
110     description: External DNS for OAM ONAP network
111
112   oam_network_cidr:
113     type: string
114     description: CIDR of the OAM ONAP network
115     
116   aai_ip_addr:
117     type: string
118     description: A&AI IP Address
119     
120   appc_ip_addr: 
121     type: string
122     description: APP-C IP Address
123     
124   dcae_ip_addr:
125     type: string
126     description: DCAE IP Address
127     
128   dns_ip_addr:
129     type: string
130     description: DNS IP Address
131     
132   mso_ip_addr: 
133     type: string
134     description: MSO IP Address
135     
136   mr_ip_addr: 
137     type: string
138     description: Message Router IP Address
139     
140   policy_ip_addr:
141     type: string
142     description: Policy Engine IP Address
143     
144   portal_ip_addr:
145     type: string
146     description: Portal IP Address
147     
148   robot_ip_addr: 
149     type: string
150     description: Robot Framework IP Address
151
152   sdc_ip_addr:
153     type: string
154     description: SDC IP Address
155     
156   sdnc_ip_addr:
157     type: string
158     description: SDN-C IP Address
159     
160   vid_ip_addr:
161     type: string
162     description: VID IP Address
163
164   # Parameters for DCAE instantiation
165   dcae_zone:
166     type: string
167     description: DCAE Zone to use in VM names created by DCAE controller
168
169   dcae_state:
170     type: string
171     description: DCAE State to use in VM names created by DCAE controller
172
173   nexus_repo_root:
174     type: string
175     description: Root URL of Nexus repository
176     
177   nexus_url_snapshot:
178     type: string
179     description: Snapshot of Maven repository for DCAE deployment
180
181   openstack_region:
182     type: string
183     description: Region where the DCAE controller will spin the VMs
184
185   gitlab_branch:
186     type: string
187     description: Branch of the Gitlab repository
188
189
190 #############
191 #           #
192 # RESOURCES #
193 #           #
194 #############
195
196 resources:
197   random-str:
198     type: OS::Heat::RandomString
199     properties:
200       length: 4
201
202
203   # Public key used to access ONAP components
204   vm_key:
205     type: OS::Nova::KeyPair
206     properties:
207       name: 
208         str_replace:
209           template: base_rand
210           params:
211             base: { get_param: key_name }
212             rand: { get_resource: random-str }         
213       public_key: { get_param: pub_key }
214       save_private_key: false
215
216
217   # ONAP management private network
218   oam_ecomp:
219     type: OS::Neutron::Net
220     properties:
221       name: 
222         str_replace:
223           template: oam_ecomp_rand
224           params:
225             rand: { get_resource: random-str }
226
227   oam_ecomp_subnet:
228     type: OS::Neutron::Subnet
229     properties:
230       name: 
231         str_replace:
232           template: oam_ecomp_rand
233           params:
234             rand: { get_resource: random-str }
235       network_id: { get_resource: oam_ecomp }
236       cidr: { get_param: oam_network_cidr }
237       dns_nameservers: { get_param: external_dns }
238
239   router:
240     type: OS::Neutron::Router
241     properties:
242       external_gateway_info:
243         network: { get_param: public_net_id }
244
245   router_interface:
246     type: OS::Neutron::RouterInterface
247     properties:
248       router_id: { get_resource: router }
249       subnet_id: { get_resource: oam_ecomp_subnet }
250
251
252   # DNS Server instantiation
253   dns_private_port:
254     type: OS::Neutron::Port
255     properties:
256       network: { get_resource: oam_ecomp }
257       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: dns_ip_addr }}]
258
259   dns_floating_ip:
260     type: OS::Neutron::FloatingIP
261     properties:
262       floating_network_id: { get_param: public_net_id }
263       port_id: { get_resource: dns_private_port }
264
265   dns_vm:
266     type: OS::Nova::Server
267     properties:
268       image: { get_param: ubuntu_1404_image }
269       flavor: { get_param: flavor_small }
270       name: 
271         str_replace:
272           template: base-dns-server
273           params:
274             base: { get_param: vm_base_name }
275       key_name: { get_resource: vm_key }
276       networks:
277         - port: { get_resource: dns_private_port }
278       user_data_format: RAW
279       user_data:
280         str_replace:
281           params:
282             __nexus_repo__: { get_param: nexus_repo }
283             __artifacts_version__: { get_param: artifacts_version }
284             __oam_network_cidr__: { get_attr: [oam_ecomp_subnet, cidr] }
285             __dns_ip_addr__: { get_param: dns_ip_addr }
286             __aai_ip_addr__: { get_param: aai_ip_addr }
287             __appc_ip_addr__: { get_param: appc_ip_addr }
288             __dcae_ip_addr__: { get_param: dcae_ip_addr }
289             __mso_ip_addr__: { get_param: mso_ip_addr }
290             __mr_ip_addr__: { get_param: mr_ip_addr }
291             __policy_ip_addr__: { get_param: policy_ip_addr }
292             __portal_ip_addr__: { get_param: portal_ip_addr }
293             __robot_ip_addr__: { get_param: robot_ip_addr }
294             __sdc_ip_addr__: { get_param: sdc_ip_addr }
295             __sdnc_ip_addr__: { get_param: sdnc_ip_addr }
296             __vid_ip_addr__: { get_param: vid_ip_addr }
297
298           template: |
299             #!/bin/bash
300
301             hn=`hostname`
302             echo 127.0.0.1 $hn >> /etc/hosts
303             
304             # Download dependencies
305             add-apt-repository -y ppa:openjdk-r/ppa
306             apt-get update
307             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk bind9 bind9utils bind9-doc ntp ntpdate
308
309             # Download script
310             mkdir /etc/bind/zones
311             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/bind_zones -o /etc/bind/zones/db.simpledemo.openecomp.org
312             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/bind_options -o /etc/bind/named.conf.options
313             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/named.conf.local -o /etc/bind/named.conf.local
314
315             # Configure bind
316             #NETMASK=$(echo "__oam_network_cidr__" | cut -d"/" -f2)
317             #if [[ $NETMASK == "8" ]]
318             #then
319             #  ADDR=$(echo "__dns_ip_addr__" | cut -d"." -f1)
320             #elif [[ $NETMASK == "16" ]]
321             #then
322             #  ADDR=$(echo "__dns_ip_addr__" | cut -d"." -f1).$(echo "__dns_ip_addr__" | cut -d"." -f2)
323             #elif [[ $NETMASK == "24" ]]
324             #then
325             #  ADDR=$(echo "__dns_ip_addr__" | cut -d"." -f1).$(echo "__dns_ip_addr__" | cut -d"." -f2).$(echo "__dns_ip_addr__" | cut -d"." -f3)
326             #fi
327
328             #sed -i "s/netmask/$ADDR\/$NETMASK/g" /etc/bind/named.conf.options
329             sed -i "s/dns_ip_addr/"__dns_ip_addr__"/g" /etc/bind/named.conf.options
330
331             A=$(echo "__dcae_ip_addr__" | cut -d"." -f1)
332             B=$(echo "__dcae_ip_addr__" | cut -d"." -f2)
333             C=$(echo "__dcae_ip_addr__" | cut -d"." -f3)
334             sed -i "s/aai_ip_addr/"__aai_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
335             sed -i "s/appc_ip_addr/"__appc_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
336             sed -i "s/dcae_ip_addr/"__dcae_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
337             sed -i "s/dns_ip_addr/"__dns_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
338             sed -i "s/mso_ip_addr/"__mso_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
339             sed -i "s/mr_ip_addr/"__mr_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
340             sed -i "s/policy_ip_addr/"__policy_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
341             sed -i "s/portal_ip_addr/"__portal_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
342             sed -i "s/robot_ip_addr/"__robot_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
343             sed -i "s/sdc_ip_addr/"__sdc_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
344             sed -i "s/sdnc_ip_addr/"__sdnc_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
345             sed -i "s/vid_ip_addr/"__vid_ip_addr__"/g" /etc/bind/zones/db.simpledemo.openecomp.org
346             sed -i "s/dcae_coll_ip_addr/"$A.$B.$C"/g" /etc/bind/zones/db.simpledemo.openecomp.org
347
348             modprobe ip_gre
349             sed -i "s/OPTIONS=.*/OPTIONS=\"-4 -u bind\"/g" /etc/default/bind9
350             
351             # Restart bind to pick up configuration changes
352             service bind9 restart
353
354
355   # A&AI instantiation
356   aai_private_port:
357     type: OS::Neutron::Port
358     properties:
359       network: { get_resource: oam_ecomp }
360       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: aai_ip_addr }}]
361       
362   aai_floating_ip:
363     type: OS::Neutron::FloatingIP
364     properties:
365       floating_network_id: { get_param: public_net_id }
366       port_id: { get_resource: aai_private_port }
367
368   aai_vm:
369     type: OS::Nova::Server
370     depends_on: sdc_vm
371     properties:
372       image: { get_param: ubuntu_1404_image }
373       flavor: { get_param: flavor_xlarge }
374       name: 
375         str_replace:
376           template: base-aai
377           params:
378             base: { get_param: vm_base_name }      
379       key_name: { get_resource: vm_key }
380       networks:
381         - port: { get_resource: aai_private_port }
382       user_data_format: RAW
383       user_data:
384         str_replace:
385           params:
386             __nexus_repo__: { get_param: nexus_repo }
387             __nexus_docker_repo__: { get_param: nexus_docker_repo }
388             __nexus_username__: { get_param: nexus_username }
389             __nexus_password__: { get_param: nexus_password }
390             __dmaap_topic__: { get_param: dmaap_topic }
391             __artifacts_version__: { get_param: artifacts_version }
392             __dns_ip_addr__: { get_param: dns_ip_addr }
393             __docker_version__: { get_param: docker_version }
394           template: |
395             #!/bin/bash
396
397             hn=`hostname`
398             echo 127.0.0.1 $hn >> /etc/hosts
399             
400             # Create configuration files
401             mkdir -p /opt/config
402             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
403             echo "__nexus_username__" > /opt/config/nexus_username.txt
404             echo "__nexus_password__" > /opt/config/nexus_password.txt
405             echo "__dmaap_topic__" > /opt/config/dmaap_topic.txt
406             echo "__docker_version__" > /opt/config/docker_version.txt
407             
408             # Download dependencies
409             add-apt-repository -y ppa:openjdk-r/ppa
410             apt-get update
411             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk git ntp ntpdate
412
413             # Download scripts from Nexus
414             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
415             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/aai_vm_init.sh -o /opt/aai_vm_init.sh
416             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/aai_serv.sh -o /opt/aai_serv.sh
417             chmod +x /opt/aai_vm_init.sh
418             chmod +x /opt/aai_serv.sh
419             mv /opt/aai_serv.sh /etc/init.d
420             update-rc.d aai_serv.sh defaults
421
422             # Download and install docker-engine and docker-compose
423             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
424             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
425             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
426             apt-get update
427             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
428             apt-get install -y docker-engine
429             service docker start
430
431             mkdir /opt/openecomp
432             mkdir /opt/openecomp/aai
433             mkdir /opt/openecomp/aai/logs
434             mkdir /opt/openecomp/aai/data
435             mkdir /opt/docker
436             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
437             chmod +x /opt/docker/docker-compose
438
439             # DNS/GW IP address configuration
440             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
441             resolvconf -u
442
443             # Reboot the VM to pick up configuration changes
444             reboot
445
446
447   # MSO instantiation
448   mso_private_port:
449     type: OS::Neutron::Port
450     properties:
451       network: { get_resource: oam_ecomp }
452       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: mso_ip_addr }}]
453
454   mso_floating_ip:
455     type: OS::Neutron::FloatingIP
456     properties:
457       floating_network_id: { get_param: public_net_id }
458       port_id: { get_resource: mso_private_port }
459
460   mso_vm:
461     type: OS::Nova::Server
462     properties:
463       image: { get_param: ubuntu_1604_image }
464       flavor: { get_param: flavor_large }
465       name: 
466         str_replace:
467           template: base-mso
468           params:
469             base: { get_param: vm_base_name }      
470       key_name: { get_resource: vm_key }
471       networks:
472         - port: { get_resource: mso_private_port }
473       user_data_format: RAW
474       user_data:
475         str_replace:
476           params:
477             __nexus_repo__: { get_param: nexus_repo }
478             __nexus_docker_repo__: { get_param: nexus_docker_repo }
479             __nexus_username__: { get_param: nexus_username }
480             __nexus_password__: { get_param: nexus_password }
481             __openstack_username__: { get_param: openstack_username }
482             __openstack_tenant_id__: { get_param: openstack_tenant_id }
483             __openstack_api_key__: { get_param: openstack_api_key }
484             __keystone_url__: { get_param: keystone_url }
485             __dmaap_topic__: { get_param: dmaap_topic }
486             __artifacts_version__: { get_param: artifacts_version }
487             __dns_ip_addr__: { get_param: dns_ip_addr }
488             __docker_version__: { get_param: docker_version }
489             __gerrit_branch__: { get_param: gerrit_branch }
490           template: |
491             #!/bin/bash
492
493             hn=`hostname`
494             echo 127.0.0.1 $hn >> /etc/hosts
495             
496             # Create configuration files
497             mkdir -p /opt/config
498             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
499             echo "__nexus_username__" > /opt/config/nexus_username.txt
500             echo "__nexus_password__" > /opt/config/nexus_password.txt
501             echo "__openstack_username__" > /opt/config/openstack_username.txt
502             echo "__openstack_tenant_id__" > /opt/config/tenant_id.txt
503             echo "__keystone_url__" > /opt/config/keystone.txt
504             echo "__dmaap_topic__" > /opt/config/dmaap_topic.txt
505             echo "__docker_version__" > /opt/config/docker_version.txt
506
507             # Download dependencies
508             add-apt-repository -y ppa:openjdk-r/ppa
509             apt-get update
510             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk git ntp ntpdate
511
512             # Download scripts from Nexus
513             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
514             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/mso_vm_init.sh -o /opt/mso_vm_init.sh
515             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/mso_serv.sh -o /opt/mso_serv.sh
516             chmod +x /opt/mso_vm_init.sh
517             chmod +x /opt/mso_serv.sh
518             mv /opt/mso_serv.sh /etc/init.d
519             update-rc.d mso_serv.sh defaults
520
521             # Download and install docker-engine and docker-compose
522             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
523             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
524             echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
525             apt-get update
526             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
527             apt-get install -y docker-engine
528             service docker start
529
530             mkdir /opt/docker
531             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
532             chmod +x /opt/docker/docker-compose
533
534             # Clone Gerrit repository
535             cd /opt
536             git clone -b __gerrit_branch__ --single-branch http://gerrit.onap.org/r/mso/docker-config.git test_lab
537             MSO_ENCRYPTION_KEY=$(cat /opt/test_lab/encryption.key)
538             echo -n "__openstack_api_key__" | openssl aes-128-ecb -e -K $MSO_ENCRYPTION_KEY -nosalt | xxd -c 256 -p > /opt/config/api_key.txt
539
540             # Rename network interface
541             sed -i "s/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"net.ifnames=0 biosdevname=0\"/g" /etc/default/grub
542             grub-mkconfig -o /boot/grub/grub.cfg
543             sed -i "s/ens3/eth0/g" /etc/network/interfaces.d/*.cfg
544             
545             # DNS/GW IP address configuration
546             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
547             resolvconf -u
548             
549             # Reboot the VM to pick up configuration changes
550             reboot
551
552
553   # Message Router instantiation
554   mrouter_private_port:
555     type: OS::Neutron::Port
556     properties:
557       network: { get_resource: oam_ecomp }
558       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: mr_ip_addr }}]
559
560   mrouter_floating_ip:
561     type: OS::Neutron::FloatingIP
562     properties:
563       floating_network_id: { get_param: public_net_id }
564       port_id: { get_resource: mrouter_private_port }
565
566   mrouter_vm:
567     type: OS::Nova::Server
568     properties:
569       image: { get_param: ubuntu_1404_image }
570       flavor: { get_param: flavor_large }
571       name: 
572         str_replace: 
573           template: base-message-router
574           params:
575             base: { get_param: vm_base_name }
576       key_name: { get_resource: vm_key }
577       networks:
578         - port: { get_resource: mrouter_private_port }
579       user_data_format: RAW
580       user_data:
581         str_replace:
582           params:
583             __nexus_repo__: { get_param: nexus_repo }
584             __nexus_docker_repo__: { get_param: nexus_docker_repo }
585             __nexus_username__: { get_param: nexus_username }
586             __nexus_password__: { get_param: nexus_password }
587             __artifacts_version__: { get_param: artifacts_version }
588             __dns_ip_addr__: { get_param: dns_ip_addr }
589             __gerrit_branch__: { get_param: gerrit_branch }
590           template: |
591             #!/bin/bash
592
593             hn=`hostname`
594             echo 127.0.0.1 $hn >> /etc/hosts
595             
596             # Create configuration files
597             mkdir -p /opt/config
598             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
599             echo "__nexus_username__" > /opt/config/nexus_username.txt
600             echo "__nexus_password__" > /opt/config/nexus_password.txt
601
602             # Download dependencies
603             add-apt-repository -y ppa:openjdk-r/ppa
604             apt-get update
605             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk git ntp ntpdate
606             
607             # Download scripts from Nexus
608             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
609             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/mr_vm_init.sh -o /opt/mr_vm_init.sh
610             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/mr_serv.sh -o /opt/mr_serv.sh
611             chmod +x /opt/mr_vm_init.sh
612             chmod +x /opt/mr_serv.sh
613             mv /opt/mr_serv.sh /etc/init.d
614             update-rc.d mr_serv.sh defaults
615
616             # Download and install docker-engine and docker-compose
617             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
618             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
619             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
620             apt-get update
621             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
622             apt-get install -y docker-engine
623             service docker start
624
625             mkdir /opt/docker
626             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
627             chmod +x /opt/docker/docker-compose
628
629             # Clone Gerrit repository
630             cd /opt
631             git clone -b __gerrit_branch__ --single-branch http://gerrit.onap.org/r/dcae/demo/startup/message-router.git dcae-startup-vm-message-router
632             
633             # DNS/GW IP address configuration
634             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
635             resolvconf -u
636
637             # Reboot the VM to pick up configuration changes
638             reboot
639
640
641   # Robot Framework instantiation
642   robot_private_port:
643     type: OS::Neutron::Port
644     properties:
645       network: { get_resource: oam_ecomp }
646       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: robot_ip_addr }}]
647
648   robot_floating_ip:
649     type: OS::Neutron::FloatingIP
650     properties:
651       floating_network_id: { get_param: public_net_id }
652       port_id: { get_resource: robot_private_port }
653  
654   robot_vm:
655     type: OS::Nova::Server
656     properties:
657       image: { get_param: ubuntu_1604_image }
658       flavor: { get_param: flavor_small }
659       name: 
660         str_replace: 
661           template: base-robot
662           params:
663             base: { get_param: vm_base_name }
664       key_name: { get_resource: vm_key }
665       networks:
666         - port: { get_resource: robot_private_port }
667       user_data_format: RAW
668       user_data:
669         str_replace:
670           params:
671             __nexus_repo__: { get_param: nexus_repo }
672             __nexus_docker_repo__: { get_param: nexus_docker_repo }
673             __nexus_username__: { get_param: nexus_username }
674             __nexus_password__: { get_param: nexus_password }
675             __network_name__: { get_attr: [oam_ecomp, name] }
676             __openstack_username__: { get_param: openstack_username }
677             __openstack_api_key__: { get_param : openstack_api_key }
678             __artifacts_version__: { get_param: artifacts_version }
679             __openstack_region__: { get_param: openstack_region }
680             __dns_ip_addr__: { get_param: dns_ip_addr }
681             __docker_version__: { get_param: docker_version }
682             __gerrit_branch__: { get_param: gerrit_branch }
683           template: |
684             #!/bin/bash
685
686             hn=`hostname`
687             echo 127.0.0.1 $hn >> /etc/hosts
688             
689             # Create configuration files
690             mkdir -p /opt/config
691             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
692             echo "__nexus_repo__" > /opt/config/nexus_repo.txt
693             echo "__nexus_username__" > /opt/config/nexus_username.txt
694             echo "__nexus_password__" > /opt/config/nexus_password.txt
695             echo "__network_name__" > /opt/config/network.txt
696             echo "__openstack_username__" > /opt/config/openstack_username.txt
697             echo "__openstack_api_key__" > /opt/config/openstack_password.txt
698             echo "__openstack_region__" > /opt/config/region.txt
699             echo "__artifacts_version__" > /opt/config/artifacts_version.txt
700             echo "__docker_version__" > /opt/config/docker_version.txt
701  
702             # Download dependencies
703             add-apt-repository -y ppa:openjdk-r/ppa
704             apt-get update
705             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk git ntp ntpdate
706             echo "APT::Periodic::Unattended-Upgrade \"0\";" >> /etc/apt/apt.conf.d/10periodic
707
708             # Download scripts from Nexus
709             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
710             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/robot_vm_init.sh -o /opt/robot_vm_init.sh
711             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/robot_serv.sh -o /opt/robot_serv.sh
712             chmod +x /opt/robot_vm_init.sh
713             chmod +x /opt/robot_serv.sh
714             mv /opt/robot_serv.sh /etc/init.d
715             update-rc.d robot_serv.sh defaults
716  
717             # Download and install docker-engine and docker-compose
718             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
719             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
720             echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
721             apt-get update
722             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
723             apt-get install -y docker-engine
724             service docker start
725  
726             mkdir /opt/docker
727             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
728             chmod +x /opt/docker/docker-compose     
729
730             # Execute RobotETE-specific instructions: create share folder to run as a docker volume
731             mkdir -p /opt/eteshare/logs
732             mkdir -p /opt/eteshare/config
733
734             # Clone Gerrit repository
735             cd /opt
736             git clone -b __gerrit_branch__ --single-branch http://gerrit.onap.org/r/testsuite/properties.git testsuite/properties
737             
738             # Rename network interface
739             sed -i "s/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"net.ifnames=0 biosdevname=0\"/g" /etc/default/grub
740             grub-mkconfig -o /boot/grub/grub.cfg
741             sed -i "s/ens3/eth0/g" /etc/network/interfaces.d/*.cfg
742             
743             # DNS/GW IP address configuration
744             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
745             resolvconf -u
746             
747             # Reboot the VM to pick up configuration changes
748             reboot
749
750
751   # VID instantiation
752   vid_private_port:
753     type: OS::Neutron::Port
754     properties:
755       network: { get_resource: oam_ecomp }
756       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: vid_ip_addr }}]
757
758   vid_floating_ip:
759     type: OS::Neutron::FloatingIP
760     properties:
761       floating_network_id: { get_param: public_net_id }
762       port_id: { get_resource: vid_private_port }
763
764   vid_vm:
765     type: OS::Nova::Server
766     properties:
767       image: { get_param: ubuntu_1404_image }
768       flavor: { get_param: flavor_medium }
769       name: 
770         str_replace: 
771           template: base-vid
772           params:
773             base: { get_param: vm_base_name }
774       key_name: { get_resource: vm_key }
775       networks:
776         - port: { get_resource: vid_private_port }
777       user_data_format: RAW
778       user_data:
779         str_replace:
780           params:
781             __nexus_repo__: { get_param: nexus_repo }
782             __nexus_docker_repo__: { get_param: nexus_docker_repo }
783             __nexus_username__: { get_param: nexus_username }
784             __nexus_password__: { get_param: nexus_password }
785             __artifacts_version__: { get_param: artifacts_version }
786             __dns_ip_addr__: { get_param: dns_ip_addr }
787             __docker_version__: { get_param: docker_version }
788             __gerrit_branch__: { get_param: gerrit_branch }
789           template: |
790             #!/bin/bash
791
792             hn=`hostname`
793             echo 127.0.0.1 $hn >> /etc/hosts
794             
795             # Create configuration files
796             mkdir -p /opt/config
797             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
798             echo "__nexus_username__" > /opt/config/nexus_username.txt
799             echo "__nexus_password__" > /opt/config/nexus_password.txt
800             echo "__docker_version__" > /opt/config/docker_version.txt
801
802             # Download dependencies
803             add-apt-repository -y ppa:openjdk-r/ppa
804             apt-get update
805             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk make git ntp ntpdate
806
807             # Download scripts from Nexus
808             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
809             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/vid_vm_init.sh -o /opt/vid_vm_init.sh
810             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/vid_serv.sh -o /opt/vid_serv.sh
811             chmod +x /opt/vid_vm_init.sh
812             chmod +x /opt/vid_serv.sh
813             mv /opt/vid_serv.sh /etc/init.d
814             update-rc.d vid_serv.sh defaults
815
816             # Download and install docker-engine and docker-compose
817             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
818             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
819             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
820             apt-get update
821             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
822             apt-get install -y docker-engine
823             service docker start
824
825             mkdir /opt/docker
826             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
827             chmod +x /opt/docker/docker-compose
828
829             # Clone Gerrit repository
830             cd /opt
831             git clone -b __gerrit_branch__ --single-branch http://gerrit.onap.org/r/vid.git
832             
833             # DNS/GW IP address configuration
834             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
835             resolvconf -u
836             
837             # Reboot the VM to pick up configuration changes
838             reboot
839             
840             
841   # SDN-C instantiation
842   sdnc_private_port:
843     type: OS::Neutron::Port
844     properties:
845       network: { get_resource: oam_ecomp }
846       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: sdnc_ip_addr }}]
847
848   sdnc_floating_ip:
849     type: OS::Neutron::FloatingIP
850     properties:
851       floating_network_id: { get_param: public_net_id }
852       port_id: { get_resource: sdnc_private_port }
853
854   sdnc_vm:
855     type: OS::Nova::Server
856     properties:
857       image: { get_param: ubuntu_1404_image }
858       flavor: { get_param: flavor_large }
859       name: 
860         str_replace: 
861           template: base-sdnc
862           params:
863             base: { get_param: vm_base_name }
864       key_name: { get_resource: vm_key }
865       networks:
866         - port: { get_resource: sdnc_private_port }
867       user_data_format: RAW
868       user_data:
869         str_replace:
870           params:
871             __nexus_repo__: { get_param: nexus_repo }
872             __nexus_docker_repo__: { get_param: nexus_docker_repo }
873             __nexus_username__: { get_param: nexus_username }
874             __nexus_password__: { get_param: nexus_password }
875             __artifacts_version__: { get_param: artifacts_version }
876             __dns_ip_addr__: { get_param: dns_ip_addr }
877             __docker_version__: { get_param: docker_version }
878             __gerrit_branch__: { get_param: gerrit_branch }
879           template: |
880             #!/bin/bash
881
882             hn=`hostname`
883             echo 127.0.0.1 $hn >> /etc/hosts
884             
885             # Create configuration files
886             mkdir -p /opt/config
887             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
888             echo "__nexus_username__" > /opt/config/nexus_username.txt
889             echo "__nexus_password__" > /opt/config/nexus_password.txt
890             echo "__docker_version__" > /opt/config/docker_version.txt
891
892             # Download dependencies
893             add-apt-repository -y ppa:openjdk-r/ppa
894             apt-get update
895             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk git ntp ntpdate
896
897             # Download scripts from Nexus
898             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
899             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/sdnc_vm_init.sh -o /opt/sdnc_vm_init.sh
900             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/sdnc_serv.sh -o /opt/sdnc_serv.sh
901             chmod +x /opt/sdnc_vm_init.sh
902             chmod +x /opt/sdnc_serv.sh
903             mv /opt/sdnc_serv.sh /etc/init.d
904             update-rc.d sdnc_serv.sh defaults
905             
906             # Download and install docker-engine and docker-compose
907             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
908             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
909             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
910             apt-get update
911             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
912             apt-get install -y docker-engine
913             service docker start
914
915             mkdir /opt/docker
916             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
917             chmod +x /opt/docker/docker-compose
918
919             # Clone Gerrit repository
920             cd /opt
921             git clone -b __gerrit_branch__ --single-branch http://gerrit.onap.org/r/sdnc/oam.git sdnc
922             
923             # DNS/GW IP address configuration
924             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
925             resolvconf -u
926             
927             # Reboot the VM to pick up configuration changes
928             reboot
929
930             
931   # SDC instantiation
932   sdc_private_port:
933     type: OS::Neutron::Port
934     properties:
935       network: { get_resource: oam_ecomp }
936       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: sdc_ip_addr }}]
937
938   sdc_floating_ip:
939     type: OS::Neutron::FloatingIP
940     properties:
941       floating_network_id: { get_param: public_net_id }
942       port_id: { get_resource: sdc_private_port }
943
944   sdc_volume_data:
945     type: OS::Cinder::Volume
946     properties:
947       name: vol1-sdc-data
948       size: 100
949
950   sdc_volume_attachment:
951     type: OS::Cinder::VolumeAttachment
952     properties:
953       volume_id: { get_resource: sdc_volume_data }
954       instance_uuid: { get_resource: sdc_vm }
955       mountpoint: /dev/vdb
956
957   sdc_vm:
958     type: OS::Nova::Server
959     properties:
960       image: { get_param: ubuntu_1604_image }
961       flavor: { get_param: flavor_xlarge }
962       name: 
963         str_replace: 
964           template: base-sdc
965           params:
966             base: { get_param: vm_base_name }
967       key_name: { get_resource: vm_key }
968       networks:
969         - port: { get_resource: sdc_private_port }
970       user_data_format: RAW
971       user_data:
972         str_replace:
973           params:
974             __nexus_repo__: { get_param: nexus_repo }
975             __nexus_docker_repo__: { get_param: nexus_docker_repo }
976             __nexus_username__: { get_param: nexus_username }
977             __nexus_password__: { get_param: nexus_password }
978             __env_name__: { get_param: dmaap_topic }
979             __artifacts_version__: { get_param: artifacts_version }
980             __dns_ip_addr__: { get_param: dns_ip_addr }
981             __mr_ip_addr__: { get_param: mr_ip_addr }
982             __public_ip__: { get_attr: [sdc_floating_ip, floating_ip_address] }
983             __docker_version__: { get_param: docker_version }
984             __gerrit_branch__: { get_param: gerrit_branch }
985           template: |
986             #!/bin/bash
987             
988             hn=`hostname`        
989             echo 127.0.0.1 $hn >> /etc/hosts
990             
991             # Create configuration files
992             mkdir -p /opt/config
993             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
994             echo "__nexus_username__" > /opt/config/nexus_username.txt
995             echo "__nexus_password__" > /opt/config/nexus_password.txt
996             echo "__env_name__" > /opt/config/env_name.txt
997             echo "__mr_ip_addr__" > /opt/config/mr_ip_addr.txt
998             echo "__public_ip__" > /opt/config/public_ip.txt
999             echo "__docker_version__" > /opt/config/docker_version.txt
1000           
1001             # Download dependencies
1002             add-apt-repository -y ppa:openjdk-r/ppa
1003             apt-get update
1004             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk git ntp ntpdate
1005
1006             # Download scripts from Nexus
1007             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
1008             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/asdc_vm_init.sh -o /opt/asdc_vm_init.sh
1009             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/asdc_serv.sh -o /opt/asdc_serv.sh
1010             chmod +x /opt/asdc_vm_init.sh
1011             chmod +x /opt/asdc_serv.sh
1012             mv /opt/asdc_serv.sh /etc/init.d
1013             update-rc.d asdc_serv.sh defaults
1014             
1015             # Download and install docker-engine and docker-compose
1016             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
1017             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
1018             echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
1019             apt-get update
1020             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
1021             apt-get install -y docker-engine
1022             service docker start
1023             mkdir /opt/docker
1024             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
1025             chmod +x /opt/docker/docker-compose
1026
1027             # Create partition and mount the external volume
1028             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/asdc_ext_volume_partitions.txt -o /opt/asdc_ext_volume_partitions.txt
1029             sfdisk /dev/vdb < /opt/asdc_ext_volume_partitions.txt
1030             mkfs -t ext4 /dev/vdb1
1031             mkdir -p /data
1032             mount /dev/vdb1 /data
1033             echo "/dev/vdb1  /data           ext4    errors=remount-ro,noatime,barrier=0 0       1" >> /etc/fstab
1034
1035             # Run SDC-specific instructions
1036             cd /opt
1037             mkdir -p /data/environments
1038             mkdir -p /data/scripts
1039             mkdir -p /data/logs/BE
1040             mkdir -p /data/logs/FE
1041             chmod 777 /data
1042             chmod 777 /data/logs/BE
1043             chmod 777 /data/logs/FE
1044
1045             # Clone Gerrit repository
1046             git clone -b __gerrit_branch__ --single-branch http://gerrit.onap.org/r/sdc.git
1047
1048             cat > /root/.bash_aliases << EOF
1049             alias dcls='/data/scripts/docker_clean.sh \$1'
1050             alias dlog='/data/scripts/docker_login.sh \$1'
1051             alias rund='/data/scripts/docker_run.sh'
1052             alias health='/data/scripts/docker_health.sh'
1053             EOF
1054             
1055             # Rename network interface
1056             sed -i "s/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"net.ifnames=0 biosdevname=0\"/g" /etc/default/grub
1057             grub-mkconfig -o /boot/grub/grub.cfg
1058             sed -i "s/ens3/eth0/g" /etc/network/interfaces.d/*.cfg
1059             
1060             # DNS/GW IP address configuration
1061             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
1062             resolvconf -u
1063             
1064             # Reboot the VM to pick up configuration changes
1065             reboot
1066             
1067             
1068   # PORTAL instantiation
1069   portal_private_port:
1070     type: OS::Neutron::Port
1071     properties:
1072       network: { get_resource: oam_ecomp }
1073       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: portal_ip_addr }}]
1074
1075   portal_floating_ip:
1076     type: OS::Neutron::FloatingIP
1077     properties:
1078       floating_network_id: { get_param: public_net_id }
1079       port_id: { get_resource: portal_private_port }
1080
1081   portal_vm:
1082     type: OS::Nova::Server
1083     properties:
1084       image: { get_param: ubuntu_1404_image }
1085       flavor: { get_param: flavor_large }
1086       name: 
1087         str_replace: 
1088           template: base-portal
1089           params:
1090             base: { get_param: vm_base_name }
1091       key_name: { get_resource: vm_key }
1092       networks:
1093         - port: { get_resource: portal_private_port }
1094       user_data_format: RAW
1095       user_data:
1096         str_replace:
1097           params:
1098             __nexus_repo__: { get_param: nexus_repo }
1099             __nexus_docker_repo__: { get_param: nexus_docker_repo }
1100             __nexus_username__: { get_param: nexus_username }
1101             __nexus_password__: { get_param: nexus_password }
1102             __artifacts_version__: { get_param: artifacts_version }
1103             __dns_ip_addr__: { get_param: dns_ip_addr }
1104             __public_ip__: { get_attr: [portal_floating_ip, floating_ip_address] }
1105             __docker_version__: { get_param: docker_version }
1106             __gerrit_branch__: { get_param: gerrit_branch }
1107           template: |
1108             #!/bin/bash
1109             
1110             hn=`hostname`
1111             echo 127.0.0.1 $hn >> /etc/hosts
1112             
1113             # Create configuration files
1114             mkdir -p /opt/config
1115             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
1116             echo "__nexus_username__" > /opt/config/nexus_username.txt
1117             echo "__nexus_password__" > /opt/config/nexus_password.txt
1118             echo "__public_ip__" > /opt/config/public_ip.txt
1119             echo "__docker_version__" > /opt/config/docker_version.txt
1120             
1121             # Download dependencies
1122             add-apt-repository -y ppa:openjdk-r/ppa
1123             apt-get update
1124             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk git unzip mysql-client-core-5.6 ntp ntpdate
1125
1126             # Download scripts from Nexus
1127             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
1128             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/portal_vm_init.sh -o /opt/portal_vm_init.sh
1129             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/portal_serv.sh -o /opt/portal_serv.sh
1130             chmod +x /opt/portal_vm_init.sh
1131             chmod +x /opt/portal_serv.sh
1132             mv /opt/portal_serv.sh /etc/init.d
1133             update-rc.d portal_serv.sh defaults
1134             
1135             # Download and install docker-engine and docker-compose
1136             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
1137             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
1138             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
1139             apt-get update
1140             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
1141             apt-get install -y docker-engine
1142             service docker start
1143             mkdir /opt/docker
1144             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
1145             chmod +x /opt/docker/docker-compose
1146
1147             # Clone Gerrit repository
1148             mkdir -p /PROJECT/OpenSource/UbuntuEP/logs
1149             cd /opt
1150             git clone -b __gerrit_branch__ --single-branch http://gerrit.onap.org/r/portal.git
1151             
1152             # DNS/GW IP address configuration
1153             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
1154             resolvconf -u
1155
1156             # Reboot the VM to pick up configuration changes
1157             reboot
1158             
1159             
1160   # DCAE Controller instantiation
1161   dcae_c_private_port:
1162     type: OS::Neutron::Port
1163     properties:
1164       network: { get_resource: oam_ecomp }
1165       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: dcae_ip_addr }}]
1166
1167   dcae_c_floating_ip:
1168     type: OS::Neutron::FloatingIP
1169     properties:
1170       floating_network_id: { get_param: public_net_id }
1171       port_id: { get_resource: dcae_c_private_port }
1172
1173   dcae_c_vm:
1174     type: OS::Nova::Server
1175     properties:
1176       image: { get_param: ubuntu_1404_image }
1177       flavor: { get_param: flavor_medium }
1178       name: 
1179         str_replace: 
1180           template: base-dcae-controller
1181           params:
1182             base: { get_param: vm_base_name }
1183       key_name: { get_resource: vm_key }
1184       networks:
1185         - port: { get_resource: dcae_c_private_port }
1186       user_data_format: RAW
1187       user_data: 
1188         str_replace:
1189           params:
1190             __nexus_repo__: { get_param: nexus_repo }
1191             __nexus_docker_repo__: { get_param: nexus_docker_repo }
1192             __nexus_username__: { get_param: nexus_username }
1193             __nexus_password__: { get_param: nexus_password }
1194             __nexus_url_snapshots__: { get_param: nexus_url_snapshot }
1195             __gitlab_branch__: { get_param: gitlab_branch }
1196             __dns_ip_addr__: { get_param: dns_ip_addr }
1197             __dcae_zone__: { get_param: dcae_zone }
1198             __dcae_state__: { get_param: dcae_state }
1199             __artifacts_version__: { get_param: artifacts_version }
1200             __tenant_id__: { get_param: openstack_tenant_id }
1201             __openstack_private_network_name__: { get_attr: [oam_ecomp, name] }
1202             __openstack_user__: { get_param: openstack_username }
1203             __openstack_password__: { get_param: openstack_api_key }
1204             __key_name__: { get_param: key_name }
1205             __rand_str__: { get_resource: random-str }
1206             __pub_key__: { get_param: pub_key }
1207             __nexus_repo_root__: { get_param: nexus_repo_root }
1208             __openstack_region__: { get_param: openstack_region }
1209             __horizon_url__ : { get_param: horizon_url }
1210             __keystone_url__ : { get_param: keystone_url }
1211             __docker_version__: { get_param: docker_version }
1212             __gerrit_branch__: { get_param: gerrit_branch }
1213           template: |
1214             #!/bin/bash
1215             
1216             hn=`hostname`
1217             echo 127.0.0.1 $hn >> /etc/hosts
1218             
1219             # Create configuration files
1220             mkdir -p /opt/config
1221             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
1222             echo "__nexus_username__" > /opt/config/nexus_username.txt
1223             echo "__nexus_password__" > /opt/config/nexus_password.txt
1224             echo "__gitlab_branch__" > /opt/config/gitlab_branch.txt
1225             echo "__docker_version__" > /opt/config/docker_version.txt
1226
1227             # Download dependencies
1228             add-apt-repository -y ppa:openjdk-r/ppa
1229             apt-get update
1230             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk make git ntp ntpdate
1231
1232             # Download scripts from Nexus
1233             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
1234             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/dcae_vm_init.sh -o /opt/dcae_vm_init.sh
1235             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/dcae_serv.sh -o /opt/dcae_serv.sh
1236             chmod +x /opt/dcae_vm_init.sh
1237             chmod +x /opt/dcae_serv.sh
1238             mv /opt/dcae_serv.sh /etc/init.d
1239             update-rc.d dcae_serv.sh defaults
1240
1241             # Download and install docker-engine and docker-compose
1242             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
1243             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
1244             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
1245             apt-get update
1246             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
1247             apt-get install -y docker-engine
1248             service docker start
1249             mkdir /opt/docker
1250             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
1251             chmod +x /opt/docker/docker-compose
1252             
1253             # Clone Gerrit repository
1254             cd /opt
1255             git clone -b __gerrit_branch__ --single-branch http://gerrit.onap.org/r/dcae/demo/startup/controller.git dcae-startup-vm-controller
1256             
1257             # DCAE Controller specific deployment
1258             cd /opt/dcae-startup-vm-controller
1259             mkdir -p /opt/app/dcae-controller
1260             cat > /opt/app/dcae-controller/config.yaml << EOF_CONFIG
1261             ZONE: __dcae_zone__
1262             STATE: __dcae_state__
1263             DCAE-VERSION: __artifacts_version__
1264             HORIZON-URL: __horizon_url__/__openstack_user__
1265             KEYSTONE-URL: __keystone_url__
1266             OPENSTACK-TENANT-ID: __tenant_id__
1267             OPENSTACK-TENANT-NAME: OPEN-ECOMP
1268             OPENSTACK-REGION: __openstack_region__
1269             OPENSTACK-PRIVATE-NETWORK: __openstack_private_network_name__
1270             OPENSTACK-USER: __openstack_user__
1271             OPENSTACK-PASSWORD: __openstack_password__
1272             OPENSTACK-KEYNAME: __key_name_____rand_str___dcae
1273             OPENSTACK-PUBKEY: __pub_key__
1274             
1275             NEXUS-URL-ROOT: __nexus_repo_root__
1276             NEXUS-USER: __nexus_username__
1277             NEXUS-PASSWORD: __nexus_password__
1278             NEXUS-URL-SNAPSHOTS: __nexus_url_snapshots__
1279             NEXUS-RAWURL: __nexus_repo__
1280             
1281             DOCKER-REGISTRY: __nexus_docker_repo__
1282
1283             GIT-MR-REPO: http://gerrit.onap.org/r/dcae/demo/startup/message-router.git
1284             EOF_CONFIG
1285             
1286             # DNS/GW IP address configuration
1287             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
1288             resolvconf -u
1289
1290             # Reboot the VM to pick up configuration changes
1291             reboot
1292             
1293             
1294   # Policy Engine instantiation
1295   policy_private_port:
1296     type: OS::Neutron::Port
1297     properties:
1298       network: { get_resource: oam_ecomp }
1299       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: policy_ip_addr }}]
1300
1301   policy_floating_ip:
1302     type: OS::Neutron::FloatingIP
1303     properties:
1304       floating_network_id: { get_param: public_net_id }
1305       port_id: { get_resource: policy_private_port }
1306
1307   policy_vm:
1308     type: OS::Nova::Server
1309     properties:
1310       image: { get_param: ubuntu_1404_image }
1311       flavor: { get_param: flavor_xlarge }
1312       name: 
1313         str_replace: 
1314           template: base-policy
1315           params:
1316             base: { get_param: vm_base_name }
1317       key_name: { get_resource: vm_key }
1318       networks:
1319         - port: { get_resource: policy_private_port }
1320       user_data_format: RAW
1321       user_data:
1322         str_replace:
1323           params:
1324             __nexus_repo__: { get_param: nexus_repo }
1325             __nexus_docker_repo__: { get_param: nexus_docker_repo }
1326             __nexus_username__: { get_param: nexus_username }
1327             __nexus_password__: { get_param: nexus_password }
1328             __artifacts_version__: { get_param: artifacts_version }
1329             __dns_ip_addr__: { get_param: dns_ip_addr }
1330             __public_ip__: { get_attr: [policy_floating_ip, floating_ip_address] }
1331             __docker_version__: { get_param: docker_version }
1332             __gerrit_branch__: { get_param: gerrit_branch }
1333           template: |
1334             #!/bin/bash
1335             
1336             hn=`hostname`
1337             echo 127.0.0.1 $hn >> /etc/hosts
1338             
1339             # Create configuration files
1340             mkdir -p /opt/config
1341             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
1342             echo "__nexus_username__" > /opt/config/nexus_username.txt
1343             echo "__nexus_password__" > /opt/config/nexus_password.txt
1344             echo "__public_ip__" > /opt/config/public_ip.txt
1345             echo "__docker_version__" > /opt/config/docker_version.txt
1346
1347             # Download dependencies
1348             add-apt-repository -y ppa:openjdk-r/ppa
1349             apt-get update
1350             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk git ntp ntpdate
1351
1352             # Download scripts from Nexus
1353             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
1354             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/policy_vm_init.sh -o /opt/policy_vm_init.sh
1355             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/policy_serv.sh -o /opt/policy_serv.sh
1356             chmod +x /opt/policy_vm_init.sh
1357             chmod +x /opt/policy_serv.sh
1358             mv /opt/policy_serv.sh /etc/init.d
1359             update-rc.d policy_serv.sh defaults
1360
1361             # Download and install docker-engine and docker-compose
1362             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
1363             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
1364             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
1365             apt-get update
1366             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
1367             apt-get install -y docker-engine
1368             service docker start
1369             mkdir /opt/docker
1370             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
1371             chmod +x /opt/docker/docker-compose
1372
1373             # Clone Gerrit repository
1374             cd /opt
1375             git clone -b __gerrit_branch__ --single-branch http://gerrit.onap.org/r/policy/docker.git policy
1376             
1377             # DNS/GW IP address configuration
1378             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
1379             resolvconf -u
1380             
1381             # Reboot the VM to pick up configuration changes
1382             reboot
1383             
1384             
1385   # APP-C instantiation
1386   appc_private_port:
1387     type: OS::Neutron::Port
1388     properties:
1389       network: { get_resource: oam_ecomp }
1390       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": { get_param: appc_ip_addr }}]
1391
1392   appc_floating_ip:
1393     type: OS::Neutron::FloatingIP
1394     properties:
1395       floating_network_id: { get_param: public_net_id }
1396       port_id: { get_resource: appc_private_port }
1397
1398   appc_vm:
1399     type: OS::Nova::Server
1400     properties:
1401       image: { get_param: ubuntu_1404_image }
1402       flavor: { get_param: flavor_large }
1403       name: 
1404         str_replace: 
1405           template: base-appc
1406           params:
1407             base: { get_param: vm_base_name }
1408       key_name: { get_resource: vm_key }
1409       networks:
1410         - port: { get_resource: appc_private_port }
1411       user_data_format: RAW
1412       user_data:
1413         str_replace:
1414           params:
1415             __nexus_repo__: { get_param: nexus_repo }
1416             __nexus_docker_repo__: { get_param: nexus_docker_repo }
1417             __nexus_username__: { get_param: nexus_username }
1418             __nexus_password__: { get_param: nexus_password }
1419             __dmaap_topic__: { get_param: dmaap_topic }
1420             __artifacts_version__: { get_param: artifacts_version }
1421             __dns_ip_addr__: { get_param: dns_ip_addr }
1422             __docker_version__: { get_param: docker_version }
1423             __gerrit_branch__: { get_param: gerrit_branch }
1424           template: |
1425             #!/bin/bash
1426             
1427             hn=`hostname`
1428             echo 127.0.0.1 $hn >> /etc/hosts
1429             
1430             # Create configuration files
1431             mkdir -p /opt/config
1432             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
1433             echo "__nexus_username__" > /opt/config/nexus_username.txt
1434             echo "__nexus_password__" > /opt/config/nexus_password.txt
1435             echo "__dmaap_topic__" > /opt/config/dmaap_topic.txt
1436             echo "__docker_version__" > /opt/config/docker_version.txt
1437
1438             # Download dependencies
1439             add-apt-repository -y ppa:openjdk-r/ppa
1440             apt-get update
1441             apt-get install -y apt-transport-https ca-certificates wget openjdk-7-jdk git ntp ntpdate
1442
1443             # Download scripts from Nexus
1444             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/docker_key.txt -o /opt/config/docker_key.txt
1445             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/appc_vm_init.sh -o /opt/appc_vm_init.sh
1446             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/appc_serv.sh -o /opt/appc_serv.sh
1447             chmod +x /opt/appc_vm_init.sh
1448             chmod +x /opt/appc_serv.sh
1449             mv /opt/appc_serv.sh /etc/init.d
1450             update-rc.d appc_serv.sh defaults
1451             
1452             # Download and install docker-engine and docker-compose
1453             DOCKER_KEY=$(cat /opt/config/docker_key.txt)
1454             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys $DOCKER_KEY
1455             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
1456             apt-get update
1457             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
1458             apt-get install -y docker-engine
1459             service docker start
1460
1461             mkdir /opt/docker
1462             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
1463             chmod +x /opt/docker/docker-compose
1464
1465             # Clone Gerrit repository
1466             cd /opt
1467             git clone -b __gerrit_branch__ --single-branch http://gerrit.onap.org/r/appc/deployment.git appc
1468             
1469             # DNS/GW IP address configuration
1470             echo "nameserver __dns_ip_addr__" >> /etc/resolvconf/resolv.conf.d/head
1471             resolvconf -u
1472             
1473             # Reboot the VM to pick up configuration changes
1474             reboot
1475