149 lines
5.4 KiB
YAML
Executable File
149 lines
5.4 KiB
YAML
Executable File
##############################################################################
|
|
# 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;"
|