- Notifications
You must be signed in to change notification settings - Fork51
HashNuke/ansible-elixir-stack
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Tool to deployElixir &Phoenix apps to servers.
Docs: [Configuration], [Hot code-reloading], [prod.secret.exs file], [Logs]
- 1-command setup & deploys
- Ships with Postgres support
- Automatically creates a
prod.secret.exs
file - Deploy multiple hobby apps on a $5 DigitalOcean server
- Custom domains
- Hot code-reloading usingexrm
- Monitoring & automatic restarts using
monit
- Organized as an Ansible role, BUT requires no knowledge of Ansible
To deploy to Heroku, use theHeroku Elixir buildpack instead.
$ pip install ansible$ ansible-galaxy install HashNuke.elixir-stack# assuming your SSH key is called `id_rsa`# run this everytime you start your computer$ ssh-add~/.ssh/id_rsa
If the above commands fail, try with
sudo
.For Mac OS X, Ansible is also available on homebrew.
1.) Addexrm as your project's dependency in mix.exs
defpdepsdo[{:exrm,"~> 0.18.1"}]end
2.) In your project dir, run following command:
$ curl -L http://git.io/ansible-elixir-stack.sh| bash
FOLLOW INSTRUCTIONS OF ABOVE COMMAND
Checkout thedocumentation on configuration options
Assuming you have root SSH access to the server
$ ansible-playbook playbooks/setup.yml
$ ansible-playbook playbooks/deploy.yml
By default the application is restarted on each deploy.Read how to enable hot code-reloading.
Is this only meant for small $5 servers?
Should fit servers of any size. In that case you could also increase the swap and npmHow to have different set of servers for staging and production?
Use theinventory
file as a template and maintain different inventory files for staging and production. Let's say your staging inventory file is calledstaging.inventory
, then you could doansible-playbook setup.yml -i staging.inventory
(and similar for deploy). Notice the-i
switch.B/w if you are going this way, you probably should learn Ansible or hire someone who knows it
About
Ansible role to setup server with Elixir & Postgres to deploy apps