crear enlace simbólico para máquina remota

2

Tengo 2 servidores Linux A y B que comparten un directorio común. Tengo que crear un enlace simbólico para el archivo / etc / hosts para cada servidor con un archivo común. cada vez que actualizo ese archivo común que comparten ambos servidores, pueden saber qué cambios en el archivo y actualizar / etc / hosts automáticamente. ¿Es posible usar un enlace simbólico o alguna otra opción?

Swapnil Sonawane
fuente

Respuestas:

2

En lugar de tener un enlace simbólico a un archivo de host (remoto), es mejor actualizar la copia local con la información del remoto. De esa manera, en caso de interrupción de la red, o si el host "maestro" está inactivo, todavía tiene el archivo local / etc / hosts.

Debería, en cada archivo local / etc / hosts, una "estructura" para separar información local y global.

ejemplo de archivo 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: ...........)

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

Y puede reemplazar el resto del archivo (siempre después de la línea "# before: local after: global ....") con la información "global", tomada de un archivo remoto dedicado a alojar la información global "validada" (ej .: remotehost: /etc/hosts_global_informations.master), o recuperado SOLO de la "parte global" del archivo maestro / etc / hosts (ej: remotehost: / etc / hosts).

Los específicos para recuperar esas informaciones son varios, dependiendo de lo que esté disponible para usted.

Un ejemplo: en su shell puede hacerlo manualmente como tal: (esto supone que todo el archivo / etc / hosts contiene el mismo separador, que es una línea que coincide con la expresión regular "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

Y luego reemplace / etc / hosts con / etc / newlocalhosts UNA VEZ QUE ESTÁ SEGURO de que el nuevo es correcto (tenga cuidado: compruebe que el ssh estaba bien, por ejemplo, ¡ya que podría fallar si la red falla!). Si es correcto, podría:

cat /etc/newlocalhosts > /etc/hosts  #this will keep the settings (mode, etc) of /etc/hosts but replace its content. 
Olivier Dulac
fuente
0

Usando enlaces simbólicos tradicionales, esto no es posible. Está buscando algún tipo de software de administración de configuración como Puppet o cfengine para expulsar / etc / hosts cuando lo actualiza.

John
fuente