aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCNlucius <lukai1@huawei.com>2016-06-30 10:27:59 +0800
committerCNlucius CNlucius <lukai1@huawei.com>2016-07-05 07:00:04 +0000
commitff20b4011edfe706bcc605ca30d1f618a889a027 (patch)
treeb0360cee03161dbff9b29b2e972279b1548e46b3
parent780256c594ade62a006b5bf740f868714a60ac8e (diff)
COMPASS-409
Upgrade ONOS support for Compass Change-Id: Iefc37dc629b1ad7c19bf2b679ec08c9cb15c6a76 Signed-off-by: CNlucius <lukai1@huawei.com>
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/handlers/main.yml11
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/main.yml15
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/onos_controller.yml140
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/openvswitch.yml76
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/templates/ml2_conf.sh15
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/Debian.yml14
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/RedHat.yml14
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/main.yml19
8 files changed, 234 insertions, 70 deletions
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/handlers/main.yml b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/handlers/main.yml
new file mode 100755
index 00000000..e099fcf4
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/handlers/main.yml
@@ -0,0 +1,11 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: restart onos service
+ service: name=onos state=restarted enabled=yes
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/main.yml b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/main.yml
index c77a4c61..687d27d1 100755
--- a/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/main.yml
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/main.yml
@@ -9,16 +9,15 @@
---
- include_vars: "{{ ansible_os_family }}.yml"
-- name: remove neutron-openvswitch-agent auto start
+- name: remove neutron-plugin-openvswitch-agent auto start
shell: >
- update-rc.d neutron-openvswitch-agent remove;
- sed -i /neutron-openvswitch-agent/d /opt/service
+ update-rc.d neutron-plugin-openvswitch-agent remove;
+ sed -i /neutron-plugin-openvswitch-agent/d /opt/service
when: groups['onos']|length !=0
ignore_errors: True
- name: shut down and disable Neutron's agent services
- service: name=neutron-openvswitch-agent state=stopped
- when: groups['onos']|length !=0
+ service: name=neutron-plugin-openvswitch-agent state=stopped
ignore_errors: True
- name: remove neutron-l3-agent auto start
@@ -39,15 +38,13 @@
ovs-vsctl del-br br-tun ;
ovs-vsctl del-manager ;
ip link delete onos_port1 type veth peer name onos_port2;
- when: groups['onos']|length !=0
ignore_errors: True
- name: Install ONOS Cluster on Controller
include: onos_controller.yml
when: inventory_hostname in groups['onos']
-- name: Install ONOS Cluster on Compute
+- name: Config ONOS Cluster
include: openvswitch.yml
- when: groups['onos']|length !=0
-# when: groups['onos']|length !=0 and inventory_hostname not in groups['onos']
+ when: inventory_hostname in groups['onos']
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/onos_controller.yml b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/onos_controller.yml
new file mode 100755
index 00000000..d51151a9
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/onos_controller.yml
@@ -0,0 +1,140 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+
+- name: get image http server
+ shell: awk -F'=' '/compass_server/ {print $2}' /etc/compass.conf
+ register: http_server
+
+- name: download onos driver packages
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/onos/{{ onos_driver }}" dest=/opt/
+
+- name: upload onos sfc driver package
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/onos/{{ onos_sfc_driver }}" dest=/opt/
+
+- name: unarchive onos driver package
+ command: su -s /bin/sh -c "tar xvf /opt/networking-onos.tar -C /opt/"
+
+- name: upload onos sfc driver package
+ command: su -s /bin/sh -c "tar xvf /opt/networking-sfc.tar -C /opt/"
+
+- name: install onos driver
+ command: su -s /bin/sh -c "/opt/networking-onos/install_driver.sh"
+
+- name: install onos sfc driver
+ command: su -s /bin/sh -c "/opt/networking-sfc/install_driver.sh"
+
+- name: install onos required packages
+ action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
+ with_items: packages
+
+- name: download oracle-jdk8 package file
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/onos/{{ jdk8_pkg_name }}" dest=/opt/{{ jdk8_pkg_name }}
+
+- name: download oracle-jdk8 script file
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/onos/{{ jdk8_script_name }}" dest=/opt/
+
+- name: unarchive onos driver package
+ command: su -s /bin/sh -c "tar xvf /opt/install_jdk8.tar -C /opt/"
+
+- name: install install_jdk8 package
+ command: su -s /bin/sh -c "/opt/install_jdk8/install_jdk8.sh"
+
+- name: create JAVA_HOME environment variable
+ shell: >
+ export J2SDKDIR=/usr/lib/jvm/java-8-oracle;
+ export J2REDIR=/usr/lib/jvm/java-8-oracle/jre;
+ export PATH=$PATH:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin;
+ export JAVA_HOME=/usr/lib/jvm/java-8-oracle;
+ export DERBY_HOME=/usr/lib/jvm/java-8-oracle/db;
+
+- name: create onos group
+ group: name=onos system=yes state=present
+
+- name: create onos user
+ user:
+ name: onos
+ group: onos
+ home: "{{ onos_home }}"
+ createhome: "yes"
+ system: "yes"
+ shell: "/bin/false"
+
+- name: download onos package
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/onos/{{ onos_pkg_name }}" dest=/opt/{{ onos_pkg_name }}
+
+- name: create new jar repository
+ command: su -s /bin/sh -c "mkdir ~/.m2"
+ ignore_errors: True
+
+- name: download jar repository
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/onos/{{ repository }}" dest=~/.m2/
+
+- name: extract jar repository
+ command: su -s /bin/sh -c "tar xvf ~/.m2/repository.tar -C ~/.m2/"
+
+- name: extract onos package
+ command: su -s /bin/sh -c "tar xzf /opt/{{ onos_pkg_name }} -C {{ onos_home }} --strip-components 1 --no-overwrite-dir -k --skip-old-files" onos
+
+- name: configure onos service
+ shell: >
+ echo 'export ONOS_OPTS=debug' > {{ onos_home }}/options;
+ echo 'export ONOS_USER=root' >> {{ onos_home }}/options;
+ mkdir {{ onos_home }}/var;
+ mkdir {{ onos_home }}/config;
+ sed -i '/pre-stop/i\env JAVA_HOME=/usr/lib/jvm/java-8-oracle' {{ onos_home }}/init/onos.conf;
+ cp -rf {{ onos_home }}/init/onos.conf /etc/init/;
+ cp -rf {{ onos_home }}/init/onos.conf /etc/init.d/;
+
+- name: configure onos boot feature
+ shell: >
+ sed -i '/^featuresBoot=/c\featuresBoot={{ onos_boot_features }}' {{ onos_home }}/{{ karaf_dist }}/etc/org.apache.karaf.features.cfg;
+
+- name: wait for config time
+ shell: "sleep 10"
+
+- name: start onos service
+ service: name=onos state=started enabled=yes
+
+- name: wait for onos start time
+ shell: "sleep 200"
+
+- name: add onos auto start
+ shell: >
+ echo "onos">>/opt/service
+
+##########################################################################################################
+################################ ONOS connect with OpenStack ################################
+##########################################################################################################
+- name: Configure Neutron1
+ shell: >
+ crudini --set /etc/neutron/neutron.conf DEFAULT service_plugins networking_sfc.services.sfc.plugin.SfcPlugin, networking_sfc.services.flowclassifier.plugin.FlowClassifierPlugin, onos_router;
+ crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers onos_ml2;
+ crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vxlan;
+ crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers vxlan
+
+- name: Create ML2 Configuration File
+ template:
+ src: ml2_conf.sh
+ dest: "/opt/ml2_conf.sh"
+ mode: 0777
+
+- name: Configure Neutron2
+ command: su -s /bin/sh -c "/opt/ml2_conf.sh;"
+
+- name: Configure Neutron3
+ shell: >
+ mysql -e "drop database if exists neutron_ml2;";
+ mysql -e "create database neutron_ml2 character set utf8;";
+ mysql -e "grant all on neutron_ml2.* to 'neutron'@'%';";
+ su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron;
+ su -s /bin/sh -c "neutron-db-manage --subproject networking-sfc upgrade head" neutron;
+
+- name: Restart neutron-server
+ service: name=neutron-server state=restarted
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/openvswitch.yml b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/openvswitch.yml
index 1db17329..aac787ea 100755
--- a/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/openvswitch.yml
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/tasks/openvswitch.yml
@@ -7,38 +7,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
---
-#- name: remove neutron-plugin-openvswitch-agent auto start
-# shell: >
-# update-rc.d neutron-openvswitch-agent remove;
-# sed -i /neutron-openvswitch-agent/d /opt/service
-#- name: shut down and disable Neutron's agent services
-# service: name=neutron-openvswitch-agent state=stopped
-
-#- name: Stop the Open vSwitch service and clear existing OVSDB
-# shell: >
-# ovs-vsctl del-br br-int ;
-# ovs-vsctl del-br br-tun ;
-# ovs-vsctl del-manager ;
-
-#- name: get image http server
-# shell: awk -F'=' '/compass_server/ {print $2}' /etc/compass.conf
-# register: http_server
-#
-#- name: download ovs
-# get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/onos/openvswitch.tar" dest=/opt/openvswitch.tar
-#
-#- name: extract ovs
-# command: su -s /bin/sh -c "tar xvf /opt/openvswitch.tar -C /opt/"
-#
-#- name: update ovs
-# shell: >
-# cd /opt/openvswitch;
-# dpkg -i openvswitch-common_2.3.0-1_amd64.deb;
-# dpkg -i openvswitch-switch_2.3.0-1_amd64.deb;
-
-#- name: start up onos-external nic
-# command: su -s /bin/sh -c "ifconfig eth2 0 up"
- name: set veth port
shell: >
ip link add onos_port1 type veth peer name onos_port2;
@@ -46,26 +15,28 @@
ifconfig onos_port2 up;
ignore_errors: True
-- name: set veth to ovs
- shell: >
- export externamMac=`ifconfig eth1 | grep -Eo '\<[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'`;
- ifconfig onos_port2 hw ether $externamMac;
- ovs-vsctl add-port br-prv onos_port1;
- ignore_errors: True
+- name: add openflow-base feature
+ command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-openflow-base'";
+ when: inventory_hostname in groups['onos']
-#- name: wait for onos start time
-# shell: "sleep 200"
+- name: add openflow feature
+ command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-openflow'";
+ when: inventory_hostname in groups['onos']
- name: add ovsdatabase feature
command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-ovsdatabase'";
- when: inventory_hostname == groups['onos'][0]
+ when: inventory_hostname in groups['onos']
-- name: add openflow-base feature
- command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-openflow-base'";
+- name: add ovsdb-base feature
+ command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-ovsdb-base'";
when: inventory_hostname in groups['onos']
-- name: add openflow feature
- command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-openflow'";
+- name: add onos driver ovsdb feature
+ command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-drivers-ovsdb'";
+ when: inventory_hostname in groups['onos']
+
+- name: add ovsdb provider host feature
+ command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-ovsdb-provider-host'";
when: inventory_hostname in groups['onos']
- name: add vtn feature
@@ -79,23 +50,6 @@
- name: Set ONOS as the manager
command: su -s /bin/sh -c "ovs-vsctl set-manager tcp:{{ ip_settings[groups['onos'][0]]['mgmt']['ip'] }}:6640;"
-- name: create public network
- shell: >
- export OS_PASSWORD=console;
- export OS_TENANT_NAME=admin;
- export OS_AUTH_URL=http://{{ internal_vip.ip }}:35357/v2.0;
- export OS_USERNAME=ADMIN;
- neutron net-create ext-net --shared --router:external=True;
- neutron subnet-create ext-net {{ public_net_info.floating_ip_cidr }} --name ext-subnet --allocation-pool start={{ public_net_info.floating_ip_start }},end={{ public_net_info.floating_ip_end }};
- when: inventory_hostname == groups['controller'][0]
-
-- name: set gateway mac address
- shell: >
- ping -c 1 {{ ansible_default_ipv4.gateway }};
- gatewayMac=`arp -a {{ ansible_default_ipv4.gateway }} | awk '{print $4}'`;
- /opt/onos/bin/onos "externalgateway-update -m $gatewayMac";
- when: inventory_hostname in groups['onos']
-
- name: delete default gateway
shell: >
route delete default;
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/templates/ml2_conf.sh b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/templates/ml2_conf.sh
new file mode 100755
index 00000000..8af03df4
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/templates/ml2_conf.sh
@@ -0,0 +1,15 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+cat <<EOT>> /etc/neutron/plugins/ml2/ml2_conf.ini
+[onos]
+password = admin
+username = admin
+url_path = http://{{ ip_settings[groups['onos'][0]]['mgmt']['ip'] }}:8181/onos/vtn
+EOT
+
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/Debian.yml b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/Debian.yml
new file mode 100755
index 00000000..59a4dbd9
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/Debian.yml
@@ -0,0 +1,14 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+packages:
+ - software-properties-common
+ - crudini
+
+services: []
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/RedHat.yml b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/RedHat.yml
new file mode 100755
index 00000000..59a4dbd9
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/RedHat.yml
@@ -0,0 +1,14 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+packages:
+ - software-properties-common
+ - crudini
+
+services: []
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/main.yml b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/main.yml
new file mode 100755
index 00000000..f11f1102
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/onos_cluster/vars/main.yml
@@ -0,0 +1,19 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+onos_pkg_name: onos-1.6.0.tar.gz
+onos_home: /opt/onos/
+karaf_dist: apache-karaf-3.0.5
+jdk8_pkg_name: jdk-8u51-linux-x64.tar.gz
+jdk8_script_name: install_jdk8.tar
+onos_driver: networking-onos.tar
+onos_sfc_driver: networking-sfc.tar
+repository: repository.tar
+onos_boot_features: config,standard,region,package,kar,ssh,management,webconsole,onos-api,onos-core,onos-incubator,onos-cli,onos-rest,onos-gui,onos-openflow-base, onos-openflow, onos-ovsdatabase, onos-ovsdb-base, onos-drivers-ovsdb, onos-ovsdb-provider-host, onos-app-vtn-onosfw
+
+