
Eu tenho um VCS rodando no Debian como servidor de produção e, devido a alguns problemas de hipervisor, ele teve que ser reinicializado/migrado/atualizado várias vezes na semana passada.
Como estou executando meu aplicativo usando contêineres docker, não posso simplesmente passar localhost
para que ele se conecte ao meu postgres local, então estou usando o ens2
ip.
ens2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.12.174.3 netmask 255.255.255.254 broadcast 10.12.174.3
inet6 fe80::dc1c:14ff:fe51:5002 prefixlen 64 scopeid 0x20<link>
inet6 2001:bc8:4740:205::1 prefixlen 127 scopeid 0x0<global>
ether de:1c:14:51:50:02 txqueuelen 1000 (Ethernet)
RX packets 37139 bytes 4801851 (4.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 39791 bytes 35291408 (33.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Mas a cada reinicialização esse ip muda, e eu tenho que alterá-lo manualmente em env vars para que meu aplicativo possa acessar o banco de dados novamente, o que tenho certeza que você concordará que não é muito prático.
Então aqui está minha pergunta: existe uma maneira de atribuir automaticamente um alias, parecido com localhost
, a esta interface específica?
Acho que ainda posso tentar analisar a ifconfig
saída, mas prefiro pedir primeiro uma solução real
Responder1
DNS.
Mantenha um registro para o aplicativo usar, talvez appdb.prod.example.org
. Como este é um nome de serviço, considere criar um CNAME para o host que o executa atualmente.
Atualize um nome no DNS sempre que um host obtiver um IP. Por exemplo, registro AAAA chamado container1.example.org
contendo 2001:bc8:4740:205::1
. Como exatamente fazer isso depende do seu esquema de numeração e da configuração do DNS. IPs estáticos podem ser inseridos assim que forem alocados. Ganchos DHCP podem ser usados para atualizar o DNS. E existe software para monitorar cada interface em busca de alterações de IP e fazer uma nsupdate, como autoddns.
Não use ifconfig no Linux, nem para novos scripts.Está obsoleto há pelo menos 11 anos.
Responder2
Sempre poderia usar:
alias ip="hostname -I"