README.md

# liaison
> Clustering and auto-reconnection of elixir nodes

Liaison aims to allow simple configuration to ensure that nodes are, and remain, connected

## Installation
```elixir
def deps do
    [
        {:liaison, "~> 0.1"}
    ]
end
```

## Configuration

```elixir
config :liaison,
    strategies: [
        [
            # connect via epmd
            strategy: Liaison.Strategy.Epmd,
            # A list of nodes to connect to. See node expansion
            nodes: []
            # number of seconds between polling a connection attempt
            reconnect_period: 10
        ]
    ]
```

## Node expansion
Node expansion makes connecting to other nodes easier.
Any of the following can be used with `nodes`

All formats can be either `String.t() | atom()`

| description                   | format                            | expansion         |  
| :---------------------------: | :-------------------------------: | :---------------: |
| simple shortname              | `name`                            | :name@localhost   |
| simple longname               | `name@host`                       | :name@host        |
| simple ip longname            | `name@a.b.c.d`                    | :"name@a.b.c.d    |
| simple component shortname    | `%{name: name}`                   | :name@localhost   | 
| random 6 digit shortname      |`%{name: :random}`                 | :2ndel6@localhost |
| random n digit shortname      | `%{name: [random: 3]}`            | :2fk@localhost    |
| component shortname           | `%{name: name, host: :shortname}` | :name@localhost   |
| component longname            | `%{name: name, host: :longname}`  | :name@w.x.y.z     |
| component fullname            | `%{name: name, host: host}`       | :name@host        |
| component ip fullname         | `%{name: name, host: a.b.c.d}`    | :"name@a.b.c.d    |

## Debug logging
To enable debug logging, add `debug: true` to your config

## Testing
If you are having trouble testing the module, ensure that epmd is started `epmd -daemon`, or
`iex --sname name` then exit