update master heat
[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             # DNS/GW IP address configuration
747             mkdir /opt/config
748             echo "10.0.0.1" > /opt/config/dns_gw_ip.txt
749             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
750             resolvconf -u
751           
752             # Download dependencies
753             add-apt-repository -y ppa:openjdk-r/ppa
754             apt-get update
755             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk ntp ntpdate
756             
757             # Download scripts from Nexus
758             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/asdc_vm_init.sh -o /opt/asdc_vm_init.sh
759             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/asdc_serv.sh -o /opt/asdc_serv.sh
760             chmod +x /opt/asdc_vm_init.sh
761             chmod +x /opt/asdc_serv.sh
762             mv /opt/asdc_serv.sh /etc/init.d
763             update-rc.d asdc_serv.sh defaults
764             
765             # Download and install docker-engine and docker-compose
766             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
767             echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
768             apt-get update
769             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
770             apt-get install -y docker-engine
771             service docker start
772             mkdir /opt/docker
773             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
774             chmod +x /opt/docker/docker-compose
775
776             # Create partition and mount the external volume
777             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/asdc_ext_volume_partitions.txt -o /opt/asdc_ext_volume_partitions.txt
778             sfdisk /dev/xvdb < /opt/asdc_ext_volume_partitions.txt
779             mkfs -t ext4 /dev/xvdb1
780             mkdir -p /data
781             mount /dev/xvdb1 /data
782             echo "/dev/xvdb1  /data           ext4    errors=remount-ro,noatime,barrier=0 0       1" >> /etc/fstab
783
784             # Store credentials in files
785             mkdir -p /opt/config
786             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
787             echo "__nexus_username__" > /opt/config/nexus_username.txt
788             echo "__nexus_password__" > /opt/config/nexus_password.txt
789             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
790             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
791             echo "__env_name__" > /opt/config/env_name.txt
792
793             # Run SDC-specific instructions
794             cd /opt
795             mkdir -p /data/environments
796             mkdir -p /data/scripts
797             mkdir -p /data/logs/BE
798             mkdir -p /data/logs/FE
799             chmod 777 /data
800             chmod 777 /data/logs/BE
801             chmod 777 /data/logs/FE
802
803             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/sdc.git
804
805             cat > /root/.bash_aliases << EOF
806             alias dcls='/data/scripts/docker_clean.sh \$1'
807             alias dlog='/data/scripts/docker_login.sh \$1'
808             alias rund='/data/scripts/docker_run.sh'
809             alias health='/data/scripts/docker_health.sh'
810             EOF
811
812             # Run docker-compose to spin up containers
813             ./asdc_vm_init.sh
814             
815
816   # PORTAL instantiation
817   portal_private_port:
818     type: OS::Neutron::Port
819     properties:
820       network: { get_resource: oam_ecomp }
821       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.9.1}]
822
823   portal_volume:
824     type: OS::Cinder::Volume
825     properties:
826       name: vol1-portal
827       size: 50
828       volume_type: SSD
829       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
830
831   portal_vm:
832     type: OS::Nova::Server
833     properties:
834       flavor: 15 GB Memory v1
835       name: vm1-portal
836       key_name: { get_resource: vm_key }
837       block_device_mapping:
838         - volume_id: { get_resource: portal_volume }
839           device_name: vda
840       networks:
841         - network: { get_param: public_net_id }
842         - port: { get_resource: portal_private_port }
843       user_data_format: RAW
844       user_data:
845         str_replace:
846           params:
847             __nexus_repo__: { get_param: nexus_repo }
848             __nexus_docker_repo__: { get_param: nexus_docker_repo }
849             __nexus_username__: { get_param: nexus_username }
850             __nexus_password__: { get_param: nexus_password }
851             __gitlab_username__: { get_param: gitlab_username }
852             __gitlab_password__: { get_param: gitlab_password }
853             __artifacts_version__: { get_param: artifacts_version }
854           template: |
855             #!/bin/bash
856             # DNS/GW IP address configuration
857             mkdir /opt/config
858             echo "10.0.0.1" > /opt/config/dns_gw_ip.txt
859             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
860             resolvconf -u
861             
862             # Download dependencies
863             add-apt-repository -y ppa:openjdk-r/ppa
864             apt-get update
865             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk unzip mysql-client-core-5.6 ntp ntpdate
866             
867             # Download scripts from Nexus
868             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/portal_vm_init.sh -o /opt/portal_vm_init.sh
869             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/portal_serv.sh -o /opt/portal_serv.sh
870             chmod +x /opt/portal_vm_init.sh
871             chmod +x /opt/portal_serv.sh
872             mv /opt/portal_serv.sh /etc/init.d
873             update-rc.d portal_serv.sh defaults
874             
875             # Download and install docker-engine and docker-compose
876             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
877             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
878             apt-get update
879             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
880             apt-get install -y docker-engine
881             service docker start
882             mkdir /opt/docker
883             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
884             chmod +x /opt/docker/docker-compose
885
886             # Store credentials in files
887             mkdir -p /opt/config
888             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
889             echo "__nexus_username__" > /opt/config/nexus_username.txt
890             echo "__nexus_password__" > /opt/config/nexus_password.txt
891             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
892             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
893
894             # Run Portal-specific instructions
895             mkdir -p /PROJECT/OpenSource/UbuntuEP/logs
896             cd /opt
897             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/portal.git
898
899             # Run docker-compose to spin up containers
900             ./portal_vm_init.sh
901
902
903   # DCAE Controller instantiation
904   dcae_c_private_port:
905     type: OS::Neutron::Port
906     properties:
907       network: { get_resource: oam_ecomp }
908       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.4.1}]
909   dcae_c_vm:
910     type: OS::Nova::Server
911     properties:
912       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
913       flavor: 8 GB General Purpose v1
914       name: vm1-dcae-controller
915       key_name: { get_resource: vm_key }
916       networks:
917         - network: { get_param: public_net_id }
918         - port: { get_resource: dcae_c_private_port }
919       user_data_format: RAW
920       user_data: 
921         str_replace:
922           params:
923             __nexus_repo__: { get_param: nexus_repo }
924             __nexus_docker_repo__: { get_param: nexus_docker_repo }
925             __nexus_username__: { get_param: nexus_username }
926             __nexus_password__: { get_param: nexus_password }
927             __nexus_url_snapshots__: { get_param: nexus_url_snapshot }
928             __gitlab_username__: { get_param: gitlab_username }
929             __gitlab_password__: { get_param: gitlab_password }
930             __gitlab_branch__: { get_param: gitlab_branch }
931             __dcae_zone__: { get_param: dcae_zone }
932             __dcae_state__: { get_param: dcae_state }
933             __artifacts_version__: { get_param: artifacts_version }
934             __tenant_id__: { get_param: openstack_tenant_id }
935             __openstack_private_network_name__: { get_attr: [oam_ecomp, name] }
936             __openstack_user__: { get_param: openstack_username }
937             __openstack_password__: { get_param: openstack_api_key }
938             __key_name__: { get_param: key_name }
939             __rand_str__: { get_resource: random-str }
940             __pub_key__: { get_param: pub_key }
941             __nexus_repo_root__: { get_param: nexus_repo_root }
942             __openstack_region__: { get_param: openstack_region }
943           template: |
944             #!/bin/bash
945             # DNS/GW IP address configuration
946             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
947             resolvconf -u
948
949             # Download dependencies
950             add-apt-repository -y ppa:openjdk-r/ppa
951             apt-get update
952             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk make git ntp ntpdate
953
954             # Download scripts from Nexus
955             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/dcae_vm_init.sh -o /opt/dcae_vm_init.sh
956             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/dcae_serv.sh -o /opt/dcae_serv.sh
957             chmod +x /opt/dcae_vm_init.sh
958             chmod +x /opt/dcae_serv.sh
959             mv /opt/dcae_serv.sh /etc/init.d
960             update-rc.d dcae_serv.sh defaults
961
962             # Download and install docker-engine and docker-compose
963             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
964             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
965             apt-get update
966             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
967             apt-get install -y docker-engine
968             service docker start
969             mkdir /opt/docker
970             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
971             chmod +x /opt/docker/docker-compose
972             
973             # DCAE Controller specific deployment
974             cd /opt
975             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/dcae/demo/startup/controller.git dcae-startup-vm-controller
976
977             cd dcae-startup-vm-controller
978             mkdir -p /opt/app/dcae-controller
979             cat > /opt/app/dcae-controller/config.yaml << EOF_CONFIG
980             ZONE: __dcae_zone__
981             STATE: __dcae_state__
982             DCAE-VERSION: 0.1.0-SNAPSHOT
983             HORIZON-URL: https://mycloud.rackspace.com/cloud/__tenant_id__
984             KEYSTONE-URL: https://identity.api.rackspacecloud.com/v2.0
985             OPENSTACK-TENANT-ID: __tenant_id__
986             OPENSTACK-TENANT-NAME: OPEN-ECOMP
987             OPENSTACK-REGION: __openstack_region__
988             OPENSTACK-PRIVATE-NETWORK: __openstack_private_network_name__
989             OPENSTACK-USER: __openstack_user__
990             OPENSTACK-PASSWORD: __openstack_password__
991             OPENSTACK-KEYNAME: __key_name_____rand_str___dcae
992             OPENSTACK-PUBKEY: __pub_key__
993             
994             NEXUS-URL-ROOT: __nexus_repo_root__
995             NEXUS-USER: __nexus_username__
996             NEXUS-PASSWORD: __nexus_password__
997             NEXUS-URL-SNAPSHOTS: __nexus_url_snapshots__
998             NEXUS-RAWURL: __nexus_repo__
999             
1000             DOCKER-REGISTRY: __nexus_docker_repo__
1001
1002             GIT-MR-REPO: https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/dcae/demo/startup/message-router.git
1003             EOF_CONFIG
1004
1005             # Store credentials in files
1006             mkdir -p /opt/config
1007             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
1008             echo "__nexus_username__" > /opt/config/nexus_username.txt
1009             echo "__nexus_password__" > /opt/config/nexus_password.txt
1010             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
1011             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
1012             echo "__gitlab_branch__" > /opt/config/gitlab_branch.txt
1013
1014             cd /opt
1015             ./dcae_vm_init.sh
1016
1017
1018   # Policy engine instantiation
1019   policy_private_port:
1020     type: OS::Neutron::Port
1021     properties:
1022       network: { get_resource: oam_ecomp }
1023       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.6.1}]
1024
1025   policy_volume:
1026     type: OS::Cinder::Volume
1027     properties:
1028       name: vol1-policy
1029       size: 50
1030       volume_type: SSD
1031       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
1032
1033   policy_vm:
1034     type: OS::Nova::Server
1035     properties:
1036       flavor: 15 GB Compute v1
1037       name: vm1-policy
1038       key_name: { get_resource: vm_key }
1039       block_device_mapping:
1040         - volume_id: { get_resource: policy_volume }
1041           device_name: vda
1042       networks:
1043         - network: { get_param: public_net_id }
1044         - port: { get_resource: policy_private_port }
1045       user_data_format: RAW
1046       user_data:
1047         str_replace:
1048           params:
1049             __nexus_repo__: { get_param: nexus_repo }
1050             __nexus_docker_repo__: { get_param: nexus_docker_repo }
1051             __nexus_username__: { get_param: nexus_username }
1052             __nexus_password__: { get_param: nexus_password }
1053             __gitlab_username__: { get_param: gitlab_username }
1054             __gitlab_password__: { get_param: gitlab_password }
1055             __artifacts_version__: { get_param: artifacts_version }
1056           template: |
1057             #!/bin/bash
1058             # DNS/GW IP address configuration
1059             mkdir /opt/config
1060             echo "10.0.0.1" > /opt/config/dns_gw_ip.txt
1061             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
1062             resolvconf -u
1063
1064             # Download dependencies
1065             add-apt-repository -y ppa:openjdk-r/ppa
1066             apt-get update
1067             apt-get install -y apt-transport-https ca-certificates wget openjdk-8-jdk ntp ntpdate
1068
1069             # Download scripts from Nexus
1070             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/policy_vm_init.sh -o /opt/policy_vm_init.sh
1071             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/policy_serv.sh -o /opt/policy_serv.sh
1072             chmod +x /opt/policy_vm_init.sh
1073             chmod +x /opt/policy_serv.sh
1074             mv /opt/policy_serv.sh /etc/init.d
1075             update-rc.d policy_serv.sh defaults
1076
1077             # Download and install docker-engine and docker-compose
1078             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
1079             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
1080             apt-get update
1081             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
1082             apt-get install -y docker-engine
1083             service docker start
1084             mkdir /opt/docker
1085             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
1086             chmod +x /opt/docker/docker-compose
1087
1088             # Store credentials in files
1089             mkdir -p /opt/config
1090             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
1091             echo "__nexus_username__" > /opt/config/nexus_username.txt
1092             echo "__nexus_password__" > /opt/config/nexus_password.txt
1093             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
1094             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
1095
1096             # Run docker-compose to spin up containers
1097             cd /opt
1098             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/policy/docker.git policy
1099
1100             ./policy_vm_init.sh
1101
1102
1103   # APP-C instantiation
1104   appc_private_port:
1105     type: OS::Neutron::Port
1106     properties:
1107       network: { get_resource: oam_ecomp }
1108       fixed_ips: [{"subnet": { get_resource: oam_ecomp_subnet }, "ip_address": 10.0.2.1}]
1109
1110   appc_vm:
1111     type: OS::Nova::Server
1112     properties:
1113       image: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
1114       flavor: 4 GB General Purpose v1
1115       name: vm1-appc
1116       key_name: { get_resource: vm_key }
1117       networks:
1118         - network: { get_param: public_net_id }
1119         - port: { get_resource: appc_private_port }
1120       user_data_format: RAW
1121       user_data:
1122         str_replace:
1123           params:
1124             __nexus_repo__: { get_param: nexus_repo }
1125             __nexus_docker_repo__: { get_param: nexus_docker_repo }
1126             __nexus_username__: { get_param: nexus_username }
1127             __nexus_password__: { get_param: nexus_password }
1128             __gitlab_username__: { get_param: gitlab_username }
1129             __gitlab_password__: { get_param: gitlab_password }
1130             __dmaap_topic__: { get_param: dmaap_topic }
1131             __artifacts_version__: { get_param: artifacts_version }
1132           template: |
1133             #!/bin/bash
1134
1135             # DNS/GW IP address configuration
1136             mkdir /opt/config
1137             echo "10.0.0.1" > /opt/config/dns_gw_ip.txt
1138             echo "nameserver 10.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
1139             resolvconf -u
1140
1141             # Download dependencies
1142             add-apt-repository -y ppa:openjdk-r/ppa
1143             apt-get update
1144             apt-get install -y apt-transport-https ca-certificates wget openjdk-7-jdk ntp ntpdate
1145
1146             # Download scripts from Nexus
1147             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/appc_vm_init.sh -o /opt/appc_vm_init.sh
1148             curl -k __nexus_repo__/org.openecomp.demo/boot/__artifacts_version__/appc_serv.sh -o /opt/appc_serv.sh
1149             chmod +x /opt/appc_vm_init.sh
1150             chmod +x /opt/appc_serv.sh
1151             mv /opt/appc_serv.sh /etc/init.d
1152             update-rc.d appc_serv.sh defaults
1153             
1154             # Download and install docker-engine and docker-compose
1155             apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
1156             echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
1157             apt-get update
1158             apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual
1159             apt-get install -y docker-engine
1160             service docker start
1161
1162             mkdir /opt/docker
1163             curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /opt/docker/docker-compose
1164             chmod +x /opt/docker/docker-compose
1165             
1166             # Store credentials in files
1167             mkdir -p /opt/config
1168             echo "__nexus_docker_repo__" > /opt/config/nexus_docker_repo.txt
1169             echo "__nexus_username__" > /opt/config/nexus_username.txt
1170             echo "__nexus_password__" > /opt/config/nexus_password.txt
1171             echo "__gitlab_username__" > /opt/config/gitlab_username.txt
1172             echo "__gitlab_password__" > /opt/config/gitlab_password.txt
1173             echo "__dmaap_topic__" > /opt/config/dmaap_topic.txt
1174
1175             # Run docker-compose to spin up containers
1176             cd /opt
1177             git clone https://__gitlab_username__:__gitlab_password__@gerrit.openecomp.org/r/a/appc/deployment.git appc
1178             ./appc_vm_init.sh
1179