blob: 715420554bdc7077cbcea79213002d260e54cf94 [file] [log] [blame]
Zack Williamsfc102dd2016-03-01 17:31:30 -07001---
2# tasks for xos-install role
3
Scott Bakerdb5c8c72016-11-08 08:40:06 -08004- name: Install prerequisites
5 apt:
6 name={{ item }}
7 update_cache=yes
8 cache_valid_time=3600
9 become: yes
10 with_items:
11 - git
12 - make
13 - curl
14 - python-novaclient
15 - python-neutronclient
16 - python-keystoneclient
17 - python-glanceclient
Zack Williamsd2cbe512016-06-03 09:33:15 -070018
Scott Baker34c02ac2017-01-16 08:58:52 -080019# ---- copy repos from the dev machine to the head node ----
20
21- name: Create cord destination directory
22 become: yes
23 file:
24 path: "{{ cord_dest_dir }}"
25 state: directory
26 mode: 0755
27 owner: "{{ ansible_user_id }}"
28
29- name: Copy the whole repo tree
Scott Bakerdb5c8c72016-11-08 08:40:06 -080030 synchronize:
Scott Baker34c02ac2017-01-16 08:58:52 -080031 src: "{{ playbook_dir }}/../../../cord/"
32 dest: "{{ cord_dest_dir }}/"
33
34- name: Create directory xos_services
35 file:
36 path: "{{ ansible_user_dir }}/xos_services"
37 state: directory
38 mode: 0755
39
40- name: Create directory xos_libraries
41 file:
42 path: "{{ ansible_user_dir }}/xos_libraries"
43 state: directory
44 mode: 0755
45
46- name: Create bindings to service-profile and xos
47 become: yes
48 mount:
49 src: "{{ cord_dest_dir }}/orchestration/{{ item }}"
50 name: "{{ ansible_user_dir }}/{{ item }}"
51 fstype: none
52 opts: rw,bind
53 state: mounted
Scott Bakerdb5c8c72016-11-08 08:40:06 -080054 with_items:
55 - service-profile
56 - xos
Scott Bakerdb5c8c72016-11-08 08:40:06 -080057
Scott Baker34c02ac2017-01-16 08:58:52 -080058- name: Create bindings for xos services
59 become: yes
60 mount:
61 src: "{{ cord_dest_dir }}/orchestration/xos_services/{{ item }}"
62 name: "{{ ansible_user_dir }}/xos_services/{{ item }}"
63 fstype: none
64 opts: rw,bind
65 state: mounted
66 with_items:
67 - exampleservice
68 - fabric
69 - globalxos
70 - hypercache
71 - metro-net
72 - monitoring
73 - onos-service
74 - openstack
75 - vrouter
76 - vsg
77 - vtr
Scott Bakerdb5c8c72016-11-08 08:40:06 -080078
Scott Baker34c02ac2017-01-16 08:58:52 -080079- name: Create bindings for xos services that reside in onos
80 become: yes
81 mount:
82 src: "{{ cord_dest_dir }}/onos-apps/apps/{{ item }}"
83 name: "{{ ansible_user_dir }}/xos_services/{{ item }}"
84 fstype: none
85 opts: rw,bind
86 state: mounted
Scott Bakerdb5c8c72016-11-08 08:40:06 -080087 with_items:
88 - vtn
89 - olt
Scott Bakerdb5c8c72016-11-08 08:40:06 -080090
Scott Baker34c02ac2017-01-16 08:58:52 -080091- name: Create bindings for xos libraries
92 become: yes
93 mount:
94 src: "{{ cord_dest_dir }}/orchestration/xos_libraries/{{ item }}"
95 name: "{{ ansible_user_dir }}/xos_libraries/{{ item }}"
96 fstype: none
97 opts: rw,bind
98 state: mounted
99 with_items:
100 - ng-xos-lib
101
102# ---- alternatively, check out repos from Internet ---
103
104- name: Clone service-profile repo
105 git:
106 repo={{ service_profile_repo_url }}
107 dest={{ service_profile_repo_dest }}
108 version={{ service_profile_repo_branch }}
109 force=yes
110 when:
111 False
112
113# ---- install keys ----
114
Scott Bakerdb5c8c72016-11-08 08:40:06 -0800115- name: Copy over SSH keys
116 command: cp ~/.ssh/{{ item }} {{ service_profile_repo_dest }}/{{ xos_configuration }}/
117 with_items:
118 - id_rsa
119 - id_rsa.pub
120 tags:
121 - skip_ansible_lint
122
123- name: Copy over node key
124 command: cp {{ ansible_user_dir }}/node_key {{ service_profile_repo_dest }}/{{ xos_configuration }}/
125 tags:
126 - skip_ansible_lint
127
128- name: Set ownership and permissions of keys
129 file:
130 path={{ service_profile_repo_dest }}/{{ xos_configuration }}/{{ item }}
131 owner={{ ansible_user_id }}
132# mode=0600
133 with_items:
134 - id_rsa
135 - id_rsa.pub
136 - node_key
137
Zack Williams682450e2016-11-19 09:04:41 -0700138- name: Create templated TOSCA files
139 template:
140 src: "{{ item }}.j2"
141 dest: "{{ service_profile_repo_dest }}/{{ xos_configuration }}/{{ item }}"
142 with_items: "{{ xos_tosca_templates }}"
Scott Bakerdb5c8c72016-11-08 08:40:06 -0800143
144- name: Download Glance VM images
145 get_url:
146 url={{ item.url }}
147 checksum={{ item.checksum }}
Zack Williams682450e2016-11-19 09:04:41 -0700148 dest={{ service_profile_repo_dest }}/{{ xos_configuration }}/images/{{ item.name }}.qcow2
Scott Bakerdb5c8c72016-11-08 08:40:06 -0800149 with_items: "{{ xos_images }}"
150
151# ---- pull docker images ----
152
153- name: Check to see if registry is reachable
154 command: curl -sf http://docker-registry:5000/
155 ignore_errors: yes
156 register: docker_registry_check
157 tags:
158 - skip_ansible_lint
159
160- name: Use registry if it is available
161 set_fact:
162 docker_registry: "{{ local_docker_registry }}"
163 docker_opts: "--insecure-registry {{ local_docker_registry }}"
164 docker_tag: "candidate"
165 when: docker_registry_check|succeeded
166
167- name: Pull docker images for XOS
168 become: yes
169 command: docker pull {{ docker_registry }}/{{ item }}:{{ docker_tag }}
170 with_items:
171 - xosproject/xos-base
172 - xosproject/xos-postgres
173 - xosproject/cord-app-build
174 - redis
Scott Bakerc00f9c02017-01-19 09:40:14 -0800175 - nginx
176 - node
Scott Bakerdb5c8c72016-11-08 08:40:06 -0800177 tags:
178 - skip_ansible_lint
179
180- name: Tag the images downloaded from the local registry
181 command: docker tag {{ docker_registry }}/{{ item }}:{{ docker_tag }} {{ item }}:latest
182 with_items:
183 - xosproject/xos-base
184 - xosproject/xos-postgres
185 - xosproject/cord-app-build
186 - redis
Scott Bakerc00f9c02017-01-19 09:40:14 -0800187 - nginx
188 when: docker_registry_check|succeeded
189
190- name: Separately tag the node image with tag argon
191 command: docker tag {{ docker_registry }}/node:{{ docker_tag }} node:argon
Scott Bakerdb5c8c72016-11-08 08:40:06 -0800192 when: docker_registry_check|succeeded
193
Zack Williamsc563b572016-06-03 09:49:53 -0700194
Scott Bakerdb5c8c72016-11-08 08:40:06 -0800195
196
Zack Williamsd2cbe512016-06-03 09:33:15 -0700197