route mcpcontrol via PXE br to bypass isolation 41/67541/1
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Thu, 11 Apr 2019 14:04:03 +0000 (16:04 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Thu, 11 Apr 2019 14:05:45 +0000 (16:05 +0200)
commitd9b44acb6871837caf6f6d962af824cf9eebe667
tree9bde38cbb3f5afb6d8bcb50caacf503b1ceb6acd
parent59269ee00c235324efd35ce9966e5ff38b9cea47
route mcpcontrol via PXE br to bypass isolation

Recent virsh/Docker network rework changed mcpcontrol (previously
a virsh-managed network) into a Docker-controlled network using
the 'bridge' driver.
As a consequence, Docker now isolates traffic from 'mcpcontrol'
network from the default Docker bridge network ('docker0') using
iptables rules that check input/output interfaces.
Yardstick (and any other Docker container hooked via 'docker0')
will not be able to ssh into Salt master due to this isolation.

One possible workaround would be to explicitly ACCEPT traffic
from 'docker0' going to Salt master. However, this is only
properly supported starting with Docker 17.06, while most CI hosts
and end users are still using 17.05 or older.
In older Docker releases, DOCKER-USER iptables table was not
avaiable, so injecting custom iptables and making them persistent
is not only complicated, it's also prone to subtle errors.

Another way to bypass the iptables rules is to route the packets
coming from our new Docker network via another bridge before
letting them find their way into 'docker0'.
This change adds a new route for the Salt master host (note that
MaaS container will not benefit from this) via the PXE bridge on
the jumphost (which can be either a real Linux bridge for baremetal
deployments or a virsh-managed network); adding one extra network
hop for each packet going between our 'mcpcontrol' Docker network
and 'docker0', effectively bypassing the Docker-enforced iptables
DROP.

Change-Id: Id8ac7a638c778887b361c9b64c320664c88f59fd
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
mcp/scripts/lib_jump_deploy.sh