8e1841286aac089db73f9e0723f9d5eeafbdce50
[integration/test.git] / tools / deployment / openstack_ha / deploy / README.md
1 # Deploy Openstack Using the Deploy in ODL Integration/CSIT Code
2
3 ## Background
4 > This is a deployer used to deploy Openstack with ODL for Testing
5 > Aimed at improving the ODL CSIT for Openstack Integration.
6 > This Deployer is currently being developed and will be enhanced continuously
7 > This is part of Changes planned in the ticket below
8 https://jira.opendaylight.org/browse/INTTEST-34
9 > If any issues faced, please mail integration-dev@lists.opendaylight.org
10
11
12 ##  Setup Info
13 ### 1node  Setup (1 Openstack Control Node)
14 Requires 4 VM instances
15 * 1 for robot execution
16 * 1 for Control Node
17 * 2 Compute Nodes
18
19 #### 1node setup Platform Requirements
20 * All Nodes should have this hardware support as minimum
21      - 4 VCPU
22      - 8192 MB RAM
23
24 ### 3node Setup (3 Openstack Control Nodes for HA)
25 Requires 7 VM instances
26 * 1 for robot execution
27 * 3 Openstack Control Nodes
28 * 1 HAProxy Node
29 * 2 Compute Nodes
30
31 #### 3node setup Platform Requirements
32 * All Control Nodes to have
33      - 4 VCPU
34      - 12288 MB RAM
35
36 * All Other Nodes should have this hardware support as minimum
37      - 4 VCPU
38      - 8192 MB RAM
39
40 ### Common Settings for all VM
41 * All VM's will run the latest CentOS (7) distro
42   At the time of creating this text, latest can be found here
43   [CentOS 7.4](http://mirrors.kernel.org/centos/7.4.1708/)
44
45 * Ensure that one common sudo capable username/password can login to all VM's. i.e login with the same username/password combination
46   is possible in all VM's, preferrably have the same root password in all VM's
47
48 * Ensure that SELINUX is disabled in all nodes.
49    ```
50    Edit the file /etc/selinux/config and ensure the line
51    SELINUX=disabled
52    ```
53 * Ensure the instances can reach internet to download and install packages
54
55 * If you have Proxy for internet, please configure the proxy details to yum.conf
56    [Ref:Add proxy settings to yum.conf](https://www.centos.org/docs/5/html/yum/sn-yum-proxy-server.html)
57
58
59 ##  Topology
60
61 ### 1node Topology
62
63         -------------
64         |            |---------------------|            |
65         |  Robot VM  |---------|           |            |
66         |            |---------|-----------|------------|
67         -------------          |           |            |
68         -------------          |           |            |
69         |            |---------|-----------|            |
70         | Controller |---------|           |            |
71         |            |---------|-----------|------------|
72         -------------         |           |             |
73         -------------          |           |            |
74         |            |---------|-----------|            |
75         |  Compute1  |---------|           |            |
76         |            |---------|-----------|------------|
77         -------------          |           |            |
78         -------------          |           |            |
79         |            |---------|-----------|            |
80         |  Compute2  |---------|           |            |
81         |            |---------|-----------|------------|
82         -------------          |           |            |
83                                |           |            |
84                                |           |            |
85                              Data      External      External
86                                       Network1     Network2
87
88
89  ### 3node Topology
90
91
92         -------------
93         |            |---------------------|            |
94         |  Robot VM  |---------|           |            |
95         |            |---------|-----------|------------|
96         -------------          |           |            |
97         -------------          |           |            |
98         |            |---------|-----------|            |
99         |Controller1 |---------|           |            |
100         |            |---------|-----------|------------|
101         -------------          |           |            |
102         -------------          |           |            |
103         |            |---------|-----------|            |
104         |Controller2 |---------|           |            |
105         |            |---------|-----------|------------|
106         -------------          |           |            |
107         -------------          |           |            |
108         |            |---------|-----------|            |
109         |Controller3 |---------|           |            |
110         |            |---------|-----------|------------|
111         -------------          |           |            |
112         -------------          |           |            |
113         |            |         |           |            |
114         |  haproxy   |---------|           |            |
115         |            |         |           |            |
116         -------------          |           |            |
117         -------------          |           |            |
118         |            |---------|-----------|            |
119         |  Compute1  |---------|           |            |
120         |            |---------|-----------|------------|
121         -------------          |           |            |
122         -------------          |           |            |
123         |            |---------|-----------|            |
124         |  Compute2  |---------|           |            |
125         |            |---------|-----------|------------|
126         -------------          |           |            |
127                                |           |            |
128                                |           |            |
129                                Data      External      External
130                                          Network1       Network2
131
132
133  ## Steps to Execute from Robot VM
134
135  ### Get Deployer
136
137  * Install robotframework pre-requisites
138  ```
139         sudo yum install python-pip git -y
140         pip install robotframework robotframework-sshlibrary
141         pip install robotframework-requests
142         pip install robotframework-httplibrary
143  ```
144
145  * Get the Deployer
146  ```
147         git clone https://git.opendaylight.org/gerrit/p/integration/test
148         cd test
149         git fetch https://<user-id>@git.opendaylight.org/gerrit/a/integration/test refs/changes/68/63168/41 && git cherry-pick FETCH_HEAD
150  ```
151  ```
152  Note: The deployer is not merged yet
153  ```
154
155  ### Test 1node Openstack with ODL
156
157  #### Deploy 1node Openstack with ODL
158
159  * Run the deployer with pybot
160  ```
161         pybot --debug ~/debug_1node.log \
162         -v OS_CONTROL_1_IP:<CONTROL_NODE_IP> \
163         -v OS_CONTROL_NODE_IP:<CONTROL_NODE_IP> \
164         -v OS_CONTROL_1_HOSTNAME:<CONTROL_NODE_HOSTNAME> \
165         -v OS_IP:<CONTROL_NODE_IP> \
166         -v NUM_CONTROL_NODES:1 \
167         -v NUM_COMPUTE_NODES:2 \
168         -v OS_COMPUTE_1_IP:<COMPUTE_1_IP> \
169         -v OS_COMPUTE_1_HOSTNAME:<COMPUTE_1_HOSTNAME> \
170         -v OS_COMPUTE_2_IP:<COMUTE_2_IP> \
171         -v OS_COMPUTE_2_HOSTNAME:<COMPUTE_2_HOSTNAME> \
172         -v OPENSTACK_VERSION:pike \
173         -v EXT_BRIDGE:datacenter \
174         -v OS_USER:root \
175         -v OS_USER_PASSWORD:<root_password> \
176         -v OS_NODE_PROMPT:# \
177         -v ODL_RPM:http://cbs.centos.org/repos/nfv7-opendaylight-70-release/x86_64/os/Packages/opendaylight-7.0.0-1.el7.noarch.rpm \
178         ~/test/csit/suites/openstack/deploy/00_initial_setup.robot \
179         ~/test/csit/suites/openstack/deploy/01_mysql_setup.robot \
180         ~/test/csit/suites/openstack/deploy/02_rabbitmq_setup.robot \
181         ~/test/csit/suites/openstack/deploy/03_keystone_setup.robot \
182         ~/test/csit/suites/openstack/deploy/04_glance_setup.robot \
183         ~/test/csit/suites/openstack/deploy/05_nova_setup.robot \
184         ~/test/csit/suites/openstack/deploy/06_neutron_setup.robot \
185         ~/test/csit/suites/openstack/deploy/07_csit_setup.robot
186 ```
187
188 * After execution, Check the log.html to understand the status of execution
189
190 * If the status is "PASS", there will be an Openstack Installation with
191   one control node and 2 compute nodes.
192
193 * All the settings for executing CSIT will be configured.
194
195 #### Execute CSIT
196
197 * Once the deployer command mentioned above is successful, you are ready to launch the CSIT Tests
198
199 * Run the below pybot command to launch any test
200
201 ```
202         source /tmp/stackrc
203         pybot --debug debug_csit.log \
204         --log log_csit.html --output output_csit.xml \
205         -v CONTROLLER_USER:jenkins \
206         -v NUM_ODL_SYSTEM:1 \
207         -v NUM_OS_SYSTEM:3 \
208         -v ODL_SYSTEM_IP:<CONTROL_NODE_IP> \
209         -v ODL_SYSTEM_1_IP:<CONTROL_NODE_IP> \
210         -v OS_CONTROL_NODE_IP:<CONTROL_NODE_IP> \
211         -v OS_CONTROL_NODE_1_IP:<CONTROL_NODE_IP> \
212         -v OS_COMPUTE_1_IP:<COMPUTE_1_IP> \
213         -v OS_COMPUTE_2_IP:<COMPUTE_2_IP> \
214         -v OS_USER:jenkins \
215         -v USER_HOME:${HOME} \
216         -v OPENSTACK_BRANCH:stable/pike \
217         ~/test/csit/suites/openstack/connectivity/01_l2_tests.robot \
218         ~/test/csit/suites/openstack/connectivity/02_l3_tests.robot \
219 ```
220
221 ### Test 3node Openstack  with ODL
222
223 #### Deploy 3node Openstack with ODL
224
225 * Run the below pybot command
226 ```
227         pybot --debug ~/debug_3node.log \
228         -l log_3node_install.html \
229         -v OS_CONTROL_1_IP:<CONTROL_1_IP> \
230         -v OS_CONTROL_1_HOSTNAME:<CONTROL_1_HOSTNAME> \
231         -v OS_CONTROL_2_IP:<CONTROL_2_IP> \
232         -v OS_CONTROL_2_HOSTNAME:<CONTROL_2_HOSTNAME> \
233         -v OS_CONTROL_3_IP:<CONTROL_3_IP> \
234         -v OS_CONTROL_3_HOSTNAME:<CONTROL_3_HOSTNAME> \
235         -v NUM_CONTROL_NODES:3 \
236         -v NUM_COMPUTE_NODES:2 \
237         -v OS_COMPUTE_1_IP:<COMPUTE_1_IP> \
238         -v OS_COMPUTE_1_HOSTNAME:<COMPUTE_1_HOSTNAME> \
239         -v OS_COMPUTE_2_IP:<COMPUTE_2_IP> \
240         -v OS_COMPUTE_2_HOSTNAME:<COMPUTE_2_HOSTNAME> \
241         -v HAPROXY_IP:<HAPROXY_IP> \
242         -v HAPROXY_HOSTNAME:<HAPROXY_HOSTNAME> \
243         -v OPENSTACK_VERSION:pike \
244         -v EXT_BRIDGE:datacenter \
245         -v OS_USER:root \
246         -v OS_USER_PASSWORD:<root_password> \
247         -v OS_NODE_PROMPT:# \
248         -v ODL_RPM:http://cbs.centos.org/repos/nfv7-opendaylight-70-release/x86_64/os/Packages/opendaylight-7.0.0-1.el7.noarch.rpm \
249         ~/test/csit/suites/openstack/deploy/00_initial_setup.robot \
250         ~/test/csit/suites/openstack/deploy/01_mysql_setup.robot \
251         ~/test/csit/suites/openstack/deploy/02_rabbitmq_setup.robot \
252         ~/test/csit/suites/openstack/deploy/03_keystone_setup.robot \
253         ~/test/csit/suites/openstack/deploy/04_glance_setup.robot \
254         ~/test/csit/suites/openstack/deploy/05_nova_setup.robot \
255         ~/test/csit/suites/openstack/deploy/06_neutron_setup.robot \
256         ~/test/csit/suites/openstack/deploy/07_csit_setup.robot
257 ```
258 * After execution, Check the log.html to understand the status of execution
259
260 * If the status is "PASS", there will be an Openstack Installation with
261   three control nodes as HA and 2 compute nodes along with HAProxy node
262   configured to load balance and ensure HA.
263
264 * All the settings for executing CSIT will be configured.
265
266 #### Execute CSIT
267
268 * Run the below pybot command to execute CSIT
269
270 ```     source /tmp/stackrc
271         pybot --debug debug_csit.log \
272         --log log_csit.html --output output_csit.xml \
273         -v CONTROLLER_USER:jenkins \
274         -v HA_PROXY_IP:<HAPROXY_IP> \
275         -v NUM_ODL_SYSTEM:3 \
276         -v NUM_OS_SYSTEM:5 \
277         -v ODL_SYSTEM_IP:<CONTROL_1_IP> \
278         -v ODL_SYSTEM_1_IP:<CONTROL_1_IP> \
279         -v ODL_SYSTEM_2_IP:<CONTROL_2_IP> \
280         -v ODL_SYSTEM_3_IP:<CONTROL_3_IP> \
281         -v OS_CONTROL_NODE_IP:<CONTROL_1_IP> \
282         -v OS_CONTROL_NODE_1_IP:<CONTROL_1_IP> \
283         -v OS_CONTROL_NODE_2_IP:<CONTROL_2_IP> \
284         -v OS_CONTROL_NODE_3_IP:<CONTROL_3_IP> \
285         -v OS_COMPUTE_1_IP:<COMPUTE_1_IP> \
286         -v OS_COMPUTE_2_IP:<COMPUTE_2_IP> \
287         -v OS_USER:jenkins \
288         -v USER_HOME:${HOME} \
289         -v OPENSTACK_BRANCH:stable/pike \
290         /home/evaluatech01/test/csit/suites/openstack/connectivity/01_l2_tests.robot
291 ```
292
293 ### Uninstall Openstack
294
295 * Sometimes, the deployer might fail and may warrant a rerun. At this time the below pybot command can be executed
296   to clear the setup for rerun
297
298 #### 1node Openstack
299
300 ```
301         pybot --debug ~/debug_1node.log \
302         -v OS_CONTROL_1_IP:<CONTROL_NODE_IP> \
303         -v OS_CONTROL_NODE_IP:<CONTROL_NODE_IP> \
304         -v OS_CONTROL_1_HOSTNAME:<CONTROL_NODE_HOSTNAME> \
305         -v OS_IP:<CONTROL_NODE_IP> \
306         -v NUM_CONTROL_NODES:1 \
307         -v NUM_COMPUTE_NODES:2 \
308         -v OS_COMPUTE_1_IP:<COMPUTE_1_IP> \
309         -v OS_COMPUTE_1_HOSTNAME:<COMPUTE_1_HOSTNAME> \
310         -v OS_COMPUTE_2_IP:<COMUTE_2_IP> \
311         -v OS_COMPUTE_2_HOSTNAME:<COMPUTE_2_HOSTNAME> \
312         -v OPENSTACK_VERSION:pike \
313         -v EXT_BRIDGE:datacenter \
314         -v OS_USER:root \
315         -v OS_USER_PASSWORD:<root_password> \
316         -v OS_NODE_PROMPT:# \
317         -v ODL_RPM:http://cbs.centos.org/repos/nfv7-opendaylight-70-release/x86_64/os/Packages/opendaylight-7.0.0-1.el7.noarch.rpm \
318         ~/test/csit/suites/openstack/deploy/000_destroy_setup.robot
319 ```
320
321 #### 3node Openstack
322
323 ```
324         pybot --debug ~/debug_3node.log \
325         -l log_3node_install.html \
326         -v OS_CONTROL_1_IP:<CONTROL_1_IP> \
327         -v OS_CONTROL_1_HOSTNAME:<CONTROL_1_HOSTNAME> \
328         -v OS_CONTROL_2_IP:<CONTROL_2_IP> \
329         -v OS_CONTROL_2_HOSTNAME:<CONTROL_2_HOSTNAME> \
330         -v OS_CONTROL_3_IP:<CONTROL_3_IP> \
331         -v OS_CONTROL_3_HOSTNAME:<CONTROL_3_HOSTNAME> \
332         -v NUM_CONTROL_NODES:3 \
333         -v NUM_COMPUTE_NODES:2 \
334         -v OS_COMPUTE_1_IP:<COMPUTE_1_IP> \
335         -v OS_COMPUTE_1_HOSTNAME:<COMPUTE_1_HOSTNAME> \
336         -v OS_COMPUTE_2_IP:<COMPUTE_2_IP> \
337         -v OS_COMPUTE_2_HOSTNAME:<COMPUTE_2_HOSTNAME> \
338         -v HAPROXY_IP:<HAPROXY_IP> \
339         -v HAPROXY_HOSTNAME:<HAPROXY_HOSTNAME> \
340         -v OPENSTACK_VERSION:pike \
341         -v EXT_BRIDGE:datacenter \
342         -v OS_USER:root \
343         -v OS_USER_PASSWORD:<root_password> \
344         -v OS_NODE_PROMPT:# \
345         -v ODL_RPM:http://cbs.centos.org/repos/nfv7-opendaylight-70-release/x86_64/os/Packages/opendaylight-7.0.0-1.el7.noarch.rpm \
346         ~/test/csit/suites/openstack/deploy/000_destroy_setup.robot
347 ```