############################################################################ # 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: unarchive onos driver package command: su -s /bin/sh -c "tar zxf /opt/networking-onos.tar.gz -C /opt/" - name: upgrade stevedore pip: name=stevedore state=latest - name: install onos driver command: su -s /bin/sh -c "/opt/networking-onos/install_driver.sh" - name: install networking-sfc pip: name=networking-sfc state=present version=3.0.0 - name: copy driver_configuration script copy: src: driver.sh dest: "/opt/driver.sh" mode: 0777 - name: Configure sfc driver command: su -s /bin/sh -c "/opt/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/java/{{ jdk8_pkg_name }}" dest: /opt/{{ jdk8_pkg_name }} - name: download oracle-jdk8 script file get_url: url: "http://{{ http_server.stdout_lines[0] }}/packages/java/{{ 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; export PATH=$PATH:/usr/lib/jvm/java-8-oracle/db/bin; export PATH=$PATH:/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: copy onos.service copy: src: "{{ onos_service_file.src }}" dest: "{{ onos_service_file.dst }}" mode: 0755 - 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; - name: create karaf config template: src: org.apache.karaf.features.cfg dest: "{{ onos_home }}/{{ karaf_dist }}/etc/org.apache.karaf.features.cfg" owner: onos group: onos mode: 0775 - name: wait for config time shell: "sleep 10" - name: chown onos directory and files shell: > chown -R onos:onos "{{ onos_home }}"; chown onos:onos "{{ onos_service_file.dst }}"; - 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: copy sfc_plugins.conf copy: src: "{{ sfc_plugins.src }}" dest: "{{ sfc_plugins.dst }}" mode: 0755 - name: Configure SFC driver shell: crudini --merge /etc/neutron/neutron.conf < /opt/sfc_plugins.conf - name: delete sfc_plugins.conf shell: rm -rf {{ sfc_plugins.dst }} - name: Configure Neutron1 shell: > 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: configure metadata shell: | crudini --set /etc/neutron/dhcp_agent.ini DEFAULT \ enable_isolated_metadata "True"; - name: force metadata shell: | crudini --set /etc/neutron/dhcp_agent.ini DEFAULT \ force_metadata "True"; - name: configure vsctl for dhcp agent shell: | crudini --set /etc/neutron/dhcp_agent.ini OVS \ ovsdb_interface vsctl; - 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;"; mysql -e "create database neutron character set utf8;"; mysql -e "grant all on neutron.* to 'neutron'@'%' identified by \ '{{ NEUTRON_DBPASS }}';"; 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; when: inventory_hostname == haproxy_hosts.keys()[0] - name: Restart neutron-dhcp-agent service: name=neutron-dhcp-agent state=restarted - name: Restart neutron-server service: name=neutron-server state=restarted