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
|
2023-11-23 10:12:18 +00:00
|
|
|
* Debian Bookworm
|
2018-12-22 13:55:51 +00:00
|
|
|
|
|
|
|
## Role variables
|
|
|
|
|
2021-11-22 10:56:12 +00:00
|
|
|
* `swarm_manager` - set the cluster role (default: `false`)
|
|
|
|
* `swarm_advertise_addr` - listen address
|
|
|
|
* `swarm_join_token` - join token for slave node
|
|
|
|
* `swarm_remote_addrs` - manager addresses for slave node
|
|
|
|
* `swarm_networks` - array with the docker networks
|
2019-03-17 21:43:20 +00:00
|
|
|
|
|
|
|
```
|
2021-11-22 10:56:12 +00:00
|
|
|
proxy:
|
2019-08-24 10:55:56 +00:00
|
|
|
state: present
|
2019-03-17 21:43:20 +00:00
|
|
|
```
|
|
|
|
|
2021-11-22 10:56:12 +00:00
|
|
|
* `swarm_services` - hash with the service to manage
|
2018-12-22 13:55:51 +00:00
|
|
|
|
|
|
|
```
|
2021-11-22 10:56:12 +00:00
|
|
|
wordpress:
|
2019-08-24 10:55:56 +00:00
|
|
|
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
|
2023-12-15 10:36:55 +00:00
|
|
|
init: false
|
2019-08-24 10:55:56 +00:00
|
|
|
state: present
|
2018-12-22 13:55:51 +00:00
|
|
|
```
|
|
|
|
|
2021-11-23 15:43:51 +00:00
|
|
|
* `swarm_registry_logins` - hash with the registry logins
|
|
|
|
|
|
|
|
```
|
|
|
|
gitlab:
|
|
|
|
registry_url: registry.gitlab.com
|
|
|
|
registry_username: myaccount
|
|
|
|
registry_password: secret
|
|
|
|
user: www-data
|
|
|
|
```
|
|
|
|
|
2022-04-06 08:17:32 +00:00
|
|
|
* `swarm_proxy_url` - set a proxy url for http and https requests
|
|
|
|
* `swarm_proxy_ignore` - array with ignore host or subnet
|
|
|
|
|
|
|
|
```
|
|
|
|
- localhost
|
|
|
|
- 10.0.0.0/8
|
|
|
|
```
|
|
|
|
|
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
|
|
|
|
2021-11-22 10:56:12 +00:00
|
|
|
### Test with molecule and docker
|
2018-12-22 13:55:51 +00:00
|
|
|
|
2021-11-22 10:56:12 +00:00
|
|
|
* install [docker](https://docs.docker.com/engine/installation/)
|
|
|
|
* install `python3` and `python3-pip`
|
|
|
|
* install molecule and dependencies `pip3 install molecule 'molecule[docker]' docker ansible-lint testinfra yamllint`
|
|
|
|
* run `molecule test`
|
2018-12-22 13:55:51 +00:00
|
|
|
|
|
|
|
## 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.
|
|
|
|
```
|