From 5d28b35794d9bdd8def6dfdf0224420daaa05f11 Mon Sep 17 00:00:00 2001 From: CNlukai Date: Mon, 11 Jan 2016 16:08:46 +0800 Subject: [PATCH] ONOSFW-157 Add script of installer integration onos Change-Id: I5ef70148d51fef5a9b3113fc5a69df46429a968d Signed-off-by: CNlukai --- .../installer/onos_cluster/files/install_jdk8.tar | Bin 0 -> 4608 bytes .../onos_cluster/files/networking-onos.tar | Bin 0 -> 153600 bytes .../installer/onos_cluster/handlers/main.yml | 3 + .../scripts/installer/onos_cluster/tasks/main.yml | 44 +++++++ .../onos_cluster/tasks/onos_controller.yml | 146 +++++++++++++++++++++ .../installer/onos_cluster/tasks/openvswitch.yml | 83 ++++++++++++ .../installer/onos_cluster/templates/cluster.json | 10 ++ .../installer/onos_cluster/templates/ml2_conf.sh | 7 + .../installer/onos_cluster/templates/tablets.json | 63 +++++++++ .../scripts/installer/onos_cluster/vars/Debian.yml | 6 + .../scripts/installer/onos_cluster/vars/RedHat.yml | 6 + .../scripts/installer/onos_cluster/vars/main.yml | 6 + 12 files changed, 374 insertions(+) create mode 100755 framework/scripts/installer/onos_cluster/files/install_jdk8.tar create mode 100644 framework/scripts/installer/onos_cluster/files/networking-onos.tar create mode 100755 framework/scripts/installer/onos_cluster/handlers/main.yml create mode 100755 framework/scripts/installer/onos_cluster/tasks/main.yml create mode 100755 framework/scripts/installer/onos_cluster/tasks/onos_controller.yml create mode 100755 framework/scripts/installer/onos_cluster/tasks/openvswitch.yml create mode 100755 framework/scripts/installer/onos_cluster/templates/cluster.json create mode 100755 framework/scripts/installer/onos_cluster/templates/ml2_conf.sh create mode 100755 framework/scripts/installer/onos_cluster/templates/tablets.json create mode 100755 framework/scripts/installer/onos_cluster/vars/Debian.yml create mode 100755 framework/scripts/installer/onos_cluster/vars/RedHat.yml create mode 100755 framework/scripts/installer/onos_cluster/vars/main.yml diff --git a/framework/scripts/installer/onos_cluster/files/install_jdk8.tar b/framework/scripts/installer/onos_cluster/files/install_jdk8.tar new file mode 100755 index 0000000000000000000000000000000000000000..faaaeb393d65b34479915b1a80e3881519d454e3 GIT binary patch literal 4608 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 + 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-plugin-openvswitch-agent state=stopped + when: groups['onos']|length !=0 + ignore_errors: True + +- name: remove neutron-l3-agent auto start + shell: > + update-rc.d neutron-l3-agent remove; + sed -i /neutron-l3-agent/d /opt/service + when: inventory_hostname in groups['onos'] + ignore_errors: True + +- name: shut down and disable Neutron's l3 agent services + service: name=neutron-l3-agent state=stopped + when: inventory_hostname in groups['onos'] + ignore_errors: True + +- 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 ; + 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 + include: openvswitch.yml + when: groups['onos']|length !=0 +# when: groups['onos']|length !=0 and inventory_hostname not in groups['onos'] + diff --git a/framework/scripts/installer/onos_cluster/tasks/onos_controller.yml b/framework/scripts/installer/onos_cluster/tasks/onos_controller.yml new file mode 100755 index 00000000..0606fad9 --- /dev/null +++ b/framework/scripts/installer/onos_cluster/tasks/onos_controller.yml @@ -0,0 +1,146 @@ +--- +- name: upload onos driver package + unarchive: src=networking-onos.tar dest=/opt/ + +- name: install onos driver + command: su -s /bin/sh -c "/opt/networking-onos/install_driver.sh" + +- name: install onos required packages + action: "{{ ansible_pkg_mgr }} name={{ item }} state=present" + with_items: packages + +- name: get image http server + shell: awk -F'=' '/compass_server/ {print $2}' /etc/compass.conf + register: http_server + +- 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: upload install_jdk8 scripts + unarchive: src=install_jdk8.tar dest=/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" + +- name: download jar repository + get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/onos/repository.tar" 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/; +# notify: +# - restart onos service + +- 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: create cluster json +# template: +# src: cluster.json +# dest: "{{ onos_home }}/config/cluster.json" +# notify: +# - restart onos service + +#- name: create tablets json +# template: +# src: tablets.json +# dest: "{{ onos_home }}/config/tablets.json" +# notify: +# - restart onos service + +- name: wait for config time + shell: "sleep 10" + +- name: start onos service + service: name=onos state=started enabled=yes + +- name: wait for restart time + shell: "sleep 60" + +- name: start onos service + service: name=onos state=restarted enabled=yes + +- name: wait for onos start time + shell: "sleep 60" + +- name: start onos service + service: name=onos state=restarted enabled=yes + +- name: wait for onos start time + shell: "sleep 100" + +- name: add onos auto start + shell: > + echo "onos">>/opt/service + +########################################################################################################## +################################ ONOS connect with OpenStack ################################ +########################################################################################################## +#- name: Run OpenVSwitch Script +# include: openvswitch.yml + +- name: Configure Neutron1 + shell: > + crudini --set /etc/neutron/neutron.conf DEFAULT service_plugins 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; + +- name: Restart neutron-server + service: name=neutron-server state=restarted diff --git a/framework/scripts/installer/onos_cluster/tasks/openvswitch.yml b/framework/scripts/installer/onos_cluster/tasks/openvswitch.yml new file mode 100755 index 00000000..f8ed551f --- /dev/null +++ b/framework/scripts/installer/onos_cluster/tasks/openvswitch.yml @@ -0,0 +1,83 @@ +--- +#- name: remove neutron-plugin-openvswitch-agent auto start +# shell: > +# update-rc.d neutron-plugin-openvswitch-agent remove; +# sed -i /neutron-plugin-openvswitch-agent/d /opt/service + +#- name: shut down and disable Neutron's agent services +# service: name=neutron-plugin-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: wait for onos start time +# shell: "sleep 200" + +- name: add ovsdatabase feature + command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-ovsdatabase'"; + when: inventory_hostname == groups['onos'][0] + +- name: add openflow-base feature + command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-openflow-base'"; + when: inventory_hostname == groups['onos'][0] + +- name: add openflow feature + command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-openflow'"; + when: inventory_hostname == groups['onos'][0] + +- name: add vtn feature + command: su -s /bin/sh -c "/opt/onos/bin/onos 'feature:install onos-app-vtn-onosfw'"; + when: inventory_hostname == groups['onos'][0] + + +- name: set public eth card start + command: su -s /bin/sh -c "/opt/onos/bin/onos 'externalportname-set -n eth2'" + when: inventory_hostname == groups['onos'][0] + +- 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 --name ext-subnet {{ public_net_info.floating_ip_cidr }}; + 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 == groups['onos'][0] + +- name: delete default gateway + shell: > + route delete default; + when: inventory_hostname not in groups['onos'] + ignore_errors: True diff --git a/framework/scripts/installer/onos_cluster/templates/cluster.json b/framework/scripts/installer/onos_cluster/templates/cluster.json new file mode 100755 index 00000000..5982c434 --- /dev/null +++ b/framework/scripts/installer/onos_cluster/templates/cluster.json @@ -0,0 +1,10 @@ +{ "ipPrefix": "{{ ip_settings[groups['onos'][0]]['mgmt']['cidr'] }}", + "nodes":[ +{% for host in groups['onos'] %} + {% if loop.last %} + { "id": "{{ ip_settings[host]['mgmt']['ip'] }}", "ip": "{{ ip_settings[host]['mgmt']['ip'] }}", "tcpPort": 9876 } + {% else %} + { "id": "{{ ip_settings[host]['mgmt']['ip'] }}", "ip": "{{ ip_settings[host]['mgmt']['ip'] }}", "tcpPort": 9876 }, + {% endif %} +{% endfor %} +]} diff --git a/framework/scripts/installer/onos_cluster/templates/ml2_conf.sh b/framework/scripts/installer/onos_cluster/templates/ml2_conf.sh new file mode 100755 index 00000000..a9e61acb --- /dev/null +++ b/framework/scripts/installer/onos_cluster/templates/ml2_conf.sh @@ -0,0 +1,7 @@ +cat <> /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/framework/scripts/installer/onos_cluster/templates/tablets.json b/framework/scripts/installer/onos_cluster/templates/tablets.json new file mode 100755 index 00000000..f71be71f --- /dev/null +++ b/framework/scripts/installer/onos_cluster/templates/tablets.json @@ -0,0 +1,63 @@ +{ + "nodes": [ +{% for host in groups['onos'] %} + {% if loop.last %} + { + "ip": "{{ ip_settings[host]['mgmt']['ip'] }}", + "id": "{{ ip_settings[host]['mgmt']['ip'] }}", + "tcpPort": 9876 + } + {% else %} + { + "ip": "{{ ip_settings[host]['mgmt']['ip'] }}", + "id": "{{ ip_settings[host]['mgmt']['ip'] }}", + "tcpPort": 9876 + }, + {% endif %} +{% endfor %} + ], + "partitions": { + {% set key = 1 %} + {% for host in groups['onos'] %} + {% if loop.last %} + "p{{ key }}":[ + {% for host in groups['onos'] %} + {% if loop.last %} + { + "ip": "{{ ip_settings[host]['mgmt']['ip'] }}", + "id": "{{ ip_settings[host]['mgmt']['ip'] }}", + "tcpPort": 9876 + } + {% else %} + { + "ip": "{{ ip_settings[host]['mgmt']['ip'] }}", + "id": "{{ ip_settings[host]['mgmt']['ip'] }}", + "tcpPort": 9876 + }, + {% endif %} + {% endfor %} + ] + {% set key = key + 1 %} + {% else %} + "p{{ key }}":[ + {% for host in groups['onos'] %} + {% if loop.last %} + { + "ip": "{{ ip_settings[host]['mgmt']['ip'] }}", + "id": "{{ ip_settings[host]['mgmt']['ip'] }}", + "tcpPort": 9876 + } + {% else %} + { + "ip": "{{ ip_settings[host]['mgmt']['ip'] }}", + "id": "{{ ip_settings[host]['mgmt']['ip'] }}", + "tcpPort": 9876 + }, + {% endif %} + {% endfor %} + ], + {% set key = key + 1 %} + {% endif %} + {% endfor %} +} +} diff --git a/framework/scripts/installer/onos_cluster/vars/Debian.yml b/framework/scripts/installer/onos_cluster/vars/Debian.yml new file mode 100755 index 00000000..70ce4ef2 --- /dev/null +++ b/framework/scripts/installer/onos_cluster/vars/Debian.yml @@ -0,0 +1,6 @@ +--- +packages: + - software-properties-common + - crudini + +services: [] diff --git a/framework/scripts/installer/onos_cluster/vars/RedHat.yml b/framework/scripts/installer/onos_cluster/vars/RedHat.yml new file mode 100755 index 00000000..70ce4ef2 --- /dev/null +++ b/framework/scripts/installer/onos_cluster/vars/RedHat.yml @@ -0,0 +1,6 @@ +--- +packages: + - software-properties-common + - crudini + +services: [] diff --git a/framework/scripts/installer/onos_cluster/vars/main.yml b/framework/scripts/installer/onos_cluster/vars/main.yml new file mode 100755 index 00000000..f083a89c --- /dev/null +++ b/framework/scripts/installer/onos_cluster/vars/main.yml @@ -0,0 +1,6 @@ +onos_pkg_url: http://downloads.onosproject.org/release/onos-1.3.0.tar.gz +onos_pkg_name: onos-1.3.0.tar.gz +onos_home: /opt/onos/ +karaf_dist: apache-karaf-3.0.3 +jdk8_pkg_name: jdk-8u51-linux-x64.tar.gz +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-app-vtn-onosfw -- 2.16.6