SSHKit
SSHKit is an Elixir toolkit for performing tasks on one or more servers, built on top of Erlang’s SSH application.
Documentation for SSHKit is available online.
Usage (work in progress)
SSHKit is designed to enable server task automation in a structured and repeatable way, e.g. in the context of deployment tools:
hosts = ["1.eg.io", {"2.eg.io", port: 2222}]
context =
SSHKit.context(hosts)
|> SSHKit.path("/var/www/phx")
|> SSHKit.user("deploy")
|> SSHKit.group("deploy")
|> SSHKit.umask("022")
|> SSHKit.env(%{"NODE_ENV" => "production"})
:ok = SSHKit.upload(context, ".", recursive: true)
:ok = SSHKit.run(context, "yarn install")
The SSHKit module documentation has more guidance and examples for the DSL.
If you need more control, take a look at the SSHKit.SSH and SSHKit.SCP
modules.
Installation
You can use SSHKit in your projects in two steps:
- Add
sshkitto yourmix.exsdependencies:
def deps do
[{:sshkit, "~> 0.0.2"}]
end
- List
sshkitin your application dependencies:
def application do
[applications: [:sshkit]]
end
Testing
As usual run mix test to run the tests.
We also have functional tests to test “the real thing” on a docker machine.
Therefore, you’ll need to have docker installed (also docker-machine if you’re on OS X/Windows).
Since these functional tests take precious time. You may want to not run them during development:
mix test --exclude functional
Contributing
We welcome everyone to contribute to SSHKit and help us tackle existing issues!
Use the issue tracker for bug reports or feature requests. Open a pull request when you are ready to contribute.
If you are planning to contribute documentation, please check the best practices for writing documentation.
License
SSHKit source code is released under the MIT License. Check the LICENSE file for more information.