[erlang-questions] use inetrc to add entries to perceived /etc/hosts

Philip Müller <>
Tue Oct 4 14:14:45 CEST 2011


Hi everybody,

we are working on a distributed erlang project. We want to have as little  
dependencies on specific infrastructure as possible.

This is why we assume that

1. There is no DNS server running providing a naming service.
2. Entries in /etc/hosts on the node hosts are insufficient to provide  
naming for all other node hosts.

We need to make it possible for all hosts to reach each other and to start  
all nodes from a central host. We could start all nodes via ssh,  
identifying hosts via IP addresses, but as we understand it slave:start/1  
is made for this job and only works with hostnames.

Searching for a solution we stumbled across "-kernel inetrc". The idea is  
to scp an inetrc to all hosts and then start nodes with slave:start and  
get them to read their local inetrc on startup.

We tried starting a node locally with the following command:

> erl -rsh ssh -sname test -kernel inetrc '"./erl_inetrc"'

For the contents of erl_inetrc we tried the following two solutions, but  
didn't get it to work.
Running slave:start(host1). on host2 always gave the following error:
> {error,timeout}
But a simple "ssh 192.168.2.100" works.

1. everything in erl_inetrc

erl_inetrc:
> {host, {192,168,2,100}, ["host1"]}.
> {host, {192,168,2,101}, ["host2"]}.

2. an additional hosts file

erl_inetrc:
> {file, hosts, "./hosts"}.

hosts file:
> 192.168.2.100 host1
> 192.168.2.101 host2

Any ideas what we did wrong?

Best Regards
  Florian Grabbe
  Philip Müller



More information about the erlang-questions mailing list