如何同时更改多个linux服务器的/ etc / fstab

我们有大量的linux服务器,它将使用/etc/fstab通过NFS或SMB挂载几个linux文件服务器

但手动更改每个服务器的/etc/fstab是非常繁琐的。

有没有办法同时编辑多个Linux服务器的/etc/fstab

从长远来看,这是configurationpipe理工具(例如, puppetchefansible )的任务。

对于短期的解决scheme,我会使用类似于funcfabric东西来推出你的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或其他文本编辑工具。