From 98460af04d626907f44ea1b13289769979ed4f7b Mon Sep 17 00:00:00 2001 From: Sam Yaple Date: Tue, 16 Jun 2015 04:56:44 +0000 Subject: Change fat neutron container into thin containers Key difference here is the ip_wrapper.py file. This file and docker 1.7 allow for the network namespaces to be created in the host mount namespace and propogated into the containers. Co-Authored-By: Paul Bourke Change-Id: I73bcd1c97bbaf742af883dbf281a8d76aff8aebf --- .../check-scripts/check-dhcp-agent.sh | 13 ---- .../neutron-agents/check-scripts/check-l3-agent.sh | 13 ---- .../check-scripts/check-linuxbridge-agent.sh | 13 ---- .../check-scripts/check-metadata-agent.sh | 13 ---- .../config-scripts/config-dhcp-agent.sh | 88 ---------------------- .../config-scripts/config-l3-agent.sh | 85 --------------------- .../config-scripts/config-linuxbridge-agent.sh | 29 ------- .../config-scripts/config-metadata-agent.sh | 74 ------------------ .../config-scripts/config-sudoers.sh | 12 --- .../common/neutron/neutron-agents/fwaas_driver.ini | 3 - .../common/neutron/neutron-agents/supervisord.conf | 53 ------------- docker/common/neutron/neutron-dhcp-agent/check.sh | 13 ++++ docker/common/neutron/neutron-dhcp-agent/start.sh | 83 ++++++++++++++++++++ docker/common/neutron/neutron-l3-agent/check.sh | 13 ++++ .../neutron/neutron-l3-agent/fwaas_driver.ini | 3 + docker/common/neutron/neutron-l3-agent/start.sh | 80 ++++++++++++++++++++ .../neutron/neutron-linuxbridge-agent/check.sh | 13 ++++ .../neutron/neutron-linuxbridge-agent/start.sh | 29 +++++++ .../common/neutron/neutron-metadata-agent/check.sh | 13 ++++ .../common/neutron/neutron-metadata-agent/start.sh | 74 ++++++++++++++++++ 20 files changed, 321 insertions(+), 396 deletions(-) delete mode 100755 docker/common/neutron/neutron-agents/check-scripts/check-dhcp-agent.sh delete mode 100755 docker/common/neutron/neutron-agents/check-scripts/check-l3-agent.sh delete mode 100755 docker/common/neutron/neutron-agents/check-scripts/check-linuxbridge-agent.sh delete mode 100755 docker/common/neutron/neutron-agents/check-scripts/check-metadata-agent.sh delete mode 100755 docker/common/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh delete mode 100755 docker/common/neutron/neutron-agents/config-scripts/config-l3-agent.sh delete mode 100755 docker/common/neutron/neutron-agents/config-scripts/config-linuxbridge-agent.sh delete mode 100755 docker/common/neutron/neutron-agents/config-scripts/config-metadata-agent.sh delete mode 100755 docker/common/neutron/neutron-agents/config-scripts/config-sudoers.sh delete mode 100644 docker/common/neutron/neutron-agents/fwaas_driver.ini delete mode 100644 docker/common/neutron/neutron-agents/supervisord.conf create mode 100755 docker/common/neutron/neutron-dhcp-agent/check.sh create mode 100755 docker/common/neutron/neutron-dhcp-agent/start.sh create mode 100755 docker/common/neutron/neutron-l3-agent/check.sh create mode 100644 docker/common/neutron/neutron-l3-agent/fwaas_driver.ini create mode 100755 docker/common/neutron/neutron-l3-agent/start.sh create mode 100755 docker/common/neutron/neutron-linuxbridge-agent/check.sh create mode 100755 docker/common/neutron/neutron-linuxbridge-agent/start.sh create mode 100755 docker/common/neutron/neutron-metadata-agent/check.sh create mode 100755 docker/common/neutron/neutron-metadata-agent/start.sh (limited to 'docker/common') diff --git a/docker/common/neutron/neutron-agents/check-scripts/check-dhcp-agent.sh b/docker/common/neutron/neutron-agents/check-scripts/check-dhcp-agent.sh deleted file mode 100755 index 7dda736ef..000000000 --- a/docker/common/neutron/neutron-agents/check-scripts/check-dhcp-agent.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -RES=0 - -check=$(/usr/bin/neutron agent-list | awk '/ DHCP / {print $9}') -error="ERROR: Neutron DHCP Agent is not alive." - -if [[ $check != ":-)" ]]; then - echo $error >&2 - RES=1 -fi - -exit $RES diff --git a/docker/common/neutron/neutron-agents/check-scripts/check-l3-agent.sh b/docker/common/neutron/neutron-agents/check-scripts/check-l3-agent.sh deleted file mode 100755 index d32c1e272..000000000 --- a/docker/common/neutron/neutron-agents/check-scripts/check-l3-agent.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -RES=0 - -check=$(/usr/bin/neutron agent-list | awk '/ L3 / {print $9}') -error="ERROR: Neutron L3 Agent is not alive." - -if [[ $check != ":-)" ]]; then - echo $error >&2 - RES=1 -fi - -exit $RES diff --git a/docker/common/neutron/neutron-agents/check-scripts/check-linuxbridge-agent.sh b/docker/common/neutron/neutron-agents/check-scripts/check-linuxbridge-agent.sh deleted file mode 100755 index 4485fc1ec..000000000 --- a/docker/common/neutron/neutron-agents/check-scripts/check-linuxbridge-agent.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -RES=0 - -check=$(/usr/bin/neutron agent-list | awk '/ Linux / {print $10}') -error="ERROR: Neutron Linux Bridge agent is not alive." - -if [[ $check != ":-)" ]]; then - echo $error >&2 - RES=1 -fi - -exit $RES diff --git a/docker/common/neutron/neutron-agents/check-scripts/check-metadata-agent.sh b/docker/common/neutron/neutron-agents/check-scripts/check-metadata-agent.sh deleted file mode 100755 index fd1c6812b..000000000 --- a/docker/common/neutron/neutron-agents/check-scripts/check-metadata-agent.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -RES=0 - -check=$(/usr/bin/neutron agent-list | awk '/ Metadata / {print $9}') -error="ERROR: Neutron Metadata Agent is not alive." - -if [[ $check != ":-)" ]]; then - echo $error >&2 - RES=1 -fi - -exit $RES diff --git a/docker/common/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh b/docker/common/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh deleted file mode 100755 index db71678b1..000000000 --- a/docker/common/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash - -set -e - -. /opt/kolla/config-neutron.sh -. /opt/kolla/config-sudoers.sh - -: ${DHCP_DRIVER:=neutron.agent.linux.dhcp.Dnsmasq} -: ${USE_NAMESPACES:=true} -: ${DELETE_NAMESPACES:=true} -: ${DNSMASQ_CONFIG_FILE:=/etc/neutron/dnsmasq/dnsmasq-neutron.conf} -: ${ROOT_HELPER:=sudo neutron-rootwrap /etc/neutron/rootwrap.conf} - -mkdir -p $(dirname $DNSMASQ_CONFIG_FILE) - -check_required_vars VERBOSE_LOGGING DEBUG_LOGGING MECHANISM_DRIVERS \ - DHCP_DRIVER USE_NAMESPACES DELETE_NAMESPACES \ - NEUTRON_LOG_DIR DNSMASQ_CONFIG_FILE \ - -cfg=/etc/neutron/dhcp_agent.ini -neutron_conf=/etc/neutron/neutron.conf - -# Workaround bug in dhclient in cirros images which does not correctly -# handle setting checksums of packets when using hardware with checksum -# offloading. See: -# https://www.rdoproject.org/forum/discussion/567/packstack-allinone-grizzly-cirros-image-cannot-get-a-dhcp-address-when-a-centos-image-can/p1 - -/usr/sbin/iptables -A POSTROUTING -t mangle -p udp --dport bootpc \ - -j CHECKSUM --checksum-fill - -if [[ ${MECHANISM_DRIVERS} =~ linuxbridge ]]; then - interface_driver="neutron.agent.linux.interface.BridgeInterfaceDriver" -elif [[ ${MECHANISM_DRIVERS} == "openvswitch" ]]; then - interface_driver="neutron.agent.linux.interface.OVSInterfaceDriver" -fi - -# Logging -crudini --set $neutron_conf \ - DEFAULT \ - log_file \ - "${NEUTRON_DHCP_AGENT_LOG_FILE}" - -# Configure dhcp_agent.ini -crudini --set $cfg \ - DEFAULT \ - verbose \ - "${VERBOSE_LOGGING}" -crudini --set $cfg \ - DEFAULT \ - debug \ - "${DEBUG_LOGGING}" -crudini --set $cfg \ - DEFAULT \ - interface_driver \ - "$interface_driver" -crudini --set $cfg \ - DEFAULT \ - dhcp_driver \ - "${DHCP_DRIVER}" -crudini --set $cfg \ - DEFAULT \ - use_namespaces \ - "${USE_NAMESPACES}" -crudini --set $cfg \ - DEFAULT \ - delete_namespaces \ - "${DELETE_NAMESPACES}" -crudini --set $cfg \ - DEFAULT \ - dnsmasq_config_file \ - "${DNSMASQ_CONFIG_FILE}" -crudini --set $cfg \ - DEFAULT \ - root_helper \ - "${ROOT_HELPER}" - -cat > ${DNSMASQ_CONFIG_FILE} <&2 + RES=1 +fi + +exit $RES diff --git a/docker/common/neutron/neutron-dhcp-agent/start.sh b/docker/common/neutron/neutron-dhcp-agent/start.sh new file mode 100755 index 000000000..c3056fdb4 --- /dev/null +++ b/docker/common/neutron/neutron-dhcp-agent/start.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +set -e + +. /opt/kolla/config-neutron.sh +. /opt/kolla/config-sudoers.sh + +: ${DHCP_DRIVER:=neutron.agent.linux.dhcp.Dnsmasq} +: ${USE_NAMESPACES:=true} +: ${DELETE_NAMESPACES:=true} +: ${DNSMASQ_CONFIG_FILE:=/etc/neutron/dnsmasq/dnsmasq-neutron.conf} +: ${ROOT_HELPER:=sudo neutron-rootwrap /etc/neutron/rootwrap.conf} + +mkdir -p $(dirname $DNSMASQ_CONFIG_FILE) + +check_required_vars VERBOSE_LOGGING DEBUG_LOGGING MECHANISM_DRIVERS \ + DHCP_DRIVER USE_NAMESPACES DELETE_NAMESPACES \ + NEUTRON_LOG_DIR DNSMASQ_CONFIG_FILE \ + +cfg=/etc/neutron/dhcp_agent.ini +neutron_conf=/etc/neutron/neutron.conf + +# Workaround bug in dhclient in cirros images which does not correctly +# handle setting checksums of packets when using hardware with checksum +# offloading. See: +# https://www.rdoproject.org/forum/discussion/567/packstack-allinone-grizzly-cirros-image-cannot-get-a-dhcp-address-when-a-centos-image-can/p1 + +/usr/sbin/iptables -A POSTROUTING -t mangle -p udp --dport bootpc \ + -j CHECKSUM --checksum-fill + +if [[ ${MECHANISM_DRIVERS} =~ linuxbridge ]]; then + interface_driver="neutron.agent.linux.interface.BridgeInterfaceDriver" +elif [[ ${MECHANISM_DRIVERS} == "openvswitch" ]]; then + interface_driver="neutron.agent.linux.interface.OVSInterfaceDriver" +fi + +# Logging +crudini --set $neutron_conf \ + DEFAULT \ + log_file \ + "${NEUTRON_DHCP_AGENT_LOG_FILE}" + +# Configure dhcp_agent.ini +crudini --set $cfg \ + DEFAULT \ + verbose \ + "${VERBOSE_LOGGING}" +crudini --set $cfg \ + DEFAULT \ + debug \ + "${DEBUG_LOGGING}" +crudini --set $cfg \ + DEFAULT \ + interface_driver \ + "$interface_driver" +crudini --set $cfg \ + DEFAULT \ + dhcp_driver \ + "${DHCP_DRIVER}" +crudini --set $cfg \ + DEFAULT \ + use_namespaces \ + "${USE_NAMESPACES}" +crudini --set $cfg \ + DEFAULT \ + delete_namespaces \ + "${DELETE_NAMESPACES}" +crudini --set $cfg \ + DEFAULT \ + dnsmasq_config_file \ + "${DNSMASQ_CONFIG_FILE}" +crudini --set $cfg \ + DEFAULT \ + root_helper \ + "${ROOT_HELPER}" + +cat > ${DNSMASQ_CONFIG_FILE} <&2 + RES=1 +fi + +exit $RES diff --git a/docker/common/neutron/neutron-l3-agent/fwaas_driver.ini b/docker/common/neutron/neutron-l3-agent/fwaas_driver.ini new file mode 100644 index 000000000..41f761abf --- /dev/null +++ b/docker/common/neutron/neutron-l3-agent/fwaas_driver.ini @@ -0,0 +1,3 @@ +[fwaas] +#driver = neutron.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver +#enabled = True diff --git a/docker/common/neutron/neutron-l3-agent/start.sh b/docker/common/neutron/neutron-l3-agent/start.sh new file mode 100755 index 000000000..4780341fb --- /dev/null +++ b/docker/common/neutron/neutron-l3-agent/start.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +set -e + +. /opt/kolla/config-neutron.sh +. /opt/kolla/config-sudoers.sh + +: ${USE_NAMESPACES:=true} + +check_required_vars VERBOSE_LOGGING DEBUG_LOGGING + +cfg=/etc/neutron/l3_agent.ini +neutron_conf=/etc/neutron/neutron.conf + +# Logging +crudini --set $neutron_conf \ + DEFAULT \ + log_file \ + "${NEUTRON_L3_AGENT_LOG_FILE}" + +# Configure l3_agent.ini +crudini --set $cfg \ + DEFAULT \ + verbose \ + "${VERBOSE_LOGGING}" +crudini --set $cfg \ + DEFAULT \ + debug \ + "${DEBUG_LOGGING}" +if [[ "${MECHANISM_DRIVERS}" =~ linuxbridge ]] ; then + crudini --set $cfg \ + DEFAULT \ + interface_driver \ + "neutron.agent.linux.interface.BridgeInterfaceDriver" + crudini --set $cfg \ + DEFAULT \ + gateway_external_network_id \ + "" + crudini --set $cfg \ + DEFAULT \ + external_network_bridge \ + "" +elif [[ "${MECHANISM_DRIVERS}" =~ .*openvswitch* ]] ; then + crudini --set $cfg \ + DEFAULT \ + interface_driver \ + "neutron.agent.linux.interface.OVSInterfaceDriver" + crudini --set $cfg \ + DEFAULT \ + gateway_external_network_id \ + "${NEUTRON_FLAT_NETWORK_BRIDGE}" + crudini --set $cfg \ + DEFAULT \ + external_network_bridge \ + "${NEUTRON_FLAT_NETWORK_BRIDGE}" +fi + +crudini --set $cfg \ + DEFAULT \ + use_namespaces \ + "${USE_NAMESPACES}" + +if [ "${USE_NAMESPACES}" == "false" ] ; then + source /openrc + # Create router if it does not exist + /usr/bin/neutron router-list | grep admin-router || /usr/bin/neutron router-create admin-router + # Set router-id + crudini --set $cfg \ + DEFAULT \ + router_id \ + "$(/usr/bin/neutron router-list | awk '/ admin-router / {print $2}')" +elif [ "${USE_NAMESPACES}" == "true" ] ; then + crudini --set $cfg \ + DEFAULT \ + router_delete_namespaces \ + "true" +fi + +# Start L3 Agent +exec /usr/bin/neutron-l3-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/l3_agent.ini --config-file /etc/neutron/fwaas_driver.ini --config-dir /etc/neutron diff --git a/docker/common/neutron/neutron-linuxbridge-agent/check.sh b/docker/common/neutron/neutron-linuxbridge-agent/check.sh new file mode 100755 index 000000000..4485fc1ec --- /dev/null +++ b/docker/common/neutron/neutron-linuxbridge-agent/check.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +RES=0 + +check=$(/usr/bin/neutron agent-list | awk '/ Linux / {print $10}') +error="ERROR: Neutron Linux Bridge agent is not alive." + +if [[ $check != ":-)" ]]; then + echo $error >&2 + RES=1 +fi + +exit $RES diff --git a/docker/common/neutron/neutron-linuxbridge-agent/start.sh b/docker/common/neutron/neutron-linuxbridge-agent/start.sh new file mode 100755 index 000000000..bd8f90194 --- /dev/null +++ b/docker/common/neutron/neutron-linuxbridge-agent/start.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -e + +. /opt/kolla/config-neutron.sh +. /opt/kolla/config-sudoers.sh + +: ${NEUTRON_FLAT_NETWORK_NAME:=physnet1} +: ${NEUTRON_FLAT_NETWORK_INTERFACE:=eth1} + +check_required_vars PUBLIC_IP NEUTRON_FLAT_NETWORK_NAME \ + NEUTRON_FLAT_NETWORK_INTERFACE + +cfg=/etc/neutron/plugins/ml2/ml2_conf.ini + +# Configure ml2_conf.ini +if [[ ${TYPE_DRIVERS} =~ vxlan ]]; then + crudini --set $cfg \ + vxlan \ + local_ip \ + "${PUBLIC_IP}" +fi + +crudini --set $cfg \ + linux_bridge \ + physical_interface_mappings \ + "${NEUTRON_FLAT_NETWORK_NAME}:${NEUTRON_FLAT_NETWORK_INTERFACE}" + +exec /usr/bin/neutron-linuxbridge-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-dir /etc/neutron diff --git a/docker/common/neutron/neutron-metadata-agent/check.sh b/docker/common/neutron/neutron-metadata-agent/check.sh new file mode 100755 index 000000000..fd1c6812b --- /dev/null +++ b/docker/common/neutron/neutron-metadata-agent/check.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +RES=0 + +check=$(/usr/bin/neutron agent-list | awk '/ Metadata / {print $9}') +error="ERROR: Neutron Metadata Agent is not alive." + +if [[ $check != ":-)" ]]; then + echo $error >&2 + RES=1 +fi + +exit $RES diff --git a/docker/common/neutron/neutron-metadata-agent/start.sh b/docker/common/neutron/neutron-metadata-agent/start.sh new file mode 100755 index 000000000..d1eef341c --- /dev/null +++ b/docker/common/neutron/neutron-metadata-agent/start.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +set -e + +. /opt/kolla/config-neutron.sh +. /opt/kolla/config-sudoers.sh + +: ${KEYSTONE_REGION:=RegionOne} +: ${ENDPOINT_TYPE:=adminURL} +: ${NEUTRON_SHARED_SECRET:=sharedsecret} + +check_required_vars VERBOSE_LOGGING DEBUG_LOGGING KEYSTONE_AUTH_PROTOCOL \ + KEYSTONE_PUBLIC_SERVICE_HOST ADMIN_TENANT_NAME \ + NEUTRON_KEYSTONE_USER NEUTRON_KEYSTONE_PASSWORD \ + NEUTRON_SHARED_SECRET NOVA_METADATA_API_SERVICE_HOST \ + NOVA_METADATA_API_SERVICE_PORT + +cfg=/etc/neutron/metadata_agent.ini +neutron_conf=/etc/neutron/neutron.conf + +# Logging +crudini --set $neutron_conf \ + DEFAULT \ + log_file \ + "${NEUTRON_METADATA_AGENT_LOG_FILE}" + +# Configure metadata_agent.ini +crudini --set $cfg \ + DEFAULT \ + verbose \ + "${VERBOSE_LOGGING}" +crudini --set $cfg \ + DEFAULT \ + debug \ + "${DEBUG_LOGGING}" +crudini --set $cfg \ + DEFAULT \ + auth_region \ + "${KEYSTONE_REGION}" +crudini --set $cfg \ + DEFAULT \ + endpoint_type \ + "${ENDPOINT_TYPE}" +crudini --set $cfg \ + DEFAULT \ + auth_url \ + "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0" +crudini --set $cfg \ + DEFAULT \ + admin_tenant_name \ + "${ADMIN_TENANT_NAME}" +crudini --set $cfg \ + DEFAULT \ + admin_user \ + "${NEUTRON_KEYSTONE_USER}" +crudini --set $cfg \ + DEFAULT \ + admin_password \ + "${NEUTRON_KEYSTONE_PASSWORD}" +crudini --set $cfg \ + DEFAULT \ + nova_metadata_ip \ + "${NOVA_METADATA_API_SERVICE_HOST}" +crudini --set $cfg \ + DEFAULT \ + nova_metadata_port \ + "${NOVA_METADATA_API_SERVICE_PORT}" +crudini --set $cfg \ + DEFAULT \ + metadata_proxy_shared_secret \ + "${NEUTRON_SHARED_SECRET}" + +# Start Metadata Agent +exec /usr/bin/neutron-metadata-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/metadata_agent.ini --config-dir /etc/neutron -- cgit v1.2.3