Skip to content
Snippets Groups Projects
Commit b401a902 authored by Sam Yaple's avatar Sam Yaple
Browse files

Add linuxbridge as option to ansible

Allows the user to configure neutron_plugin_agent value for Ansible.
Current allowed values are openvswitch and linuxbridge.

Implements: blueprint ansible-neutron-linuxbridge

Change-Id: I0572464a5459d2f9da09b6da22db16e240511f99
parent 38418bef
No related branches found
No related tags found
No related merge requests found
Showing
with 102 additions and 37 deletions
...@@ -37,6 +37,11 @@ docker_neutron_openvswitch_agent_image: "{{ docker_neutron_registry }}{{ docker_ ...@@ -37,6 +37,11 @@ docker_neutron_openvswitch_agent_image: "{{ docker_neutron_registry }}{{ docker_
docker_neutron_openvswitch_agent_tag: "{{ openstack_release }}" docker_neutron_openvswitch_agent_tag: "{{ openstack_release }}"
docker_neutron_openvswitch_agent_image_full: "{{ docker_neutron_openvswitch_agent_image }}:{{ docker_neutron_openvswitch_agent_tag }}" docker_neutron_openvswitch_agent_image_full: "{{ docker_neutron_openvswitch_agent_image }}:{{ docker_neutron_openvswitch_agent_tag }}"
kolla_neutron_linuxbridge_agent_container_name: "neutron-linuxbridge-agent"
docker_neutron_linuxbridge_agent_image: "{{ docker_neutron_registry }}{{ docker_neutron_namespace }}/{{ kolla_neutron_base_distro }}-{{ kolla_neutron_install_type }}-{{ kolla_neutron_linuxbridge_agent_container_name }}"
docker_neutron_linuxbridge_agent_tag: "{{ openstack_release }}"
docker_neutron_linuxbridge_agent_image_full: "{{ docker_neutron_linuxbridge_agent_image }}:{{ docker_neutron_linuxbridge_agent_tag }}"
kolla_openvswitch_db_container_name: "ovs-db-server" kolla_openvswitch_db_container_name: "ovs-db-server"
docker_openvswitch_db_image: "{{ docker_neutron_registry }}{{ docker_neutron_namespace }}/{{ kolla_neutron_base_distro }}-{{ kolla_neutron_install_type }}-{{ kolla_openvswitch_db_container_name }}" docker_openvswitch_db_image: "{{ docker_neutron_registry }}{{ docker_neutron_namespace }}/{{ kolla_neutron_base_distro }}-{{ kolla_neutron_install_type }}-{{ kolla_openvswitch_db_container_name }}"
docker_openvswitch_db_tag: "{{ openstack_release }}" docker_openvswitch_db_tag: "{{ openstack_release }}"
......
...@@ -63,6 +63,12 @@ ...@@ -63,6 +63,12 @@
config_dest: "{{ node_config_directory }}/{{ service_name }}/dhcp_agent.ini" config_dest: "{{ node_config_directory }}/{{ service_name }}/dhcp_agent.ini"
when: inventory_hostname in groups['neutron-agents'] when: inventory_hostname in groups['neutron-agents']
- name: Copying over config(s)
template:
src: "dnsmasq.conf.j2"
dest: "{{ node_config_directory }}/neutron-agents/dnsmasq.conf"
when: inventory_hostname in groups['neutron-agents']
- include: ../../config.yml - include: ../../config.yml
vars: vars:
service_name: "neutron-agents" service_name: "neutron-agents"
...@@ -101,7 +107,7 @@ ...@@ -101,7 +107,7 @@
- include: ../../config.yml - include: ../../config.yml
vars: vars:
service_name: "neutron-openvswitch-agent" service_name: "neutron-{{ neutron_plugin_agent }}-agent"
config_source: config_source:
- "roles/{{ project_name }}/templates/neutron.conf.j2" - "roles/{{ project_name }}/templates/neutron.conf.j2"
- "/etc/kolla/config/global.conf" - "/etc/kolla/config/global.conf"
...@@ -117,12 +123,11 @@ ...@@ -117,12 +123,11 @@
- "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_augment" - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_augment"
- "{{ node_templates_directory }}/{{ service_name }}/{{ service_name }}.conf_augment" - "{{ node_templates_directory }}/{{ service_name }}/{{ service_name }}.conf_augment"
config_dest: "{{ node_config_directory }}/{{ service_name }}/neutron.conf" config_dest: "{{ node_config_directory }}/{{ service_name }}/neutron.conf"
when: inventory_hostname in groups['neutron-agents'] or when: (inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-agents'])
inventory_hostname in groups['compute']
- include: ../../config.yml - include: ../../config.yml
vars: vars:
service_name: "neutron-openvswitch-agent" service_name: "neutron-{{ neutron_plugin_agent }}-agent"
config_source: config_source:
- "roles/{{ project_name }}/templates/ml2_conf.ini.j2" - "roles/{{ project_name }}/templates/ml2_conf.ini.j2"
- "/etc/kolla/config/{{ project_name }}/ml2_conf.ini" - "/etc/kolla/config/{{ project_name }}/ml2_conf.ini"
...@@ -130,5 +135,4 @@ ...@@ -130,5 +135,4 @@
- "{{ node_templates_directory }}/{{ service_name }}/ml2_conf.ini_minimal" - "{{ node_templates_directory }}/{{ service_name }}/ml2_conf.ini_minimal"
- "{{ node_templates_directory }}/{{ service_name }}/ml2_conf.ini_augment" - "{{ node_templates_directory }}/{{ service_name }}/ml2_conf.ini_augment"
config_dest: "{{ node_config_directory }}/{{ service_name }}/ml2_conf.ini" config_dest: "{{ node_config_directory }}/{{ service_name }}/ml2_conf.ini"
when: inventory_hostname in groups['neutron-agents'] or when: (inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-agents'])
inventory_hostname in groups['compute']
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
container_name: "openvswitch_db" container_name: "openvswitch_db"
container_volumes: container_volumes:
- "/run:/run" - "/run:/run"
when: inventory_hostname in groups['compute'] or when: (inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-agents'])
inventory_hostname in groups['neutron-agents'] and neutron_plugin_agent == "openvswitch"
- include: ../../start.yml - include: ../../start.yml
vars: vars:
...@@ -20,13 +20,25 @@ ...@@ -20,13 +20,25 @@
container_volumes: container_volumes:
- "/run:/run" - "/run:/run"
- "/lib/modules:/lib/modules:ro" - "/lib/modules:/lib/modules:ro"
when: inventory_hostname in groups['compute'] or when: (inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-agents'])
inventory_hostname in groups['neutron-agents'] and neutron_plugin_agent == "openvswitch"
- name: Ensuring OVS bridge is properly setup - name: Ensuring OVS bridge is properly setup
command: docker exec openvswitch_vswitchd /opt/kolla/ovs_ensure_configured.sh {{ neutron_bridge_name }} {{ neutron_interface }} command: docker exec openvswitch_vswitchd /opt/kolla/ovs_ensure_configured.sh {{ neutron_bridge_name }} {{ neutron_external_interface }}
register: status register: status
changed_when: status.stdout.find('changed') != -1 changed_when: status.stdout.find('changed') != -1
when: (inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-agents'])
and neutron_plugin_agent == "openvswitch"
- include: ../../start.yml
vars:
container_environment:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
container_image: "{{ docker_neutron_server_image_full }}"
container_name: "neutron_server"
container_volumes:
- "{{ node_config_directory }}/neutron-server/:/opt/kolla/neutron-server/:ro"
when: inventory_hostname in groups['neutron-server']
- include: ../../start.yml - include: ../../start.yml
vars: vars:
...@@ -39,27 +51,34 @@ ...@@ -39,27 +51,34 @@
- "/run:/run" - "/run:/run"
- "/lib/modules:/lib/modules:ro" - "/lib/modules:/lib/modules:ro"
- "{{ node_config_directory }}/neutron-openvswitch-agent/:/opt/kolla/neutron-openvswitch-agent/:ro" - "{{ node_config_directory }}/neutron-openvswitch-agent/:/opt/kolla/neutron-openvswitch-agent/:ro"
when: inventory_hostname in groups['compute'] or when: (inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-agents'])
inventory_hostname in groups['neutron-agents'] and neutron_plugin_agent == "openvswitch"
- include: ../../start.yml - include: ../../start.yml
vars: vars:
container_environment: container_environment:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
container_image: "{{ docker_neutron_agents_image_full }}" NEUTRON_BRIDGE: "br-ex"
container_name: "neutron_agents" NEUTRON_INTERFACE: "{{ neutron_external_interface }}"
container_image: "{{ docker_neutron_linuxbridge_agent_image_full }}"
container_name: "neutron_linuxbridge_agent"
container_privileged: "True" container_privileged: "True"
container_volumes: container_volumes:
- "/run:/run" - "/run:/run"
- "{{ node_config_directory }}/neutron-agents/:/opt/kolla/neutron-agents/:ro" - "/lib/modules:/lib/modules:ro"
when: inventory_hostname in groups['neutron-agents'] - "{{ node_config_directory }}/neutron-linuxbridge-agent/:/opt/kolla/neutron-linuxbridge-agent/:ro"
when: (inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-agents'])
and neutron_plugin_agent == "linuxbridge"
- include: ../../start.yml - include: ../../start.yml
vars: vars:
container_environment: container_environment:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
container_image: "{{ docker_neutron_server_image_full }}" container_image: "{{ docker_neutron_agents_image_full }}"
container_name: "neutron_server" container_name: "neutron_agents"
container_privileged: "True"
container_volumes: container_volumes:
- "{{ node_config_directory }}/neutron-server/:/opt/kolla/neutron-server/:ro" - "/run:/run"
when: inventory_hostname in groups['neutron-server'] - "{{ node_config_directory }}/neutron-agents/:/opt/kolla/neutron-agents/:ro"
when: inventory_hostname in groups['neutron-agents']
# dhcp_agent.ini
[DEFAULT] [DEFAULT]
# DHCP Agent dnsmasq_config_file = /etc/neutron/dnsmasq.conf
#dnsmasq_config_file = /etc/neutron/dnsmasq.conf
dhcp_delete_namespaces = true dhcp_delete_namespaces = true
dhcp-option-force=26,1450
log-facility=/var/log/neutron/dnsmasq.log
# l3_agent.ini
[DEFAULT] [DEFAULT]
# L3 Agent
router_delete_namespaces = true router_delete_namespaces = true
#router_distributed = true
enable_metadata_proxy = true enable_metadata_proxy = true
agent_mode = legacy agent_mode = legacy
external_network_bridge = br-ex external_network_bridge =
#ha_vrrp_auth_password = c0b4e8f922a7b03d1def93b516da81d8103c83c2
# metadata_agent.ini
[DEFAULT] [DEFAULT]
nova_metadata_ip = {{ kolla_internal_address }} nova_metadata_ip = {{ kolla_internal_address }}
metadata_proxy_shared_secret = {{ metadata_secret }} metadata_proxy_shared_secret = {{ metadata_secret }}
......
# TODO(SamYaple): Make entire file more configurable configurable # ml2_conf.ini
[ml2] [ml2]
# Changing type_drivers after bootstrap can lead to database inconsistencies # Changing type_drivers after bootstrap can lead to database inconsistencies
type_drivers = flat,vlan,vxlan type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan tenant_network_types = vxlan
{% if neutron_plugin_agent == "openvswitch" %}
mechanism_drivers = openvswitch,l2population mechanism_drivers = openvswitch,l2population
{% elif neutron_plugin_agent == "linuxbridge" %}
mechanism_drivers = linuxbridge,l2population
{% endif %}
[ml2_type_vlan] [ml2_type_vlan]
#network_vlan_ranges = external:1000:1999 #network_vlan_ranges = external:1000:1999
...@@ -20,7 +24,11 @@ vni_ranges = 1:1000 ...@@ -20,7 +24,11 @@ vni_ranges = 1:1000
vxlan_group = 239.1.1.1 vxlan_group = 239.1.1.1
[securitygroup] [securitygroup]
{% if neutron_plugin_agent == "openvswitch" %}
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
{% elif neutron_plugin_agent == "linuxbridge" %}
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
{% endif %}
enable_ipset = true enable_ipset = true
enable_security_group = true enable_security_group = true
...@@ -28,8 +36,15 @@ enable_security_group = true ...@@ -28,8 +36,15 @@ enable_security_group = true
tunnel_types = vxlan tunnel_types = vxlan
l2_population = true l2_population = true
arp_responder = true arp_responder = true
#enable_distributed_routing = true
{% if neutron_plugin_agent == "openvswitch" %}
[ovs] [ovs]
local_ip = {{ hostvars[inventory_hostname]['ansible_' + tunnel_interface]['ipv4']['address'] }}
bridge_mappings = physnet1:{{ neutron_bridge_name }} bridge_mappings = physnet1:{{ neutron_bridge_name }}
{% elif neutron_plugin_agent == "linuxbridge" %}
[linux_bridge]
physical_interface_mappings = physnet1:{{ neutron_external_interface }}
[vxlan]
l2_population = true
{% endif %}
local_ip = {{ hostvars[inventory_hostname]['ansible_' + tunnel_interface]['ipv4']['address'] }}
# neutron.conf
[DEFAULT] [DEFAULT]
verbose = true verbose = true
debug = true debug = true
...@@ -9,7 +10,11 @@ api_paste_config = /usr/share/neutron/api-paste.ini ...@@ -9,7 +10,11 @@ api_paste_config = /usr/share/neutron/api-paste.ini
notification_driver = neutron.openstack.common.notifier.rpc_notifier notification_driver = neutron.openstack.common.notifier.rpc_notifier
{% if neutron_plugin_agent == "openvswitch" %}
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
{% elif neutron_plugin_agent == "linuxbridge" %}
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
{% endif %}
allow_overlapping_ips = true allow_overlapping_ips = true
core_plugin = ml2 core_plugin = ml2
......
...@@ -15,7 +15,12 @@ virt_type = kvm ...@@ -15,7 +15,12 @@ virt_type = kvm
security_group_api = neutron security_group_api = neutron
network_api_class = nova.network.neutronv2.api.API network_api_class = nova.network.neutronv2.api.API
firewall_driver = nova.virt.firewall.NoopFirewallDriver firewall_driver = nova.virt.firewall.NoopFirewallDriver
{% if neutron_plugin_agent == "openvswitch" %}
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
{% elif neutron_plugin_agent == "linuxbridge" %}
linuxnet_interface_driver = nova.network.linux_net.BridgeInterfaceDriver
{% endif %}
compute_driver = libvirt.LibvirtDriver compute_driver = libvirt.LibvirtDriver
allow_resize_to_same_host = true allow_resize_to_same_host = true
...@@ -67,5 +72,5 @@ username = nova ...@@ -67,5 +72,5 @@ username = nova
password = {{ nova_keystone_password }} password = {{ nova_keystone_password }}
[libvirt] [libvirt]
connection_type = libivrt connection_type = libvirt
inject_partition = -2 inject_partition = -2
...@@ -8,3 +8,13 @@ if [[ -f "$SOURCE" ]]; then ...@@ -8,3 +8,13 @@ if [[ -f "$SOURCE" ]]; then
chown ${OWNER}: $TARGET chown ${OWNER}: $TARGET
chmod 0644 $TARGET chmod 0644 $TARGET
fi fi
SOURCE="/opt/kolla/neutron-linuxbridge-agent/ml2_conf.ini"
TARGET="/etc/neutron/plugins/ml2/ml2_conf.ini"
OWNER="neutron"
if [[ -f "$SOURCE" ]]; then
cp $SOURCE $TARGET
chown ${OWNER}: $TARGET
chmod 0644 $TARGET
fi
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
set -o errexit set -o errexit
CMD="/usr/bin/neutron-linuxbridge-agent" CMD="/usr/bin/neutron-linuxbridge-agent"
ARGS="--config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-dir /etc/neutron" ARGS="--config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini"
# Loading common functions. # Loading common functions.
source /opt/kolla/kolla-common.sh source /opt/kolla/kolla-common.sh
......
...@@ -11,7 +11,4 @@ source /opt/kolla/config-sudoers.sh ...@@ -11,7 +11,4 @@ source /opt/kolla/config-sudoers.sh
# Config-internal script exec out of this function, it does not return here. # Config-internal script exec out of this function, it does not return here.
set_configs set_configs
# Set !requiretty
source /opt/kolla/config-sudoers.sh
exec $CMD $ARGS exec $CMD $ARGS
...@@ -54,13 +54,17 @@ docker_restart_policy_retry: "10" ...@@ -54,13 +54,17 @@ docker_restart_policy_retry: "10"
#################### ####################
# The interface to use for various services types # The interface to use for various services types
network_interface: "eth0" network_interface: "eth0"
neutron_interface: "eth1" neutron_external_interface: "eth1"
# These can be adjusted for even more customization # These can be adjusted for even more customization
api_interface: "{{ network_interface }}" api_interface: "{{ network_interface }}"
storage_interface: "{{ network_interface }}" storage_interface: "{{ network_interface }}"
tunnel_interface: "{{ network_interface }}" tunnel_interface: "{{ network_interface }}"
# Valid options are [ openvswitch, linuxbridge ]
neutron_plugin_agent: "openvswitch"
#################### ####################
# Openstack options # Openstack options
#################### ####################
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment