Seems this question comes up from time to time.
I've some Real World ™ experience with this issue from a job I had long long time ago. It was a very large financial firm that has since become a "fallen flag" after the banking crisis. One of my jobs there was to manage versions of CPAN modules in our environment on a world wide basis which consisted of loading new modules from CPAN and building them for multiple platforms and distributing them. (I'll get to detail on that in a bit)
We also had a plethora of locally home grown modules that were conatantly updated on a continual basis.
Another facet of my job was to one a month look at the emails I got about new and improved CPAN modules and decide which were going to be brought into our environment to update in our module trees.
Distribution was handled by the existence of extensive AFS paths that covered every possible combination of platform that we were supporting Perl under. Even Perl itself was distributed this way as the last item in my list of "todo" items was to bring new versions of Perl into the mix.
Details are a bit fuzzy after lack of use of AFS for about 8 years but there was a mechanism in place where the mount table facility used variables such as (and there may be errors here since it's been so long)
and so on and symlinks on the local host were used to point to the right places from the local hard drive. Automounting then took care of mounting the correct stuff./afs/$region/$cell/$perlversion/bin /afs/$region/$cell/$version/lib
So there's an extreme example. I imagine something a lot simpler using NFS would suffice but NFS over trans-Atlantic links would be dicey at best which is why AFS was used instead with local cell servers as appropriate.