kolla-ansible/ansible/roles
Radosław Piliszek bc053c09c1 Implement IPv6 support in the control plane
Introduce kolla_address filter.
Introduce put_address_in_context filter.

Add AF config to vars.

Address contexts:
- raw (default): <ADDR>
- memcache: inet6:[<ADDR>]
- url: [<ADDR>]

Other changes:

globals.yml - mention just IP in comment

prechecks/port_checks (api_intf) - kolla_address handles validation

3x interface conditional (swift configs: replication/storage)

2x interface variable definition with hostname
(haproxy listens; api intf)

1x interface variable definition with hostname with bifrost exclusion
(baremetal pre-install /etc/hosts; api intf)

neutron's ml2 'overlay_ip_version' set to 6 for IPv6 on tunnel network

basic multinode source CI job for IPv6

prechecks for rabbitmq and qdrouterd use proper NSS database now

MariaDB Galera Cluster WSREP SST mariabackup workaround
(socat and IPv6)

Ceph naming workaround in CI
TODO: probably needs documenting

RabbitMQ IPv6-only proto_dist

Ceph ms switch to IPv6 mode

Remove neutron-server ml2_type_vxlan/vxlan_group setting
as it is not used (let's avoid any confusion)
and could break setups without proper multicast routing
if it started working (also IPv4-only)

haproxy upgrade checks for slaves based on ipv6 addresses

TODO:

ovs-dpdk grabs ipv4 network address (w/ prefix len / submask)
not supported, invalid by default because neutron_external has no address
No idea whether ovs-dpdk works at all atm.

ml2 for xenapi
Xen is not supported too well.
This would require working with XenAPI facts.

rp_filter setting
This would require meddling with ip6tables (there is no sysctl param).
By default nothing is dropped.
Unlikely we really need it.

ironic dnsmasq is configured IPv4-only
dnsmasq needs DHCPv6 options and testing in vivo.

KNOWN ISSUES (beyond us):

One cannot use IPv6 address to reference the image for docker like we
currently do, see: https://github.com/moby/moby/issues/39033
(docker_registry; docker API 400 - invalid reference format)
workaround: use hostname/FQDN

RabbitMQ may fail to bind to IPv6 if hostname resolves also to IPv4.
This is due to old RabbitMQ versions available in images.
IPv4 is preferred by default and may fail in the IPv6-only scenario.
This should be no problem in real life as IPv6-only is indeed IPv6-only.
Also, when new RabbitMQ (3.7.16/3.8+) makes it into images, this will
no longer be relevant as we supply all the necessary config.
See: https://github.com/rabbitmq/rabbitmq-server/pull/1982

For reliable runs, at least Ansible 2.8 is required (2.8.5 confirmed
to work well). Older Ansible versions are known to miss IPv6 addresses
in interface facts. This may affect redeploys, reconfigures and
upgrades which run after VIP address is assigned.
See: https://github.com/ansible/ansible/issues/63227

Bifrost Train does not support IPv6 deployments.
See: https://storyboard.openstack.org/#!/story/2006689

Change-Id: Ia34e6916ea4f99e9522cd2ddde03a0a4776f7e2c
Implements: blueprint ipv6-control-plane
Signed-off-by: Radosław Piliszek <radoslaw.piliszek@gmail.com>
2019-10-16 10:24:35 +02:00
..
aodh Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
barbican Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
baremetal Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
bifrost Add upgrade-bifrost command 2019-07-02 14:30:14 +01:00
blazar Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
ceilometer Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
ceph Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
certificates Add DNS to subjectAltName in Self-Signed Certificate 2019-09-11 11:40:12 +08:00
chrony Add a job that *only* deploys updated containers 2019-09-26 17:51:14 +01:00
cinder Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
cloudkitty Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
collectd Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
common Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
congress Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
cyborg Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
designate Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
destroy Add elasticsearch_datadir_volume 2019-02-25 19:30:33 +01:00
elasticsearch Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
etcd Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
freezer Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
glance Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
gnocchi Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
grafana Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
haproxy Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
haproxy-config Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
heat Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
horizon Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
influxdb Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
ironic Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
iscsi Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
kafka Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
karbor Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
keystone Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
kibana Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
kuryr Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
magnum Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
manila Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
mariadb Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
masakari Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
memcached Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
mistral Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
module-load Load known, standard kernel modules from the host, not within containers 2018-10-11 10:26:34 +02:00
monasca Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
mongodb Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
multipathd Add a job that *only* deploys updated containers 2019-09-26 17:51:14 +01:00
murano Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
neutron Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
nova Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
nova-cell Copy Nova role as a basis for the Nova cell role 2019-10-01 14:48:19 +01:00
nova-hyperv Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
octavia Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
opendaylight Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
openvswitch Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
ovs-dpdk Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
panko Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
placement Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
prechecks Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
prometheus Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
qdrouterd Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
qinling Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
rabbitmq Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
rally Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
redis Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
sahara Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
searchlight Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
senlin Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
service-ks-register Create and grant all keystone roles in service-ks-register 2019-09-24 08:50:04 +01:00
service-rabbitmq Add service-rabbitmq role 2019-10-01 14:44:43 +01:00
service-stop/tasks Use become for all docker tasks 2019-06-06 19:04:58 +01:00
skydive Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
solum Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
storm Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
swift Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
tacker Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
telegraf Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
tempest Add a job that *only* deploys updated containers 2019-09-26 17:51:14 +01:00
trove Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
vitrage Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
vmtp Add a job that *only* deploys updated containers 2019-09-26 17:51:14 +01:00
watcher Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
zookeeper Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
zun Implement IPv6 support in the control plane 2019-10-16 10:24:35 +02:00
ceph_pools.yml Use become for all docker tasks 2019-06-06 19:04:58 +01:00