Instalación y configuración de OpenStack Mitaka sobre LXC en Ubuntu 14.04
Neutron, es junto a Cinder los dos servicios que no aislaremos en contenedores, ya que esto supondría tener que otorgar permisos a dichos contenedores que harían que el aislamiento de estos fuera inexistente. Por lo tanto, Neutro y Cinder serán instalados en el Host CONTROLLER.
En nova-controller, creamos la base de datos y el usuario para "neutron", y otorgamos los permisos necesarios.
root@nova-controller:~# mysql -u root -p MariaDB [(none)]> CREATE DATABASE neutron; MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';Cargamos las credenciales del usuario Admin.
user@client:~$ source admin-openrcCreamos el usuario "neutron", lo añadimos al rol "admin" y al projecto "service".
user@client:~$ openstack user create --domain default --password-prompt neutron user@client:~$ openstack role add --project service --user neutron adminCreamos la entidad de servicio para *neutron*.
user@client:~$ openstack service create --name neutron --description "OpenStack Networking" networkCreamos los endpoints para la API de neutron.
user@client:~$ openstack endpoint create --region RegionOne network public http://NEUTRON_INTERNAL_IP:9696 user@client:~$ openstack endpoint create --region RegionOne network internal http://NEUTRON_INTERNAL_IP:9696 user@client:~$ openstack endpoint create --region RegionOne network admin http://NEUTRON_INTERNAL_IP:9696En el Host CONTROLLER, instalamos los siguientes paquetes:
root@CONTROLLER:~# apt install neutron-server neutron-plugin-ml2 neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent python-memcacheEditamos el fichero /etc/neutron/neutron.conf y añadimos las siguiente líneas.
root@CONTROLLER:~# emacs /etc/neutron/neutron.conf [DEFAULT] auth_strategy=keystone core_plugin=ml2 service_plugins = router allow_overlapping_ips=True notify_nova_on_port_status_changes=True notify_nova_on_port_data_changes=True rpc_backend=rabbit [agent] root_helper=sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf [database] connection=mysql+pymysql://neutron:NEUTRON_DBPASS@NOVA_CONTROLLER_INTERNAL_IP/neutron [keystone_authtoken] auth_uri=http://KEYSTONE_INTERNAL_IP:5000 auth_url=http://KEYSTONE_INTERNAL_IP:35357 memcached_servers = NOVA_CONTROLLER_INTERNAL_IP:11211 auth_type=password project_domain_name=default user_domain_name=default region_name=RegionOne project_name=service username=nova password=NOVA_PASS [nova] auth_url=http://KEYSTONE_INTERNAL_IP:35357 auth_type=password project_domain_name=default user_domain_name=default project_name=service username=nova password=NOVA_PASS [oslo_messaging_rabbit] rabbit_host=NOVA_CONTROLLER_INTERNAL_IP rabbit_userid=openstack rabbit_password=RABBIT_PASSEl plug-in ML2 es el encargado de crear la infraestructura de red virtual para las instancias, usando Linux bridge. Para configurar correctamente este plug-in, debemos editar el fichero /etc/neutron/plugins/ml2/ml2_conf.ini.
root@CONTROLLER:~# emacs /etc/neutron/plugins/ml2/ml2_conf.ini [DEFAULT] [ml2] type_drivers = flat,vxlan tenant_network_types = vxlan mechanism_drivers = linuxbridge,l2population extension_drivers = port_security [ml2_type_flat] flat_networks = provider [ml2_type_vxlan] vni_ranges = 1:1000 [securitygroup] enable_ipset = TrueConfiguramos el agente de Linux bridge para el plug-in ml2.
root@CONTROLLER:~# emacs /etc/neutron/plugins/ml2/linuxbridge_agent.ini [DEFAULT] [linux_bridge] physical_interface_mappings = provider:br0 [securitygroup] enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver [vxlan] enable_vxlan = true local_ip = NEUTRON_INTERNAL_IP l2_population = TruePara poder hacer uso de uso de routing y NAT en nuestras redes virtuales, debemos configurar el agente layer-3.
root@CONTROLLER:~# emacs /etc/neutron/l3_agent.ini [DEFAULT] interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver external_network_bridge =Nuestras redes virtuales deben contar también con un servidor DHCP.
root@CONTROLLER:~# emacs /etc/neutron/dhcp_agent.ini [DEFAULT] interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = TrueEditamos el fichero /etc/neutron/metadata_agent.ini para que apunte al servidor de metadatos en nova-controller.
root@CONTROLLER:~# emacs /etc/neutron/metadata_agent.ini [DEFAULT] nova_metadata_ip = NOVA_CONTROLLER_INTERNAL_IP metadata_proxy_shared_secret = METADATA_SECRETEditamos el fichero /etc/nova/nova.conf para añadir los nuevos cambios realizados en el contenedor nova-controller.
root@nova-controller:~# emacs /etc/nova/nova.conf ... [neutron] url = http://HOST_CONTROLLER_INTERNAL_IP:9696 auth_url = http://KEYSTONE_INTERNAL_IP:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = NEUTRON_PASS service_metadata_proxy = True metadata_proxy_shared_secret = METADATA_SECRETPoblamos la base de datos.
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" neutronReiniciamos los servicios para actualizar los cambios.
root@nova-controller:~# service nova-api restart
root@CONTROLLER:~# service neutron-server restart root@CONTROLLER:~# service neutron-linuxbridge-agent restart root@CONTROLLER:~# service neutron-dhcp-agent restart root@CONTROLLER:~# service neutron-metadata-agent restart root@CONTROLLER:~# service neutron-l3-agent restart