Another way to solve the problem is to fix Dockerfile for rsync [1], not to copy manifests and modules in /etc/puppet, use another directory and fix start.sh to run manifests and modules from this new directory, in this case manifests/modules will not be overridden by manifests/modules from the host system. And container will always have original puppet scripts without this "symlink magic" which we will have to handle somehow in case of rollbacks.
Another way to solve the problem is to fix Dockerfile for rsync [1], not to copy manifests and modules in /etc/puppet, use another directory and fix start.sh to run manifests and modules from this new directory, in this case manifests/modules will not be overridden by manifests/modules from the host system. And container will always have original puppet scripts without this "symlink magic" which we will have to handle somehow in case of rollbacks.
[1] https:/ /github. com/stackforge/ fuel-main/ blob/master/ docker/ rsync/Dockerfil e