feat: First release
Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
parent
6eb187af24
commit
cc2db9930b
7 changed files with 125 additions and 1 deletions
42
README.md
42
README.md
|
@ -1,3 +1,43 @@
|
||||||
# ansible-role-coller
|
# ansible-role-coller
|
||||||
|
|
||||||
Ansible role to manage a coller instance
|
Ansible role to manage a [coller](https://git.riou.xyz/jriou/coller) instance.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Clone the repository in your local Ansible roles directory:
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://git.riou.xyz/jriou/ansible-role-coller.git ~/.ansible/roles/coller
|
||||||
|
```
|
||||||
|
|
||||||
|
See [Storing and finding
|
||||||
|
roles](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html#storing-and-finding-roles).
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
See [Variable
|
||||||
|
precedence](https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_variables.html#ansible-variable-precedence)
|
||||||
|
to find where you should put your own variables.
|
||||||
|
|
||||||
|
Then define at least `coller_db_password` with a strong and secure password,
|
||||||
|
encrypted using
|
||||||
|
[ansible-vault](https://docs.ansible.com/ansible/latest/cli/ansible-vault.html).
|
||||||
|
|
||||||
|
See list of [default variables](defaults/main.yml).
|
||||||
|
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Example of a basic coller.yml playbook:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- hosts: coller
|
||||||
|
roles:
|
||||||
|
- coller
|
||||||
|
```
|
||||||
|
|
||||||
|
Then run the playbook:
|
||||||
|
|
||||||
|
```
|
||||||
|
ansible-playbook coller.yml
|
||||||
|
```
|
||||||
|
|
5
defaults/main.yml
Normal file
5
defaults/main.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
coller_config_dir: /etc/coller
|
||||||
|
coller_port: 8080
|
||||||
|
coller_manage_iptables: false
|
||||||
|
coller_allowed_sources: []
|
4
handlers/main.yml
Normal file
4
handlers/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
- name: save iptables
|
||||||
|
ansible.builtin.shell:
|
||||||
|
cmd: netfilter-persistent save
|
3
meta/main.yml
Normal file
3
meta/main.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
dependencies:
|
||||||
|
- role: geerlingguy.docker
|
43
tasks/main.yml
Normal file
43
tasks/main.yml
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
---
|
||||||
|
- name: download source code
|
||||||
|
ansible.builtin.git:
|
||||||
|
repo: https://git.riou.xyz/jriou/coller.git
|
||||||
|
dest: /opt/coller
|
||||||
|
|
||||||
|
- name: create directories
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
loop:
|
||||||
|
- "{{ coller_config_dir }}"
|
||||||
|
|
||||||
|
- name: create docker-compose file
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: docker-compose.yml.j2
|
||||||
|
dest: "{{ coller_config_dir }}/docker-compose.yml"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
|
||||||
|
- name: create configuration file
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content:
|
||||||
|
listen_address: '0.0.0.0'
|
||||||
|
dest: "{{ coller_config_dir }}/collerd.json"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0640"
|
||||||
|
|
||||||
|
- name: start service
|
||||||
|
community.docker.docker_compose_v2:
|
||||||
|
project_src: "{{ coller_config_dir }}"
|
||||||
|
files:
|
||||||
|
- docker-compose.yml
|
||||||
|
|
||||||
|
|
||||||
|
- name: manage iptables
|
||||||
|
when: coller_manage_iptables
|
||||||
|
ansible.builtin.include_tasks: manage-iptables.yml
|
16
tasks/manage-iptables.yml
Normal file
16
tasks/manage-iptables.yml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
---
|
||||||
|
- name: install packages
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: netfilter-persistent
|
||||||
|
|
||||||
|
- name: allow with iptables
|
||||||
|
ansible.builtin.iptables:
|
||||||
|
chain: INPUT
|
||||||
|
protocol: tcp
|
||||||
|
source: "{{ item }}"
|
||||||
|
destination_ports:
|
||||||
|
- "{{ coller_port }}"
|
||||||
|
jump: ACCEPT
|
||||||
|
comment: coller
|
||||||
|
loop: "{{ coller_allowed_sources }}"
|
||||||
|
notify: save iptables
|
13
templates/docker-compose.yml.j2
Normal file
13
templates/docker-compose.yml.j2
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
{{ ansible_managed | comment }}
|
||||||
|
services:
|
||||||
|
server:
|
||||||
|
image: coller:latest
|
||||||
|
build: /opt/coller
|
||||||
|
container_name: collerd
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "{{ coller_port }}:8080"
|
||||||
|
volumes:
|
||||||
|
- "{{ coller_config_dir }}/collerd.json:/etc/collerd.json:ro"
|
||||||
|
command: collerd -config /etc/collerd.json
|
Loading…
Add table
Add a link
Reference in a new issue