У нас есть много серверов Linux, которые будут монтировать несколько файловых серверов Linux по NFS или SMB, используя /etc/fstab
Но вручную меняя каждый сервер /etc/fstab
очень утомительно.
Есть ли способ отредактировать несколько серверов Linux /etc/fstab
одновременно?
В долгосрочной перспективе это задачи, которые инструменты управления конфигурацией (например, puppet
, chef
, ansible
) созданы для.
Для краткосрочного решения я бы использовал что-то вроде func
или fabric
вытолкнуть ваш fstab
файл. Рассмотрим пример использования fabric
так как это тот, с которым я наиболее знаком.
Установка зависит от вашего дистрибутива. Один из них, вероятно, сработает:
$ sudo pip install fabric
$ sudo easy_install fabric
$ sudo apt-get install fabric
Затем вам также нужно будет распространить ключи ssh. Это просто:
$ ssh-keygen
$ ssh-copy-id host2
$ ssh-copy-id host3
Теперь вам нужно создать 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
Надеюсь это поможет!
Предполагая, что у меня есть учетная запись администратора на каждом сервере, доступном через SSH с аутентификацией с открытым ключом, я бы просто удаленно запустил sed или другой инструмент редактирования текста, используя эту учетную запись SSH, в цикле bash.
Я согласен с Питером в том, что использование инструмента развертывания - лучшее решение. Однако я не согласен с тем, что использование mouning из cron всегда является хорошей идеей!
Если инструмент развертывания слишком сложен, я бы использовал поздний сценарий init / systemd (который мог бы получать определения из центрального репозитория) и смонтировать файловые системы.
Используя инструмент массового развертывания, такой как automateit, salt, puppet, ansible и т. Д., Вы можете запустить скрипт (в puppet use exec) или cronjob, как показано ниже, чтобы использовать mount для запуска массового развертывания fstab:
mount -a --fstab pathtofile
И мой старый ответ (если ваше монтирование слишком старое, чтобы иметь --fstab / -T): в таком средстве массового развертывания вы можете совершить ужасный взлом, чтобы эмулировать поведение /etc/fstab.d (поскольку / etc / fstab .d еще не поддерживается, и эти каталоги делают инструменты развертывания очень полезными).
Переместите fstab в /etc/fstab.d/01main
Разверните свою строку fstab в файле /etc/fstab.d/02nfsstuff
Объедините их (здесь важен порядок номеров):
cat /etc/fstab.d/* > /etc/fstab
Сделайте ужасный взлом cronjob в /etc/cron.d/nfsstuff
0 * * * * root cat /etc/fstab.d/* > /etc/fstab ; mount -a
Я надеюсь, что вы найдете правильное решение, но до тех пор, возможно, это будет полезно.