An open API service indexing awesome lists of open source software.

https://github.com/prometherion/ansible-swarm-provisioner

Just a simple Ansible playbook in order to do provisioning of Docker Swarm nodes on AWS
https://github.com/prometherion/ansible-swarm-provisioner

ansible aws docker docker-swarm docker-swarm-cluster

Last synced: over 1 year ago
JSON representation

Just a simple Ansible playbook in order to do provisioning of Docker Swarm nodes on AWS

Awesome Lists containing this project

README

          

# swarm-provisioner
Just a simple Ansible playbook in order to do provisioning of Docker Swarm nodes on AWS.

Why?
---
I'm setting up a Docker Swarm Cluster inside AWS and I need do all the basic stuff with specific constraints related to
cluster types. I could do all that kind of stuff with simple bash scripts using the AWS EC2 User Data: by the way I
wanted to practicing with Ansible and... here we are!

How to use
---
`Hosts files`

Provisioning should be executed on local machine: nodes should be unreachable via remote SSH (or at least there should
be a Security Group with port #22 open only to your IP address).

This playbook was designed to be executed on boot, so it will run on localhost. Feel free to edit `hosts` file but keep
in mind that provisioning should be automated.

### Setting up a master

Just run the playbook with the command `ansible-playbook -i hosts -c local master.yml -e engine_role={YOUR_ROLE}`.

- `engine_role`: refers to Docker engine label you would like to attach to node: maybe you want to keep tidy and clean
your master node avoiding the run of production containers.

Remember to keep somewhere the swarm token and address listener in order to enable worker join!

### Setting up a worker

Just run the playbook with the command `ansible-playbook -i hosts -c local worker.yml -e engine_role={YOUR_ROLE} -e
token={SWARM_TOKEN} -e address={SWARM_ADDRESS}`.

- `engine_role`: refers to Docker engine label you would like to attach to node: this is useful to create constraints
over cluster groups (you can run only some kinds of services over a specific Auto Scaling Group, maybe
for performances or in order to make easier the scale down of a service).

- `token`: the Swarm cluster Token obtained via Master election.

- `address`: the Swarm cluster master address obtained via Master election.

Dependencies
---
In case of provisioning Python and PIP should be already installed in order to download and setup Ansible.

JFI
---
The Ansible Playbook is optimized for AWS Linux distribution based on `YUM` package manager: you can edit in order to
use `apt` or whatever you want: feel free to PR!