############################################################################## # 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: Install Crudini # apt: name={{ item }} state=present # with_items: # - crudini - name: install compute packages action: "{{ ansible_pkg_mgr }} name={{ item }} state=present" with_items: compute_packages | union(compute_packages_noarch) - name: remove neutron-openvswitch-agent service daemon shell: sed -i '/{{ service_ovs_agent_name }}/d' /opt/service ; - name: shut down and disable Neutron's openvswitch agent services service: name={{ service_ovs_agent_name }} state=stopped enabled=no - name: remove Neutron's openvswitch agent services shell: > update-rc.d -f {{ service_ovs_agent_name }} remove; mv /etc/init.d/{{ service_ovs_agent_name }} /home/{{ service_ovs_agent_name }}; mv /etc/init/{{ service_ovs_agent_name }}.conf /home/{{ service_ovs_agent_name }}.conf; when: ansible_os_family == "Debian" - name: Stop the Open vSwitch service and clear existing OVSDB shell: > service {{ service_ovs_name }} stop ; rm -rf /var/log/openvswitch/* ; rm -rf /etc/openvswitch/conf.db ; service {{ service_ovs_name }} start ; - name: set opendaylight as the manager command: su -s /bin/sh -c "ovs-vsctl set-manager tcp:{{ internal_vip.ip }}:6640;" - name: check br-int shell: ovs-vsctl list-br | grep br-int; while [ $? -ne 0 ]; do sleep 10; ovs-vsctl list-br | grep br-int; done - name: set local ip in openvswitch shell: ovs-vsctl set Open_vSwitch $(ovs-vsctl show | head -n 1) other_config={'local_ip'=' {{ internal_ip }} '}; #' ################################################################## ########### Recover External network for odl l3 ################# ################################################################## - name: check br-ex shell: ovs-vsctl list-br | grep br-ex; while [ $? -ne 0 ]; do sleep 10; ovs-vsctl list-br | grep br-ex; done when: odl_l3_agent == "Enable" - name: add ovs uplink openvswitch_port: bridge=br-ex port={{ item["interface"] }} state=present with_items: "{{ network_cfg['provider_net_mappings'] }}" when: item["type"] == "ovs" and odl_l3_agent == "Enable" - name: wait 10 seconds shell: sleep 10 when: odl_l3_agent == "Enable" - name: set external nic in openvswitch shell: ovs-vsctl set Open_vSwitch $(ovs-vsctl show | head -n 1) other_config:provider_mappings=br-ex:{{ item["interface"] }} with_items: "{{ network_cfg['provider_net_mappings'] }}" when: item["type"] == "ovs" and odl_l3_agent == "Enable" - name: copy recovery script copy: src={{ item }} dest=/opt/setup_networks with_items: - recover_network_odl_l3.py - setup_networks_odl_l3.py when: odl_l3_agent == "Enable" - name: recover external script shell: python /opt/setup_networks/recover_network_odl_l3.py when: odl_l3_agent == "Enable" - name: update keepalived info template: src=keepalived.conf dest=/etc/keepalived/keepalived.conf when: inventory_hostname in groups['odl'] and odl_l3_agent == "Enable" - name: modify net-init shell: sed -i 's/setup_networks.py/setup_networks_odl_l3.py/g' /etc/init.d/net_init when: odl_l3_agent == "Enable" ################################################################## ########### Recover External network for odl l2 ################# ################################################################## - name: add ovs bridge openvswitch_bridge: bridge={{ item["name"] }} state=present with_items: "{{ network_cfg['provider_net_mappings'] }}" when: item["type"] == "ovs" and odl_l3_agent == "Disable" - name: add ovs uplink openvswitch_port: bridge={{ item["name"] }} port={{ item["interface"] }} state=present with_items: "{{ network_cfg['provider_net_mappings'] }}" when: item["type"] == "ovs" and odl_l3_agent == "Disable" - name: copy recovery script copy: src={{ item }} dest=/opt/setup_networks with_items: - recover_network.py when: odl_l3_agent == "Disable" - name: recover external script shell: python /opt/setup_networks/recover_network.py when: odl_l3_agent == "Disable" ################################################################## - name: restart keepalived to recover external IP shell: service keepalived restart when: inventory_hostname in groups['odl'] ignore_errors: True ################################################################## ################################################################## ################################################################## - name: configure opendaylight -> ml2 shell: > crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers opendaylight; crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vxlan; crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ovs enable_tunneling True; #- name: Adjust Service Daemon # shell: > # sed -i '/neutron-plugin-openvswitch-agent/d' /opt/service ; # echo opendaylight >> /opt/service ; - name: copy ml2 configuration script template: src: ml2_conf.sh dest: "/opt/ml2_conf.sh" mode: 0777 - name: execute ml2 configuration script command: su -s /bin/sh -c "/opt/ml2_conf.sh;"