Como eu mudo vários servidores linux '/ etc / fstab simultaneamente

2

Temos bastante servidor linux que montará alguns servidores de arquivos linux por NFS ou SMB usando /etc/fstab

Mas alterar manualmente o /etc/fstab de cada servidor é muito entediante.

Existe alguma maneira de editar vários /etc/fstab do servidor linux simultaneamente?

    
por Bossliaw 02.07.2014 / 10:52

4 respostas

6

A longo prazo, esse é o tipo de tarefa para o qual as ferramentas de gerenciamento de configuração (por exemplo, puppet , chef , ansible ) são feitas.

Para uma solução de curto prazo, eu usaria algo como func ou fabric para enviar seu arquivo fstab . Vou analisar um exemplo de usar fabric , já que é o que eu estou mais familiarizado.

A instalação depende da sua distro. É provável que um deles funcione:

$ sudo pip install fabric
$ sudo easy_install fabric
$ sudo apt-get install fabric

Em seguida, você também precisará distribuir as chaves ssh. É simples:

$ ssh-keygen
$ ssh-copy-id host2
$ ssh-copy-id host3

Agora, você precisará criar um arquivo fab (praticamente um script Python ). Por exemplo, copy_fstab.fab seria algo como isto:

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')

Por fim, você executa o arquivo fab:

$ fab -H host2,host3 copy_fstab

Espero que isso ajude!

    
por 02.07.2014 / 13:55
1

Usando uma ferramenta de implantação em massa, como automateit, salt, puppet, ansible, etc., você pode executar um script (em exec de uso fantoche) ou um cronjob abaixo para usar o mount para executar um fstab em massa implantado:

mount -a --fstab pathtofile

E minha resposta antiga (se sua montaria é muito antiga para ter --fstab / -T): Em uma ferramenta de implantação em massa, você pode fazer uma pirataria terrível para emular um comportamento /etc/fstab.d (já que o /etc/fstab.d ainda não é suportado e esses diretórios tornam as ferramentas de implantação muito úteis).

Mova o fstab para /etc/fstab.d/01main

Implante sua linha fstab em um arquivo /etc/fstab.d/02nfsstuff

Mesclá-los (aqui a ordem dos números é importante):

cat /etc/fstab.d/* > /etc/fstab

Faça um cron-job horrível no /etc/cron.d/nfsstuff

0 * * * * root cat /etc/fstab.d/* > /etc/fstab ; mount -a

Espero que você encontre uma solução adequada, mas até então, talvez isso seja útil.

    
por 02.07.2014 / 11:01
1

Concordo com Peter que usar uma ferramenta de implantação é a melhor solução. No entanto, eu discordo que as coisas do cron são sempre uma boa idéia!

Se a ferramenta de implementação fosse muito pular, eu iria com um script init / systemd tardio (que poderia buscar as definições de um repositório central) e montaria os sistemas de arquivos.

    
por 02.07.2014 / 11:41
1

Supondo que eu tenha uma conta de administrador em cada servidor disponível via SSH com autenticação de chave pública, eu simplesmente executaria remotamente o sed ou outra ferramenta de edição de texto usando essa conta SSH, em um loop bash.

    
por 02.07.2014 / 13:18