2019-08-24 10:55:56 +00:00
|
|
|
# Ansible role: Docker Swarm
|
2021-11-22 09:05:06 +00:00
|
|
|
|
2018-12-22 13:55:51 +00:00
|
|
|
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://framagit.org/artifaille/ansible-role-docker/blob/master/LICENSE)
|
|
|
|
|
2019-08-24 10:55:56 +00:00
|
|
|
Install and configure docker with swarm
|
2018-12-22 13:55:51 +00:00
|
|
|
|
|
|
|
## Requirements
|
|
|
|
|
2021-11-22 09:05:06 +00:00
|
|
|
* Ansible >= 2.10
|
|
|
|
* Debian Bullseye
|
2018-12-22 13:55:51 +00:00
|
|
|
|
|
|
|
## Role variables
|
|
|
|
|
2019-08-24 10:55:56 +00:00
|
|
|
* `docker_swarm_manager` - set the cluster role (default: `false`)
|
|
|
|
* `docker_advertise_addr` - listen address
|
|
|
|
* `docker_join_token` - join token for slave node
|
|
|
|
* `docker_remote_addrs` - manager addresses for slave node
|
2019-03-17 21:43:20 +00:00
|
|
|
* `docker_networks` - array with the docker networks
|
|
|
|
|
|
|
|
```
|
2019-08-24 10:55:56 +00:00
|
|
|
- name: proxy
|
|
|
|
config:
|
|
|
|
- gateway: 192.168.0.1
|
|
|
|
subnet: 192.168.0.0/16
|
|
|
|
iprange: 192.168.0.0/16
|
|
|
|
state: present
|
2019-03-17 21:43:20 +00:00
|
|
|
```
|
|
|
|
|
2019-08-24 10:55:56 +00:00
|
|
|
* `docker_services` - array with the service to manage
|
2018-12-22 13:55:51 +00:00
|
|
|
|
|
|
|
```
|
2019-08-24 10:55:56 +00:00
|
|
|
- name: wordpress
|
|
|
|
image: wordpress:latest
|
|
|
|
args:
|
|
|
|
- '--api'
|
|
|
|
mounts:
|
|
|
|
- source: /opt/data
|
|
|
|
target: /usr/local/data
|
|
|
|
type: bind
|
|
|
|
networks:
|
|
|
|
- net
|
|
|
|
publish:
|
|
|
|
- published_port: 80
|
|
|
|
target_port: 8000
|
|
|
|
replicas: 3
|
|
|
|
limits:
|
|
|
|
cpus: 0.5
|
|
|
|
memory: 100M
|
|
|
|
env:
|
|
|
|
WORDPRESS_DB_HOST: db:3306
|
|
|
|
WORDPRESS_DB_USER: wordpress
|
|
|
|
WORDPRESS_DB_PASSWORD: wordpress
|
|
|
|
container_labels:
|
|
|
|
region: FR
|
|
|
|
state: present
|
2018-12-22 13:55:51 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## How to use
|
|
|
|
|
|
|
|
* Install:
|
|
|
|
|
|
|
|
```
|
|
|
|
- hosts: server
|
|
|
|
roles:
|
|
|
|
- docker
|
|
|
|
```
|
|
|
|
|
|
|
|
## Development
|
2019-08-24 10:55:56 +00:00
|
|
|
|
2018-12-22 13:55:51 +00:00
|
|
|
### Test syntax with yamllint
|
|
|
|
|
|
|
|
* install `python` and `python-pip`
|
|
|
|
* install yamllint `pip install yamllint`
|
|
|
|
* run `yamllint .`
|
|
|
|
|
|
|
|
### Test syntax with ansible-lint
|
|
|
|
|
|
|
|
* install `python` and `python-pip`
|
|
|
|
* install yamllint `pip install ansible-lint`
|
|
|
|
* run `ansible-lint .`
|
|
|
|
|
|
|
|
### Tests with docker
|
|
|
|
|
2019-08-24 10:55:56 +00:00
|
|
|
* install ruby, vagrant and virtualbox
|
2018-12-22 13:55:51 +00:00
|
|
|
* install bundler `gem install bundler`
|
|
|
|
* install dependencies `bundle install`
|
|
|
|
* run the tests `kitchen test`
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
```
|
|
|
|
Copyright (c) 2018 Adrien Waksberg
|
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
```
|