Add network group, move neutron and load balancing services to it
In many cases network services will be provided by controllers, but this allows these services to be separated.
This commit is contained in:
parent
f0b409e484
commit
3466fd78b4
@ -12,7 +12,9 @@ controller_bootstrap_user: "{{ lookup('env', 'USER') }}"
|
|||||||
# List of networks to which controller nodes are attached.
|
# List of networks to which controller nodes are attached.
|
||||||
controller_network_interfaces: >
|
controller_network_interfaces: >
|
||||||
{{ (controller_default_network_interfaces +
|
{{ (controller_default_network_interfaces +
|
||||||
controller_extra_network_interfaces) | unique | list }}
|
controller_extra_network_interfaces +
|
||||||
|
controller_network_host_network_interfaces
|
||||||
|
if inventory_hostname in groups['network'] else []) | unique | list }}
|
||||||
|
|
||||||
# List of default networks to which controller nodes are attached.
|
# List of default networks to which controller nodes are attached.
|
||||||
controller_default_network_interfaces: >
|
controller_default_network_interfaces: >
|
||||||
@ -20,14 +22,17 @@ controller_default_network_interfaces: >
|
|||||||
oob_wl_net_name,
|
oob_wl_net_name,
|
||||||
provision_wl_net_name,
|
provision_wl_net_name,
|
||||||
internal_net_name,
|
internal_net_name,
|
||||||
public_net_name,
|
|
||||||
external_net_name,
|
|
||||||
storage_net_name,
|
storage_net_name,
|
||||||
storage_mgmt_net_name] | unique | list }}
|
storage_mgmt_net_name] | unique | list }}
|
||||||
|
|
||||||
# List of extra networks to which controller nodes are attached.
|
# List of extra networks to which controller nodes are attached.
|
||||||
controller_extra_network_interfaces: []
|
controller_extra_network_interfaces: []
|
||||||
|
|
||||||
|
# List of network interfaces to which network nodes are attached.
|
||||||
|
controller_network_host_network_interfaces: >
|
||||||
|
{{ [public_net_name,
|
||||||
|
external_net_name] | unique | list }}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Controller node BIOS configuration.
|
# Controller node BIOS configuration.
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
# gracefully.
|
# gracefully.
|
||||||
# NOTE: Per-host configuration is not currently supported.
|
# NOTE: Per-host configuration is not currently supported.
|
||||||
controller_host: "{{ groups['controllers'][0] }}"
|
controller_host: "{{ groups['controllers'][0] }}"
|
||||||
|
network_host: "{{ groups['network'][0] }}"
|
||||||
seed_host: "{{ groups['seed'][0] }}"
|
seed_host: "{{ groups['seed'][0] }}"
|
||||||
pre_tasks:
|
pre_tasks:
|
||||||
# Configuration of extra user-provided Kolla globals.
|
# Configuration of extra user-provided Kolla globals.
|
||||||
@ -28,6 +29,41 @@
|
|||||||
- config
|
- config
|
||||||
|
|
||||||
# Configuration and validation of controller networking.
|
# Configuration and validation of controller networking.
|
||||||
|
- block:
|
||||||
|
- name: Set facts containing the controller network interfaces
|
||||||
|
set_fact:
|
||||||
|
kolla_network_interface: "{{ internal_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
||||||
|
kolla_api_interface: "{{ internal_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
||||||
|
kolla_storage_interface: "{{ storage_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
||||||
|
kolla_cluster_interface: "{{ storage_mgmt_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
||||||
|
kolla_provision_interface: "{{ provision_wl_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
||||||
|
kolla_inspector_dnsmasq_interface: "{{ provision_wl_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
||||||
|
|
||||||
|
- name: Validate controller Kolla Ansible network configuration
|
||||||
|
fail:
|
||||||
|
msg: >
|
||||||
|
The Kolla Ansible variable {{ item.var_name }}
|
||||||
|
({{ item.description }}) is invalid. Value:
|
||||||
|
"{{ hostvars[inventory_hostname][item.var_name] | default('<undefined>') }}".
|
||||||
|
when:
|
||||||
|
- "{{ item.required | bool }}"
|
||||||
|
- "{{ hostvars[inventory_hostname][item.var_name] is not defined or not hostvars[inventory_hostname][item.var_name] }}"
|
||||||
|
with_items:
|
||||||
|
- var_name: "kolla_api_interface"
|
||||||
|
description: "API network interface name"
|
||||||
|
required: True
|
||||||
|
- var_name: "kolla_provision_interface"
|
||||||
|
description: "Bare metal provisioning network interface name"
|
||||||
|
required: "{{ kolla_enable_ironic }}"
|
||||||
|
- var_name: "kolla_inspector_dnsmasq_interface"
|
||||||
|
description: "Bare metal introspection network interface name"
|
||||||
|
required: "{{ kolla_enable_ironic }}"
|
||||||
|
when: "{{ groups['controllers'] | length > 0 }}"
|
||||||
|
tags:
|
||||||
|
- config
|
||||||
|
- config-validation
|
||||||
|
|
||||||
|
# Configuration and validation of network host networking.
|
||||||
- block:
|
- block:
|
||||||
- name: Set facts containing the VIP addresses and FQDNs
|
- name: Set facts containing the VIP addresses and FQDNs
|
||||||
set_fact:
|
set_fact:
|
||||||
@ -39,22 +75,19 @@
|
|||||||
|
|
||||||
- name: Set facts containing the VIP addresses and FQDNs
|
- name: Set facts containing the VIP addresses and FQDNs
|
||||||
set_fact:
|
set_fact:
|
||||||
kolla_internal_vip_address: "{{ internal_net_name | net_ip(controller_host) }}"
|
kolla_internal_vip_address: "{{ internal_net_name | net_ip(network_host) }}"
|
||||||
kolla_internal_fqdn: "{{ internal_net_name | net_ip(controller_host) }}"
|
kolla_internal_fqdn: "{{ internal_net_name | net_ip(network_host) }}"
|
||||||
kolla_external_vip_address: "{{ public_net_name | net_ip(controller_host) }}"
|
kolla_external_vip_address: "{{ public_net_name | net_ip(network_host) }}"
|
||||||
kolla_external_fqdn: "{{ public_net_name | net_ip(controller_host) }}"
|
kolla_external_fqdn: "{{ public_net_name | net_ip(network_host) }}"
|
||||||
when:
|
when:
|
||||||
- "{{ not kolla_enable_haproxy | bool }}"
|
- "{{ not kolla_enable_haproxy | bool }}"
|
||||||
|
|
||||||
- name: Set facts containing the controller network interfaces
|
- name: Set facts containing the network host interfaces
|
||||||
|
set_fact:
|
||||||
|
kolla_external_vip_interface: "{{ public_net_name | net_interface(network_host) | replace('-', '_') }}"
|
||||||
|
|
||||||
|
- name: Initialise facts containing the network host interfaces
|
||||||
set_fact:
|
set_fact:
|
||||||
kolla_network_interface: "{{ internal_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
|
||||||
kolla_external_vip_interface: "{{ public_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
|
||||||
kolla_api_interface: "{{ internal_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
|
||||||
kolla_storage_interface: "{{ storage_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
|
||||||
kolla_cluster_interface: "{{ storage_mgmt_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
|
||||||
kolla_provision_interface: "{{ provision_wl_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
|
||||||
kolla_inspector_dnsmasq_interface: "{{ provision_wl_net_name | net_interface(controller_host) | replace('-', '_') }}"
|
|
||||||
# Initialise the following lists.
|
# Initialise the following lists.
|
||||||
kolla_neutron_bridge_names: []
|
kolla_neutron_bridge_names: []
|
||||||
kolla_neutron_external_interfaces: []
|
kolla_neutron_external_interfaces: []
|
||||||
@ -68,12 +101,13 @@
|
|||||||
set_fact:
|
set_fact:
|
||||||
kolla_neutron_bridge_interfaces: >
|
kolla_neutron_bridge_interfaces: >
|
||||||
{{ kolla_neutron_bridge_interfaces |
|
{{ kolla_neutron_bridge_interfaces |
|
||||||
union([item | net_interface(controller_host) | replace('.' ~ item | net_vlan(controller_host) | default('!nomatch!'), '')]) |
|
union([item | net_interface(network_host) | replace('.' ~ item | net_vlan(network_host) | default('!nomatch!'), '')]) |
|
||||||
list }}
|
list }}
|
||||||
with_items:
|
with_items:
|
||||||
|
# FIXME: Network host does not have an IP on this network.
|
||||||
- "{{ provision_wl_net_name }}"
|
- "{{ provision_wl_net_name }}"
|
||||||
- "{{ external_net_name }}"
|
- "{{ external_net_name }}"
|
||||||
when: "{{ item in hostvars[controller_host].network_interfaces }}"
|
when: "{{ item in hostvars[network_host].network_interfaces }}"
|
||||||
|
|
||||||
- name: Set facts containing the Neutron bridge and interface names
|
- name: Set facts containing the Neutron bridge and interface names
|
||||||
set_fact:
|
set_fact:
|
||||||
@ -85,7 +119,7 @@
|
|||||||
[network_patch_prefix ~ item ~ network_patch_suffix_ovs] }}
|
[network_patch_prefix ~ item ~ network_patch_suffix_ovs] }}
|
||||||
with_items: "{{ kolla_neutron_bridge_interfaces }}"
|
with_items: "{{ kolla_neutron_bridge_interfaces }}"
|
||||||
|
|
||||||
- name: Validate controller Kolla Ansible network configuration
|
- name: Validate network host Kolla Ansible network configuration
|
||||||
fail:
|
fail:
|
||||||
msg: >
|
msg: >
|
||||||
The Kolla Ansible variable {{ item.var_name }}
|
The Kolla Ansible variable {{ item.var_name }}
|
||||||
@ -107,18 +141,9 @@
|
|||||||
- var_name: "kolla_external_fqdn"
|
- var_name: "kolla_external_fqdn"
|
||||||
description: "External API Fully Qualified Domain Name (FQDN)"
|
description: "External API Fully Qualified Domain Name (FQDN)"
|
||||||
required: True
|
required: True
|
||||||
- var_name: "kolla_api_interface"
|
|
||||||
description: "API network interface name"
|
|
||||||
required: True
|
|
||||||
- var_name: "kolla_external_vip_interface"
|
- var_name: "kolla_external_vip_interface"
|
||||||
description: "External network interface name"
|
description: "External network interface name"
|
||||||
required: True
|
required: True
|
||||||
- var_name: "kolla_provision_interface"
|
|
||||||
description: "Bare metal provisioning network interface name"
|
|
||||||
required: "{{ kolla_enable_ironic }}"
|
|
||||||
- var_name: "kolla_inspector_dnsmasq_interface"
|
|
||||||
description: "Bare metal introspection network interface name"
|
|
||||||
required: "{{ kolla_enable_ironic }}"
|
|
||||||
- var_name: "kolla_neutron_bridge_names"
|
- var_name: "kolla_neutron_bridge_names"
|
||||||
description: "List of Neutron bridge names"
|
description: "List of Neutron bridge names"
|
||||||
required: True
|
required: True
|
||||||
@ -126,7 +151,7 @@
|
|||||||
description: "List of Neutron interface names"
|
description: "List of Neutron interface names"
|
||||||
required: True
|
required: True
|
||||||
|
|
||||||
- name: Validate controller Kolla Ansible Neutron bridge and interface configuration
|
- name: Validate network host Kolla Ansible Neutron bridge and interface configuration
|
||||||
fail:
|
fail:
|
||||||
msg: >
|
msg: >
|
||||||
The Kolla Ansible variable {{ item.0.var_name }}
|
The Kolla Ansible variable {{ item.0.var_name }}
|
||||||
@ -145,7 +170,7 @@
|
|||||||
description: "List of Neutron interface names"
|
description: "List of Neutron interface names"
|
||||||
required: True
|
required: True
|
||||||
- value
|
- value
|
||||||
when: "{{ groups['controllers'] | length > 0 }}"
|
when: "{{ groups['network'] | length > 0 }}"
|
||||||
tags:
|
tags:
|
||||||
- config
|
- config
|
||||||
- config-validation
|
- config-validation
|
||||||
|
@ -66,10 +66,10 @@
|
|||||||
list }}
|
list }}
|
||||||
become: True
|
become: True
|
||||||
|
|
||||||
# Configure a virtual ethernet patch links to connect the workload provision
|
# Configure virtual ethernet patch links to connect the workload provision
|
||||||
# and external network bridges to the Neutron OVS bridge.
|
# and external network bridges to the Neutron OVS bridge.
|
||||||
- name: Ensure controller workload OVS patch links exist
|
- name: Ensure OVS patch links exist
|
||||||
hosts: controllers
|
hosts: network
|
||||||
tags:
|
tags:
|
||||||
- config
|
- config
|
||||||
vars:
|
vars:
|
||||||
|
@ -15,10 +15,10 @@ Seed host
|
|||||||
the cloud hosts. Typically the seed host is deployed as a VM but this is
|
the cloud hosts. Typically the seed host is deployed as a VM but this is
|
||||||
not mandatory.
|
not mandatory.
|
||||||
Cloud hosts
|
Cloud hosts
|
||||||
The cloud hosts run the OpenStack control plane, storage, and virtualised
|
The cloud hosts run the OpenStack control plane, network, monitoring,
|
||||||
compute services. Typically the cloud hosts run on bare metal but this is
|
storage, and virtualised compute services. Typically the cloud hosts run
|
||||||
not mandatory.
|
on bare metal but this is not mandatory.
|
||||||
Bare metal compute hosts:
|
Bare metal compute hosts
|
||||||
In a cloud providing bare metal compute services to tenants via ironic,
|
In a cloud providing bare metal compute services to tenants via ironic,
|
||||||
these hosts will run the bare metal tenant workloads. In a cloud with only
|
these hosts will run the bare metal tenant workloads. In a cloud with only
|
||||||
virtualised compute this category of hosts does not exist.
|
virtualised compute this category of hosts does not exist.
|
||||||
@ -28,6 +28,20 @@ Bare metal compute hosts:
|
|||||||
In many cases the control and seed host will be the same, although this is
|
In many cases the control and seed host will be the same, although this is
|
||||||
not mandatory.
|
not mandatory.
|
||||||
|
|
||||||
|
Cloud Hosts
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Cloud hosts can further be divided into subclasses.
|
||||||
|
|
||||||
|
Controllers
|
||||||
|
Controller hosts run the OpenStack control plane services.
|
||||||
|
Network
|
||||||
|
Network hosts run the neutron networking services and load balancers for
|
||||||
|
the OpenStack API services.
|
||||||
|
Monitoring
|
||||||
|
Monitoring host run the control plane and workload monitoring services.
|
||||||
|
Currently, kayobe does not deploy any services onto monitoring hosts.
|
||||||
|
|
||||||
Networks
|
Networks
|
||||||
========
|
========
|
||||||
|
|
||||||
|
@ -18,6 +18,9 @@
|
|||||||
# List of extra networks to which controller nodes are attached.
|
# List of extra networks to which controller nodes are attached.
|
||||||
#controller_extra_network_interfaces:
|
#controller_extra_network_interfaces:
|
||||||
|
|
||||||
|
# List of network interfaces to which network nodes are attached.
|
||||||
|
#controller_network_host_network_interfaces:
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Controller node BIOS configuration.
|
# Controller node BIOS configuration.
|
||||||
|
|
||||||
|
@ -7,17 +7,24 @@
|
|||||||
[controllers]
|
[controllers]
|
||||||
# Empty group to provide declaration of controllers group.
|
# Empty group to provide declaration of controllers group.
|
||||||
|
|
||||||
|
[network:children]
|
||||||
|
# Add controllers to network group by default for backwards compatibility,
|
||||||
|
# although they could be separate hosts.
|
||||||
|
controllers
|
||||||
|
|
||||||
[monitoring]
|
[monitoring]
|
||||||
# Empty group to provide declaration of monitoring group.
|
# Empty group to provide declaration of monitoring group.
|
||||||
|
|
||||||
[overcloud:children]
|
[overcloud:children]
|
||||||
controllers
|
controllers
|
||||||
|
network
|
||||||
monitoring
|
monitoring
|
||||||
|
|
||||||
[docker:children]
|
[docker:children]
|
||||||
# Hosts in this group will have Docker installed.
|
# Hosts in this group will have Docker installed.
|
||||||
seed
|
seed
|
||||||
controllers
|
controllers
|
||||||
|
network
|
||||||
monitoring
|
monitoring
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
Loading…
Reference in New Issue
Block a user