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