我们有大量的linux服务器,它将使用/etc/fstab通过NFS或SMB挂载几个linux文件服务器
但手动更改每个服务器的/etc/fstab是非常繁琐的。
有没有办法同时编辑多个Linux服务器的/etc/fstab ?
从长远来看,这是configurationpipe理工具(例如, puppet , chef , ansible )的任务。
对于短期的解决scheme,我会使用类似于func或fabric东西来推出你的fstab文件。 这是我最熟悉的一个例子。
安装取决于你的发行版。 其中之一可能工作:
$ sudo pip install fabric $ sudo easy_install fabric $ sudo apt-get install fabric
然后,你还需要分配ssh密钥。 这很简单:
$ ssh-keygen $ ssh-copy-id host2 $ ssh-copy-id host3
现在,你需要创build一个fab文件(几乎是一个Python脚本)。 例如, copy_fstab.fab看起来像这样:
from fabric.operations import put from fabric.operations import sudo def copy_fstab(): # Copy local fstab over put('/etc/fstab', '/etc/fstab', use_sudo=True) # Run mount -a sudo('mount -a')
最后,你运行fab文件:
$ fab -H host2,host3 copy_fstab
希望这可以帮助!
使用像自动化,盐,puppet,ansible等大规模部署工具,你可以运行一个脚本(在puppet使用exec)或像下面的cronjob使用mount来运行大规模部署的fstab:
mount -a --fstab pathtofile
而我的旧回答(如果你的挂载太旧了–fstab / -T):在这样的大规模部署工具中,你可以做一些可怕的hackery来模拟/etc/fstab.d行为(因为/ etc / fstab .d目前还不支持,这些目录使得部署工具非常有用)。
将fstab移到/etc/fstab.d/01main
将您的fstab行部署在文件/etc/fstab.d/02nfsstuff中
合并它们(在这里数字顺序是重要的):
cat /etc/fstab.d/* > /etc/fstab
在/etc/cron.d/nfsstuff中制作一个可怕的hackjob cronjob
0 * * * * root cat /etc/fstab.d/* > /etc/fstab ; mount -a
我希望你find一个合适的解决scheme,但在此之前,这可能是有用的。
我同意Peter的观点,使用部署工具是最好的解决scheme。 不过,我不同意从cron中获得东西是一个好主意!
如果部署工具太多了,我会用一个延迟的init / systemd脚本(可能从中央仓库获取定义)并挂载文件系统。
假设我在每台服务器上都有一个pipe理员帐号,通过公共密钥身份validation的SSH,我可以在bash循环中使用这个SSH帐号来远程运行sed或其他文本编辑工具。