feat: First release

Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
Julien Riou 2025-08-22 19:31:43 +02:00
parent 6eb187af24
commit cc2db9930b
Signed by: jriou
GPG key ID: 9A099EDA51316854
7 changed files with 125 additions and 1 deletions

View file

@ -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
View 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
View file

@ -0,0 +1,4 @@
---
- name: save iptables
ansible.builtin.shell:
cmd: netfilter-persistent save

3
meta/main.yml Normal file
View file

@ -0,0 +1,3 @@
---
dependencies:
- role: geerlingguy.docker

43
tasks/main.yml Normal file
View 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
View 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

View 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