Как изменить несколько Linux-серверов /etc/fstab одновременно

У нас есть много Linux-серверов, которые будут монтировать несколько файловых серверов Linux по NFS или SMB, используя /etc/fstab

Но вручную меняя каждый сервер /etc/fstab это очень утомительно.

Есть ли способ редактировать несколько серверов Linux /etc/fstab одновременно?

4 ответа

Решение

В долгосрочной перспективе это такие задачи, которые инструменты управления конфигурацией (например, 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 -H host2,host3 copy_fstab

Надеюсь это поможет!

Я согласен с Питером в том, что использование инструмента развертывания - самое лучшее решение. Однако я не согласен с тем, что монтирование cron - хорошая идея!

Если инструмент развертывания слишком сложен, я бы пошел с поздним скриптом init / systemd (который мог бы получить определения из центрального репозитория) и смонтировал файловые системы.

Предполагая, что у меня есть учетная запись администратора на каждом сервере, доступном через SSH с аутентификацией с открытым ключом, я просто удаленно запустил бы sed или другой инструмент редактирования текста, использующий эту учетную запись SSH, в цикле bash.

Используя инструмент массового развертывания, такой как 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

Я надеюсь, что вы найдете правильное решение, но до тех пор, может быть, это полезно.

Другие вопросы по тегам