Search code examples
elixirexrm

How to Push a New Elixir Release on a Cluster Using exrm?


I do have a simple elixir app running on one node, exrm is doing his job properly by upgrading/downgrading it when needed.

I decided recently to create two nodes (it will be on two separates machines but i want to test it first on localhost)

So i read the following Chris McCord article

https://dockyard.com/blog/2016/01/28/running-elixir-and-phoenix-projects-on-a-cluster-of-nodes

and i have now two nodes,

[email protected]

and

[email protected]

with the following added to mix config

config :kernel,
  sync_nodes_optional: [:"[email protected]", :"[email protected]"],
  sync_nodes_timeout: 10000

I was used to do the following

mix release
ssh targethost mkdir deploy/releases/x.x.x
scp rel/sequence/releases/x.x.x/appname.tar.gz targethost:deploy/releases/x.x.x
ssh targethost ~/deploy/bin/appname upgrade x.x.x

May someone guide me on what to do to deploy upgrade/downgrade both nodes?

Kind regards,

Pierre


Solution

  • Exrm is a tool for packaging, but what you wanna is a tool for deploying.

    You should modified the nodename in vm.args during deploying. I use fabfile to do this.

    Or maybe you want it: deploying-elixir-applications-with-edeliver