criar link simbólico para máquina remota

2

Eu tenho 2 servidores linux A e B que compartilham o diretório comum. Eu tenho que criar link simbólico para o arquivo / etc / hosts para cada servidor com um arquivo comum. sempre que eu atualizar esse arquivo comum que é compartilhado por ambos os servidores, eles são capazes de saber quais alterações no arquivo e atualizar / etc / hosts automaticamente. É possível usar link simbólico ou qualquer outra opção?

    
por Swapnil Sonawane 21.12.2012 / 15:13

2 respostas

2

Em vez de ter um link simbólico para um arquivo de hosts (remoto), é melhor atualizar a cópia local com as informações do controle remoto. Dessa forma, em caso de falha de rede, ou o host "master" está inativo, você ainda tem o arquivo local / etc / hosts.

Você deve, em cada arquivo / etc / hosts local, uma "estrutura" para separar informações locais e globais.

exemplo do arquivo local / etc / hosts:

# local informations:

127.0.0.1 localhost otherhandylocalalias
# specificly needed aliases for this host:
1.2.3.4 some_specific.host.domain

# before:local after:global informations (copied from: ...........)

........................
........................

E você pode substituir o resto do arquivo (everyuthing após a linha "# before: local after: global ....") com as informações "globais", obtidas de um arquivo remoto dedicado ao host. "arquivo de informações globais (ex: remotehost: /etc/hosts_global_informations.master), ou recuperado APENAS a partir da" parte global "do arquivo mestre / etc / hosts (ex: remotehost: / etc / hosts).

O específico para recuperar essas informações é diferente, dependendo do que está disponível para você.

Um exemplo: no seu shell, você poderia fazê-lo manualmente da seguinte forma: (isso pressupõe que todo o arquivo / etc / hosts contenha o mesmo separador, que é uma linha que corresponde ao regexp "zesep":

export zesep='# before:local after:global .*'
   #this allows you to complete the line in each /etc/hosts with non-global informations!

awk "/${zesep}/,0 { continue } 1 { print }" </etc/hosts >/etc/newlocalhosts 
ssh user@remotehost 'cat /etc/hosts' | awk "/${zesep}/,0 { print } " >> /etc/newlocalhosts

E então substitua / etc / hosts com / etc / newlocalhosts UMA VEZ QUE ESTEJA CERTO de que o novo está correto (cuidado: verifique se o ssh estava ok, por exemplo, pois ele pode falhar se a rede falhar!). Se estiver correto, você pode:

cat /etc/newlocalhosts > /etc/hosts  #this will keep the settings (mode, etc) of /etc/hosts but replace its content. 
    
por 21.12.2012 / 16:25
0

Usando links simbólicos tradicionais, isso não é possível. Você está procurando algum tipo de software de gerenciamento de configuração, como Puppet ou cfengine, para enviar / etc / hosts ao atualizá-lo.

    
por 21.12.2012 / 16:26

Tags