kuon

kuon

Edeliver custom commands

I use edeliver for deployment and it works great.

I’d like to be able to extend edeliver to run custom commands, for example:

mix edeliver console

would do something like this:

$ ssh deploy-host
# /approot/bin/myapp remote_console

In ruby apps, I can juste write a capistrano script, I wonder how to approach this with my elixir apps.

First Post!

bharendt

bharendt

Edeliver Core Team

Yes, this is possible. If you create a bash script at .deliver/strategies/erlang-console containing a run() function and an optional help() function you should be able to run edeliver console. If you want to pass custom parameters, you can add a .deliver/help script file implementing an accepts_custom_command_argument() function to which the command is passed as first and the argument as second parameter and which should return 0 for accepted arguments, otherwise 1. The output of the optional print_custom_commands_help() function will be appended to the edeliver help output.

Last Post!

kuon

kuon

I came up with the following:

#!/usr/bin/env bash

REQUIRED_CONFIGS+=("APP")
REQUIRED_CONFIGS+=("NODE_ENVIRONMENT")
REQUIRED_CONFIGS+=("NODE_ACTION")

NODE_ACTION="remote_console"
NODE_ENVIRONMENT=$DEPLOY_ENVIRONMENT || "staging"
: ${NODE_ENVIRONMENT:="staging"}


source ${BASE_PATH}/strategies/erlang-node-execute

run() {
  # ssh setup
  authorize_hosts

  local _node_command=$NODE_ACTION

  # take the first node only
  local _nodes=(${NODES// / })
  local _node=${_nodes[0]}
  __execute_node_command "single_node" "$_node" "$_node_command"
}

Which works, except for one details, the erlang nodename is modified, and I end up in
iex(remsh3379d012-kura@127.0.0.1)1> instead of iex(kura@127.0.0.1)1>.

I was able to trace the problem to the absence of TTY. If my app is called without a TTY, erlang seems to randomize the node name.

I can just replace __execute_node_command with a direct ssh call now that I am more familiar with the edeliver internals. But I wonder if maybe this is a bug somehow, because I noticed that ssh was called with -t from __execute_node_command.

Where Next?

Popular in Questions Top

minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
PeterCarter
There are pre-rolled solutions for other frameworks that do work. However, Phoenix does not seem to have these. Have people had good expe...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New

Other popular topics Top

vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement