upgrade POM version
[demo.git] / heat / OpenECOMP / openecomp_rackspace.yaml
1 heat_template_version: 2013-05-23
2
3 description: Heat template to deploy OpenECOMP components
4
5 parameters:
6
7   # Generic parameters used across all OpenECOMP components
8   public_net_id:
9     type: string
10     label: Public network name or ID
11     description: Public network that enables remote connection to the compute instance
12
13   key_name:
14     type: string
15     label: Key pair name
16     description: Public/Private key pair name
17
18   pub_key:
19     type: string
20     label: Public key
21     description: Public key or SSL certificate to be installed on the compute instance
22
23   nexus_repo:
24     type: string
25     label: Nexus Repository
26     description: Complete URL for the Nexus repository.
27
28   nexus_docker_repo:
29     type: string
30     label: Nexus Docker Images Repository
31     description: Complete URL for the Nexus repository for docker images.
32
33   nexus_username:
34     type: string
35     label: Nexus Repository Username
36     description: Nexus Repository username
37
38   nexus_password:
39     type: string
40     label: Nexus Repository Password
41     description: Nexus Repository Password
42     
43   gitlab_username:
44     type: string
45     label: Gitlab Repository Username
46     description: Gitlab Repository username
47
48   gitlab_password:
49     type: string
50     label: Gitlab Repository Password
51     description: Gitlab Repository Password
52
53   dmaap_topic:
54     type: string
55     label: DmaaP Topic
56     description: DmaaP Topic that MSO and A&AI listen to
57
58   artifacts_version:
59     type: string
60     label: Artifacts Version
61     description: Artifacts version of OpenECOMP components
62
63
64   # Parameters for DCAE instantiation
65   dcae_zone:
66     type: string
67     label: DCAE Zone
68     description: DCAE Zone to use in VM names created by DCAE controller
69
70   dcae_state:
71     type: string
72     label: DCAE State
73     description: DCAE State to use in VM names created by DCAE controller
74
75   openstack_tenant_id:
76     type: string
77     label: Rackspace tenant ID
78     description: Rackspace tenant ID
79
80   openstack_username:
81     type: string
82     label: Rackspace username
83     description: Rackspace username
84
85   openstack_api_key:
86     type: string
87     label: Rackspace API Key
88     description: Rackspace API Key
89
90   openstack_password:
91     type: string
92     label: Rackspace Password
93     description: Rackspace Password
94
95   nexus_repo_root:
96     type: string
97     label: Root URL of nexus repository
98     description: Root URL of nexus repository
99     
100   nexus_url_snapshot:
101     type: string
102     label: Snapshot of Maven repository for DCAE deployment
103     description: Snapshot of Maven repository
104
105   openstack_region:
106     type: string
107     label: Rackspace Region
108     description: Rackspace region where the DCAE controller will spin the VMs
109
110   gitlab_branch:
111     type: string
112     label: Branch of the Gitlab repository
113     description: Branch of the Gitlab repository
114     
115
116 resources:
117   random-str:
118     type: OS::Heat::RandomString
119     properties:
120       length: 4
121
122   # Public key used to access OpenECOMP components
123   vm_key:
124     type: OS::Nova::KeyPair
125     properties:
126       name: 
127         str_replace:
128           template: base_rand
129           params:
130             base: { get_param: key_name }
131             rand: { get_resource: random-str }         
132       public_key: { get_param: pub_key }
133       save_private_key: false
134
135
136   # OpenECOMP management private network
137   oam_ecomp:
138     type: OS::Neutron::Net
139     properties:
140       name: 
141         str_replace:
142           template: oam_ecomp_rand
143           params:
144             rand: { get_resource: random-str }
145
146   oam_ecomp_subnet:
147     type: OS::Neutron::Subnet
148     properties:
149       name: 
150         str_replace:
151           template: oam_ecomp_rand
152           params:
153             rand: { get_resource: random-str }
154       network_id: { get_resource: oam_ecomp }
155       cidr: 10.0.0.0/8
156     value: { get_attr: [oam_ecomp, name] }
157
158
159   # DNS Server instantiation
160   dns_private_port:
161     type: OS::Neutron::Port
162     properties:
163       network: { get_resource: oam_ecomp }
164       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.0.1}]
165
166   dns_vm:
167     type: OS::Nova::Server
168     properties:
169       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
170       flavor: 4 GB General Purpose v1
171       name: vm1-dns-server
172       key_name: { get_resource: vm_key }
173       networks:
174         - network: { get_param: public_net_id }
175         - port: { get_resource: dns_private_port }
176       user_data_format: RAW
177       user_data:
178         str_replace:
179           params:
180             __nexus_repo__: { get_param: nexus_repo }
181             __artifacts_version__: { get_param: artifacts_version }
182           template: |
183             #!/bin/bash
184
185             # Download dependencies
186             add-apt-repository -y ppa:openjdk-r/ppa
187             apt-get update
188             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk bind9 bind9utils bind9-doc ntp ntpdate
189
190             # Download script
191             mkdir /etc/bind/zones
192
193             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/db_simpledemo_openecomp_org -o /etc/bind/zones/db.simpledemo.openecomp.org
194             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/named.conf.options -o /etc/bind/named.conf.options
195             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/named.conf.local -o /etc/bind/named.conf.local
196
197             # Configure Bind
198             modprobe ip_gre
199             sed -i "s/OPTIONS=.*/OPTIONS=\"-4 -u bind\"/g" /etc/default/bind9
200             service bind9 restart
201
202
203   # A&AI instantiation
204   aai_private_port:
205     type: OS::Neutron::Port
206     properties:
207       network: { get_resource: oam_ecomp }
208       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.1.1}]
209
210   aai_volume:
211     type: OS::Cinder::Volume
212     properties:
213       name: vol1-aai
214       size: 50
215       volume_type: SSD
216       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
217
218   aai_vm:
219     type: OS::Nova::Server
220     depends_on: sdc_vm
221     properties:
222       flavor: 15 GB Compute v1
223       name: vm1-aai
224       key_name: { get_resource: vm_key }
225       block_device_mapping:
226         - volume_id: { get_resource: aai_volume }
227           device_name: vda
228       networks:
229         - network: { get_param: public_net_id }
230         - port: { get_resource: aai_private_port }
231       user_data_format: RAW
232       user_data:
233         str_replace:
234           params:
235             __nexus_repo__: { get_param: nexus_repo }
236             __nexus_docker_repo__: { get_param: nexus_docker_repo }
237             __nexus_username__: { get_param: nexus_username }
238             __nexus_password__: { get_param: nexus_password }
239             __gitlab_username__: { get_param: gitlab_username }
240             __gitlab_password__: { get_param: gitlab_password }
241             __dmaap_topic__: { get_param: dmaap_topic }
242             __artifacts_version__: { get_param: artifacts_version }
243           template: |
244             #!/bin/bash
245
246             # DNS/GW IP address configuration
247             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
248             resolvconf -u
249             
250             # Download dependencies
251             add-apt-repository -y ppa:openjdk-r/ppa
252             apt-get update
253             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk ntp ntpdate
254
255             # Download scripts from Nexus
256             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/aai_vm_init.sh -o /opt/aai_vm_init.sh
257             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/aai_serv.sh -o /opt/aai_serv.sh
258             chmod +x /opt/aai_vm_init.sh
259             chmod +x /opt/aai_serv.sh
260             mv /opt/aai_serv.sh /etc/init.d
261             update-rc.d aai_serv.sh defaults
262
263             # Download and install docker-engine and docker-compose
264             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
265             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
266             apt-get update
267             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
268             apt-get install -y docker-engine
269             service docker start
270
271             mkdir -p /opt/openecomp/aai/logs
272             mkdir -p /opt/openecomp/aai/data
273             mkdir /opt/docker
274             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
275             chmod +x /opt/docker/docker-compose
276             
277             # Store credentials in files
278             mkdir -p /opt/config
279             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
280             echo "__nexus_username__" > /opt/config/nexus_username.txt
281             echo "__nexus_password__" > /opt/config/nexus_password.txt
282             echo "__dmaap_topic__" > /opt/config/dmaap_topic.txt
283             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
284             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
285             echo "gerrit.openecomp.org" > /opt/config/gitlab_certname.txt
286             
287             # Execute docker instructions
288             cd /opt
289             ./aai_vm_init.sh
290
291
292   # MSO instantiation
293   mso_private_port:
294     type: OS::Neutron::Port
295     properties:
296       network: { get_resource: oam_ecomp }
297       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.5.1}]
298
299   mso_vm:
300     type: OS::Nova::Server
301     properties:
302       image: Ubuntu 16.04 LTS (Xenial Xerus) (PVHVM)
303       flavor: 4 GB General Purpose v1
304       name: vm1-mso
305       key_name: { get_resource: vm_key }
306       networks:
307         - network: { get_param: public_net_id }
308         - port: { get_resource: mso_private_port }
309       user_data_format: RAW
310       user_data:
311         str_replace:
312           params:
313             __nexus_repo__: { get_param: nexus_repo }
314             __nexus_docker_repo__: { get_param: nexus_docker_repo }
315             __nexus_username__: { get_param: nexus_username }
316             __nexus_password__: { get_param: nexus_password }
317             __gitlab_username__: { get_param: gitlab_username }
318             __gitlab_password__: { get_param: gitlab_password }
319             __openstack_username__: { get_param: openstack_username }
320             __openstack_tenant_id__: { get_param: openstack_tenant_id }
321             __openstack_api_key__: { get_param: openstack_api_key }
322             __dmaap_topic__: { get_param: dmaap_topic }
323             __artifacts_version__: { get_param: artifacts_version }
324           template: |
325             #!/bin/bash
326
327             # DNS/GW IP address configuration
328             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
329             resolvconf -u
330
331             # Download dependencies
332             add-apt-repository -y ppa:openjdk-r/ppa
333             apt-get update
334             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk git ntp ntpdate
335
336             # Download scripts from Nexus
337             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/mso_vm_init.sh -o /opt/mso_vm_init.sh
338             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/mso_serv.sh -o /opt/mso_serv.sh
339             chmod +x /opt/mso_vm_init.sh
340             chmod +x /opt/mso_serv.sh
341             mv /opt/mso_serv.sh /etc/init.d
342             update-rc.d mso_serv.sh defaults
343
344             # Download and install docker-engine and docker-compose
345             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
346             echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
347             apt-get update
348             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
349             apt-get install -y docker-engine
350             service docker start
351
352             mkdir /opt/docker
353             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
354             chmod +x /opt/docker/docker-compose
355
356             # Store credentials in files
357             mkdir -p /opt/config
358             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
359             echo "__nexus_username__" > /opt/config/nexus_username.txt
360             echo "__nexus_password__" > /opt/config/nexus_password.txt
361             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
362             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
363             echo "__openstack_username__" > /opt/config/openstack_username.txt
364             echo "__openstack_tenant_id__" > /opt/config/tenant_id.txt
365             echo "__dmaap_topic__" > /opt/config/dmaap_topic.txt
366            
367
368             # Run docker-compose to spin up containers
369             cd /opt
370             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/mso/docker-config.git test_lab
371             MSO_ENCRYPTION_KEY=$(cat /opt/test_lab/encryption.key)
372             echo -n "__openstack_api_key__" | openssl aes-128-ecb -e -K $MSO_ENCRYPTION_KEY -nosalt | xxd -c 256 -p > /opt/config/api_key.txt
373             ./mso_vm_init.sh
374
375
376   # Message Router instantiation
377   mrouter_private_port:
378     type: OS::Neutron::Port
379     properties:
380       network: { get_resource: oam_ecomp }
381       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.11.1}]
382
383   mrouter_vm:
384     type: OS::Nova::Server
385     properties:
386       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
387       flavor: 15 GB I/O v1
388       name: vm1-message-router
389       key_name: { get_resource: vm_key }
390       networks:
391         - network: { get_param: public_net_id }
392         - port: { get_resource: mrouter_private_port }
393       user_data_format: RAW
394       user_data:
395         str_replace:
396           params:
397             __nexus_repo__: { get_param: nexus_repo }
398             __nexus_docker_repo__: { get_param: nexus_docker_repo }
399             __nexus_username__: { get_param: nexus_username }
400             __nexus_password__: { get_param: nexus_password }
401             __gitlab_username__: { get_param: gitlab_username }
402             __gitlab_password__: { get_param: gitlab_password }
403             __artifacts_version__: { get_param: artifacts_version }
404           template: |
405             #!/bin/bash
406
407             # DNS/GW IP address configuration
408             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
409             resolvconf -u
410
411             # Download dependencies
412             add-apt-repository -y ppa:openjdk-r/ppa
413             apt-get update
414             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk ntp ntpdate
415             
416             # Download scripts from Nexus
417             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/mr_vm_init.sh -o /opt/mr_vm_init.sh
418             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/mr_serv.sh -o /opt/mr_serv.sh
419             chmod +x /opt/mr_vm_init.sh
420             chmod +x /opt/mr_serv.sh
421             mv /opt/mr_serv.sh /etc/init.d
422             update-rc.d mr_serv.sh defaults
423
424             # Download and install docker-engine and docker-compose
425             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
426             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
427             apt-get update
428             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
429             apt-get install -y docker-engine
430             service docker start
431
432             mkdir /opt/docker
433             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
434             chmod +x /opt/docker/docker-compose
435
436             # Store credentials in files
437             mkdir -p /opt/config
438             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
439             echo "__nexus_username__" > /opt/config/nexus_username.txt
440             echo "__nexus_password__" > /opt/config/nexus_password.txt
441             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
442             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
443
444             # Run docker-compose to spin up containers
445             cd /opt
446             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/dcae/demo/startup/message-router.git dcae-startup-vm-message-router
447             ./mr_vm_init.sh
448
449
450   # RobotE2E instantiation
451   robot_private_port:
452     type: OS::Neutron::Port
453     properties:
454       network: { get_resource: oam_ecomp }
455       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.10.1}]
456  
457   robot_vm:
458     type: OS::Nova::Server
459     properties:
460       image: Ubuntu 16.04 LTS (Xenial Xerus) (PVHVM)
461       flavor: 2 GB General Purpose v1
462       name: vm1-robot
463       key_name: { get_resource: vm_key }
464       networks:
465         - network: { get_param: public_net_id }
466         - port: { get_resource: robot_private_port }
467       user_data_format: RAW
468       user_data:
469         str_replace:
470           params:
471             __nexus_repo__: { get_param: nexus_repo }
472             __nexus_docker_repo__: { get_param: nexus_docker_repo }
473             __nexus_username__: { get_param: nexus_username }
474             __nexus_password__: { get_param: nexus_password }
475             __gitlab_username__: { get_param: gitlab_username }
476             __gitlab_password__: { get_param: gitlab_password }
477             __network_name__: { get_attr: [oam_ecomp, name] }
478             __openstack_username__: { get_param: openstack_username }
479             __openstack_api_key__: { get_param : openstack_api_key }
480             __openstack_password__: { get_param: openstack_password }
481             __artifacts_version__: { get_param: artifacts_version }
482             __openstack_region__: { get_param: openstack_region }
483           template: |
484             #!/bin/bash
485
486             # DNS/GW IP address configuration
487             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
488             resolvconf -u
489  
490             # Download dependencies
491             add-apt-repository -y ppa:openjdk-r/ppa
492             apt-get update
493             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk ntp ntpdate
494
495             # Download scripts from Nexus
496             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/robot_vm_init.sh -o /opt/robot_vm_init.sh
497             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/robot_serv.sh -o /opt/robot_serv.sh
498             chmod +x /opt/robot_vm_init.sh
499             chmod +x /opt/robot_serv.sh
500             mv /opt/robot_serv.sh /etc/init.d
501             update-rc.d robot_serv.sh defaults
502  
503             # Download and install docker-engine and docker-compose
504             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
505             echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
506             apt-get update
507             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
508             apt-get install -y docker-engine
509             #sed -i 's|^ExecStart=/usr/bin/dockerd \s*-H \s*fd://\s*$|ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375|' /lib/systemd/system/docker.service
510             service docker start
511  
512             mkdir /opt/docker
513             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
514             chmod +x /opt/docker/docker-compose
515  
516             # Store credentials in files
517             mkdir -p /opt/config
518             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
519             echo "__nexus_repo__" > /opt/config/nexus_repo.txt
520             echo "__nexus_username__" > /opt/config/nexus_username.txt
521             echo "__nexus_password__" > /opt/config/nexus_password.txt
522             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
523             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
524             echo "__network_name__" > /opt/config/network.txt
525             echo "__openstack_username__" > /opt/config/openstack_username.txt
526             echo "__openstack_password__" > /opt/config/openstack_password.txt
527             echo "__openstack_api_key__" > /opt/config/openstack_api_key.txt
528             echo "__openstack_region__" > /opt/config/region.txt
529             echo "__artifacts_version__" > /opt/config/artifacts_version.txt
530
531             # Execute RobotETE-specific instructions: create share folder to run as a docker volume
532             mkdir -p /opt/eteshare/logs
533             mkdir -p /opt/eteshare/config
534
535             # Run docker-compose to spin up containers
536             cd /opt
537             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/testsuite/properties.git testsuite/properties
538             ./robot_vm_init.sh
539
540
541   # VID instantiation
542   vid_private_port:
543     type: OS::Neutron::Port
544     properties:
545       network: { get_resource: oam_ecomp }
546       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.8.1}]
547
548   vid_vm:
549     type: OS::Nova::Server
550     properties:
551       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
552       flavor: 2 GB General Purpose v1
553       name: vm1-vid
554       key_name: { get_resource: vm_key }
555       networks:
556         - network: { get_param: public_net_id }
557         - port: { get_resource: vid_private_port }
558       user_data_format: RAW
559       user_data:
560         str_replace:
561           params:
562             __nexus_repo__: { get_param: nexus_repo }
563             __nexus_docker_repo__: { get_param: nexus_docker_repo }
564             __nexus_username__: { get_param: nexus_username }
565             __nexus_password__: { get_param: nexus_password }
566             __gitlab_username__: { get_param: gitlab_username }
567             __gitlab_password__: { get_param: gitlab_password }
568             __artifacts_version__: { get_param: artifacts_version }
569           template: |
570             #!/bin/bash
571
572             # DNS/GW IP address configuration
573             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
574             resolvconf -u
575
576             # Download dependencies
577             add-apt-repository -y ppa:openjdk-r/ppa
578             apt-get update
579             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk make git ntp ntpdate
580
581             # Download scripts from Nexus
582             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/vid_vm_init.sh -o /opt/vid_vm_init.sh
583             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/vid_serv.sh -o /opt/vid_serv.sh
584             chmod +x /opt/vid_vm_init.sh
585             chmod +x /opt/vid_serv.sh
586             mv /opt/vid_serv.sh /etc/init.d
587             update-rc.d vid_serv.sh defaults
588
589             # Download and install docker-engine and docker-compose
590             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
591             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
592             apt-get update
593             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
594             apt-get install -y docker-engine
595             service docker start
596
597             mkdir /opt/docker
598             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
599             chmod +x /opt/docker/docker-compose
600
601             # Store credentials in files
602             mkdir -p /opt/config
603             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
604             echo "__nexus_username__" > /opt/config/nexus_username.txt
605             echo "__nexus_password__" > /opt/config/nexus_password.txt
606             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
607             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
608
609             # Run script to spin up containers
610             cd /opt
611             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/vid.git
612             ./vid_vm_init.sh
613
614
615   # SDN-C instantiation
616   sdnc_private_port:
617     type: OS::Neutron::Port
618     properties:
619       network: { get_resource: oam_ecomp }
620       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.7.1}]
621
622   sdnc_vm:
623     type: OS::Nova::Server
624     properties:
625       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
626       flavor: 4 GB General Purpose v1
627       name: vm1-sdnc
628       key_name: { get_resource: vm_key }
629       networks:
630         - network: { get_param: public_net_id }
631         - port: { get_resource: sdnc_private_port }
632       user_data_format: RAW
633       user_data:
634         str_replace:
635           params:
636             __nexus_repo__: { get_param: nexus_repo }
637             __nexus_docker_repo__: { get_param: nexus_docker_repo }
638             __nexus_username__: { get_param: nexus_username }
639             __nexus_password__: { get_param: nexus_password }
640             __gitlab_username__: { get_param: gitlab_username }
641             __gitlab_password__: { get_param: gitlab_password }
642             __artifacts_version__: { get_param: artifacts_version }
643           template: |
644             #!/bin/bash
645
646             # DNS/GW IP address configuration
647             mkdir /opt/config
648             echo "10.0.0.1" > /opt/config/dns_gw_ip.txt
649             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
650             resolvconf -u
651
652             # Download dependencies
653             add-apt-repository -y ppa:openjdk-r/ppa
654             apt-get update
655             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk ntp ntpdate
656
657             # Download scripts from Nexus
658             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/sdnc_vm_init.sh -o /opt/sdnc_vm_init.sh
659             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/sdnc_serv.sh -o /opt/sdnc_serv.sh
660             chmod +x /opt/sdnc_vm_init.sh
661             chmod +x /opt/sdnc_serv.sh
662             mv /opt/sdnc_serv.sh /etc/init.d
663             update-rc.d sdnc_serv.sh defaults
664             
665             # Download and install docker-engine and docker-compose
666             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
667             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
668             apt-get update
669             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
670             apt-get install -y docker-engine
671             service docker start
672
673             mkdir /opt/docker
674             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
675             chmod +x /opt/docker/docker-compose
676             
677             # Store credentials in files
678             mkdir -p /opt/config
679             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
680             echo "__nexus_username__" > /opt/config/nexus_username.txt
681             echo "__nexus_password__" > /opt/config/nexus_password.txt
682             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
683             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
684
685             # Run docker-compose to spin up containers
686             cd /opt
687             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/sdnc/oam.git sdnc
688             ./sdnc_vm_init.sh
689
690
691   # SDC instantiation
692   sdc_private_port:
693     type: OS::Neutron::Port
694     properties:
695       network: { get_resource: oam_ecomp }
696       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.3.1}]
697
698   sdc_volume_local:
699     type: OS::Cinder::Volume
700     properties:
701       name: vol1-sdc-local
702       size: 50
703       volume_type: SSD
704       image: Ubuntu 16.04 LTS (Xenial Xerus) (PVHVM)
705
706   sdc_volume_data:
707     type: OS::Cinder::Volume
708     properties:
709       name: vol1-sdc-data
710       size: 100
711       volume_type: SSD
712
713   sdc_volume_attachment:
714     type: OS::Cinder::VolumeAttachment
715     properties:
716       volume_id: { get_resource: sdc_volume_data }
717       instance_uuid: { get_resource: sdc_vm }
718       mountpoint: /dev/xvdb
719
720   sdc_vm:
721     type: OS::Nova::Server
722     properties:
723       flavor: 15 GB Compute v1
724       name: vm1-sdc
725       key_name: { get_resource: vm_key }
726       block_device_mapping:
727         - volume_id: { get_resource: sdc_volume_local }
728           device_name: vda
729       networks:
730         - network: { get_param: public_net_id }
731         - port: { get_resource: sdc_private_port }
732       user_data_format: RAW
733       user_data:
734         str_replace:
735           params:
736             __nexus_repo__: { get_param: nexus_repo }
737             __nexus_docker_repo__: { get_param: nexus_docker_repo }
738             __nexus_username__: { get_param: nexus_username }
739             __nexus_password__: { get_param: nexus_password }
740             __gitlab_username__: { get_param: gitlab_username }
741             __gitlab_password__: { get_param: gitlab_password }
742             __env_name__: { get_param: dmaap_topic }
743             __artifacts_version__: { get_param: artifacts_version }
744           template: |
745             #!/bin/bash
746             
747             # DNS/GW IP address configuration
748             mkdir /opt/config
749             echo "10.0.0.1" > /opt/config/dns_gw_ip.txt
750             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
751             resolvconf -u
752           
753             # Download dependencies
754             add-apt-repository -y ppa:openjdk-r/ppa
755             apt-get update
756             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk ntp ntpdate
757             
758             # Download scripts from Nexus
759             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/asdc_vm_init.sh -o /opt/asdc_vm_init.sh
760             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/asdc_serv.sh -o /opt/asdc_serv.sh
761             chmod +x /opt/asdc_vm_init.sh
762             chmod +x /opt/asdc_serv.sh
763             mv /opt/asdc_serv.sh /etc/init.d
764             update-rc.d asdc_serv.sh defaults
765             
766             # Download and install docker-engine and docker-compose
767             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
768             echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
769             apt-get update
770             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
771             apt-get install -y docker-engine
772             service docker start
773             mkdir /opt/docker
774             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
775             chmod +x /opt/docker/docker-compose
776
777             # Create partition and mount the external volume
778             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/asdc_ext_volume_partitions.txt -o /opt/asdc_ext_volume_partitions.txt
779             sfdisk /dev/xvdb < /opt/asdc_ext_volume_partitions.txt
780             mkfs -t ext4 /dev/xvdb1
781             mkdir -p /data
782             mount /dev/xvdb1 /data
783             echo "/dev/xvdb1  /data           ext4    errors=remount-ro,noatime,barrier=0 0       1" >> /etc/fstab
784
785             # Store credentials in files
786             mkdir -p /opt/config
787             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
788             echo "__nexus_username__" > /opt/config/nexus_username.txt
789             echo "__nexus_password__" > /opt/config/nexus_password.txt
790             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
791             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
792             echo "__env_name__" > /opt/config/env_name.txt
793             echo "10.0.11.1" > /opt/config/mr_ip_addr.txt
794
795             # Run SDC-specific instructions
796             cd /opt
797             mkdir -p /data/environments
798             mkdir -p /data/scripts
799             mkdir -p /data/logs/BE
800             mkdir -p /data/logs/FE
801             chmod 777 /data
802             chmod 777 /data/logs/BE
803             chmod 777 /data/logs/FE
804
805             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/sdc.git
806
807             cat > /root/.bash_aliases << EOF
808             alias dcls='/data/scripts/docker_clean.sh \$1'
809             alias dlog='/data/scripts/docker_login.sh \$1'
810             alias rund='/data/scripts/docker_run.sh'
811             alias health='/data/scripts/docker_health.sh'
812             EOF
813
814             # Run docker-compose to spin up containers
815             ./asdc_vm_init.sh
816             
817
818   # PORTAL instantiation
819   portal_private_port:
820     type: OS::Neutron::Port
821     properties:
822       network: { get_resource: oam_ecomp }
823       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.9.1}]
824
825   portal_volume:
826     type: OS::Cinder::Volume
827     properties:
828       name: vol1-portal
829       size: 50
830       volume_type: SSD
831       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
832
833   portal_vm:
834     type: OS::Nova::Server
835     properties:
836       flavor: 15 GB Memory v1
837       name: vm1-portal
838       key_name: { get_resource: vm_key }
839       block_device_mapping:
840         - volume_id: { get_resource: portal_volume }
841           device_name: vda
842       networks:
843         - network: { get_param: public_net_id }
844         - port: { get_resource: portal_private_port }
845       user_data_format: RAW
846       user_data:
847         str_replace:
848           params:
849             __nexus_repo__: { get_param: nexus_repo }
850             __nexus_docker_repo__: { get_param: nexus_docker_repo }
851             __nexus_username__: { get_param: nexus_username }
852             __nexus_password__: { get_param: nexus_password }
853             __gitlab_username__: { get_param: gitlab_username }
854             __gitlab_password__: { get_param: gitlab_password }
855             __artifacts_version__: { get_param: artifacts_version }
856           template: |
857             #!/bin/bash
858             
859             # DNS/GW IP address configuration
860             mkdir /opt/config
861             echo "10.0.0.1" > /opt/config/dns_gw_ip.txt
862             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
863             resolvconf -u
864             
865             # Download dependencies
866             add-apt-repository -y ppa:openjdk-r/ppa
867             apt-get update
868             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk unzip mysql-client-core-5.6 ntp ntpdate
869             
870             # Download scripts from Nexus
871             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/portal_vm_init.sh -o /opt/portal_vm_init.sh
872             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/portal_serv.sh -o /opt/portal_serv.sh
873             chmod +x /opt/portal_vm_init.sh
874             chmod +x /opt/portal_serv.sh
875             mv /opt/portal_serv.sh /etc/init.d
876             update-rc.d portal_serv.sh defaults
877             
878             # Download and install docker-engine and docker-compose
879             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
880             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
881             apt-get update
882             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
883             apt-get install -y docker-engine
884             service docker start
885             mkdir /opt/docker
886             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
887             chmod +x /opt/docker/docker-compose
888
889             # Store credentials in files
890             mkdir -p /opt/config
891             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
892             echo "__nexus_username__" > /opt/config/nexus_username.txt
893             echo "__nexus_password__" > /opt/config/nexus_password.txt
894             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
895             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
896
897             # Run Portal-specific instructions
898             mkdir -p /PROJECT/OpenSource/UbuntuEP/logs
899             cd /opt
900             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/portal.git
901
902             # Run docker-compose to spin up containers
903             ./portal_vm_init.sh
904
905
906   # DCAE Controller instantiation
907   dcae_c_private_port:
908     type: OS::Neutron::Port
909     properties:
910       network: { get_resource: oam_ecomp }
911       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.4.1}]
912   dcae_c_vm:
913     type: OS::Nova::Server
914     properties:
915       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
916       flavor: 8 GB General Purpose v1
917       name: vm1-dcae-controller
918       key_name: { get_resource: vm_key }
919       networks:
920         - network: { get_param: public_net_id }
921         - port: { get_resource: dcae_c_private_port }
922       user_data_format: RAW
923       user_data: 
924         str_replace:
925           params:
926             __nexus_repo__: { get_param: nexus_repo }
927             __nexus_docker_repo__: { get_param: nexus_docker_repo }
928             __nexus_username__: { get_param: nexus_username }
929             __nexus_password__: { get_param: nexus_password }
930             __nexus_url_snapshots__: { get_param: nexus_url_snapshot }
931             __gitlab_username__: { get_param: gitlab_username }
932             __gitlab_password__: { get_param: gitlab_password }
933             __gitlab_branch__: { get_param: gitlab_branch }
934             __dcae_zone__: { get_param: dcae_zone }
935             __dcae_state__: { get_param: dcae_state }
936             __artifacts_version__: { get_param: artifacts_version }
937             __tenant_id__: { get_param: openstack_tenant_id }
938             __openstack_private_network_name__: { get_attr: [oam_ecomp, name] }
939             __openstack_user__: { get_param: openstack_username }
940             __openstack_password__: { get_param: openstack_api_key }
941             __key_name__: { get_param: key_name }
942             __rand_str__: { get_resource: random-str }
943             __pub_key__: { get_param: pub_key }
944             __nexus_repo_root__: { get_param: nexus_repo_root }
945             __openstack_region__: { get_param: openstack_region }
946           template: |
947             #!/bin/bash
948             
949             # DNS/GW IP address configuration
950             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
951             resolvconf -u
952
953             # Download dependencies
954             add-apt-repository -y ppa:openjdk-r/ppa
955             apt-get update
956             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk make git ntp ntpdate
957
958             # Download scripts from Nexus
959             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/dcae_vm_init.sh -o /opt/dcae_vm_init.sh
960             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/dcae_serv.sh -o /opt/dcae_serv.sh
961             chmod +x /opt/dcae_vm_init.sh
962             chmod +x /opt/dcae_serv.sh
963             mv /opt/dcae_serv.sh /etc/init.d
964             update-rc.d dcae_serv.sh defaults
965
966             # Download and install docker-engine and docker-compose
967             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
968             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
969             apt-get update
970             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
971             apt-get install -y docker-engine
972             service docker start
973             mkdir /opt/docker
974             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
975             chmod +x /opt/docker/docker-compose
976             
977             # DCAE Controller specific deployment
978             cd /opt
979             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/dcae/demo/startup/controller.git dcae-startup-vm-controller
980
981             cd dcae-startup-vm-controller
982             mkdir -p /opt/app/dcae-controller
983             cat > /opt/app/dcae-controller/config.yaml << EOF_CONFIG
984             ZONE: __dcae_zone__
985             STATE: __dcae_state__
986             DCAE-VERSION: __artifacts_version__
987             HORIZON-URL: https://mycloud.rackspace.com/cloud/__tenant_id__
988             KEYSTONE-URL: https://identity.api.rackspacecloud.com/v2.0
989             OPENSTACK-TENANT-ID: __tenant_id__
990             OPENSTACK-TENANT-NAME: OPEN-ECOMP
991             OPENSTACK-REGION: __openstack_region__
992             OPENSTACK-PRIVATE-NETWORK: __openstack_private_network_name__
993             OPENSTACK-USER: __openstack_user__
994             OPENSTACK-PASSWORD: __openstack_password__
995             OPENSTACK-KEYNAME: __key_name_____rand_str___dcae
996             OPENSTACK-PUBKEY: __pub_key__
997             
998             NEXUS-URL-ROOT: __nexus_repo_root__
999             NEXUS-USER: __nexus_username__
1000             NEXUS-PASSWORD: __nexus_password__
1001             NEXUS-URL-SNAPSHOTS: __nexus_url_snapshots__
1002             NEXUS-RAWURL: __nexus_repo__
1003             
1004             DOCKER-REGISTRY: __nexus_docker_repo__
1005
1006             GIT-MR-REPO: https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/dcae/demo/startup/message-router.git
1007             EOF_CONFIG
1008
1009             # Store credentials in files
1010             mkdir -p /opt/config
1011             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
1012             echo "__nexus_username__" > /opt/config/nexus_username.txt
1013             echo "__nexus_password__" > /opt/config/nexus_password.txt
1014             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
1015             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
1016             echo "__gitlab_branch__" > /opt/config/gitlab_branch.txt
1017
1018             cd /opt
1019             ./dcae_vm_init.sh
1020
1021
1022   # Policy engine instantiation
1023   policy_private_port:
1024     type: OS::Neutron::Port
1025     properties:
1026       network: { get_resource: oam_ecomp }
1027       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.6.1}]
1028
1029   policy_volume:
1030     type: OS::Cinder::Volume
1031     properties:
1032       name: vol1-policy
1033       size: 50
1034       volume_type: SSD
1035       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
1036
1037   policy_vm:
1038     type: OS::Nova::Server
1039     properties:
1040       flavor: 15 GB Compute v1
1041       name: vm1-policy
1042       key_name: { get_resource: vm_key }
1043       block_device_mapping:
1044         - volume_id: { get_resource: policy_volume }
1045           device_name: vda
1046       networks:
1047         - network: { get_param: public_net_id }
1048         - port: { get_resource: policy_private_port }
1049       user_data_format: RAW
1050       user_data:
1051         str_replace:
1052           params:
1053             __nexus_repo__: { get_param: nexus_repo }
1054             __nexus_docker_repo__: { get_param: nexus_docker_repo }
1055             __nexus_username__: { get_param: nexus_username }
1056             __nexus_password__: { get_param: nexus_password }
1057             __gitlab_username__: { get_param: gitlab_username }
1058             __gitlab_password__: { get_param: gitlab_password }
1059             __artifacts_version__: { get_param: artifacts_version }
1060           template: |
1061             #!/bin/bash
1062             
1063             # DNS/GW IP address configuration
1064             mkdir /opt/config
1065             echo "10.0.0.1" > /opt/config/dns_gw_ip.txt
1066             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
1067             resolvconf -u
1068
1069             # Download dependencies
1070             add-apt-repository -y ppa:openjdk-r/ppa
1071             apt-get update
1072             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk ntp ntpdate
1073
1074             # Download scripts from Nexus
1075             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/policy_vm_init.sh -o /opt/policy_vm_init.sh
1076             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/policy_serv.sh -o /opt/policy_serv.sh
1077             chmod +x /opt/policy_vm_init.sh
1078             chmod +x /opt/policy_serv.sh
1079             mv /opt/policy_serv.sh /etc/init.d
1080             update-rc.d policy_serv.sh defaults
1081
1082             # Download and install docker-engine and docker-compose
1083             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
1084             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
1085             apt-get update
1086             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
1087             apt-get install -y docker-engine
1088             service docker start
1089             mkdir /opt/docker
1090             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
1091             chmod +x /opt/docker/docker-compose
1092
1093             # Store credentials in files
1094             mkdir -p /opt/config
1095             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
1096             echo "__nexus_username__" > /opt/config/nexus_username.txt
1097             echo "__nexus_password__" > /opt/config/nexus_password.txt
1098             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
1099             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
1100
1101             # Run docker-compose to spin up containers
1102             cd /opt
1103             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/policy/docker.git policy
1104
1105             ./policy_vm_init.sh
1106
1107
1108   # APP-C instantiation
1109   appc_private_port:
1110     type: OS::Neutron::Port
1111     properties:
1112       network: { get_resource: oam_ecomp }
1113       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.2.1}]
1114
1115   appc_vm:
1116     type: OS::Nova::Server
1117     properties:
1118       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
1119       flavor: 4 GB General Purpose v1
1120       name: vm1-appc
1121       key_name: { get_resource: vm_key }
1122       networks:
1123         - network: { get_param: public_net_id }
1124         - port: { get_resource: appc_private_port }
1125       user_data_format: RAW
1126       user_data:
1127         str_replace:
1128           params:
1129             __nexus_repo__: { get_param: nexus_repo }
1130             __nexus_docker_repo__: { get_param: nexus_docker_repo }
1131             __nexus_username__: { get_param: nexus_username }
1132             __nexus_password__: { get_param: nexus_password }
1133             __gitlab_username__: { get_param: gitlab_username }
1134             __gitlab_password__: { get_param: gitlab_password }
1135             __dmaap_topic__: { get_param: dmaap_topic }
1136             __artifacts_version__: { get_param: artifacts_version }
1137           template: |
1138             #!/bin/bash
1139
1140             # DNS/GW IP address configuration
1141             mkdir /opt/config
1142             echo "10.0.0.1" > /opt/config/dns_gw_ip.txt
1143             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
1144             resolvconf -u
1145
1146             # Download dependencies
1147             add-apt-repository -y ppa:openjdk-r/ppa
1148             apt-get update
1149             apt-get install -y apt-transport-https ca-certificates wget openjdk-7-jdk ntp ntpdate
1150
1151             # Download scripts from Nexus
1152             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/appc_vm_init.sh -o /opt/appc_vm_init.sh
1153             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/appc_serv.sh -o /opt/appc_serv.sh
1154             chmod +x /opt/appc_vm_init.sh
1155             chmod +x /opt/appc_serv.sh
1156             mv /opt/appc_serv.sh /etc/init.d
1157             update-rc.d appc_serv.sh defaults
1158             
1159             # Download and install docker-engine and docker-compose
1160             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
1161             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
1162             apt-get update
1163             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
1164             apt-get install -y docker-engine
1165             service docker start
1166
1167             mkdir /opt/docker
1168             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
1169             chmod +x /opt/docker/docker-compose
1170             
1171             # Store credentials in files
1172             mkdir -p /opt/config
1173             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
1174             echo "__nexus_username__" > /opt/config/nexus_username.txt
1175             echo "__nexus_password__" > /opt/config/nexus_password.txt
1176             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
1177             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
1178             echo "__dmaap_topic__" > /opt/config/dmaap_topic.txt
1179
1180             # Run docker-compose to spin up containers
1181             cd /opt
1182             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/appc/deployment.git appc
1183             ./appc_vm_init.sh
1184