Refactor netdata to use docker_compose directive & expose configs #80
|
@ -49,6 +49,7 @@ hedgedoc:
|
||||||
|
|
||||||
netdata:
|
netdata:
|
||||||
domain: "netdata.{{ base_domain }}"
|
domain: "netdata.{{ base_domain }}"
|
||||||
|
volume_folder: "{{ volume_root_folder }}/netdata"
|
||||||
|
|
||||||
docker_registry:
|
docker_registry:
|
||||||
domain: "docker.{{ base_domain }}"
|
domain: "docker.{{ base_domain }}"
|
||||||
|
|
|
@ -1,27 +1,59 @@
|
||||||
---
|
---
|
||||||
|
- name: create netdata volume folders
|
||||||
|
file:
|
||||||
|
name: "{{ netdata.volume_folder }}/{{ volume }}"
|
||||||
|
state: directory
|
||||||
benjaoming marked this conversation as resolved
Outdated
|
|||||||
|
loop:
|
||||||
|
- "config"
|
||||||
|
- "lib"
|
||||||
|
- "cache"
|
||||||
|
loop_control:
|
||||||
|
loop_var: volume
|
||||||
|
|
||||||
- name: setup netdata docker container for system monitoring
|
- name: "setup netdata for system monitoring"
|
||||||
docker_container:
|
docker_compose:
|
||||||
name: netdata
|
project_name: "netdata"
|
||||||
image: netdata/netdata
|
pull: "yes"
|
||||||
restart_policy: unless-stopped
|
definition:
|
||||||
|
services:
|
||||||
|
netdata:
|
||||||
|
image: "netdata/netdata"
|
||||||
|
restart: "unless-stopped"
|
||||||
hostname: "hevonen.servers.{{ base_domain }}"
|
hostname: "hevonen.servers.{{ base_domain }}"
|
||||||
capabilities:
|
cap_add:
|
||||||
- SYS_PTRACE
|
- SYS_PTRACE
|
||||||
security_opts:
|
security_opt:
|
||||||
- apparmor:unconfined
|
- apparmor:unconfined
|
||||||
volumes:
|
volumes:
|
||||||
- /proc:/host/proc:ro
|
- "{{ netdata.volume_folder }}/config:/etc/netdata"
|
||||||
benjaoming
commented
Burde være Burde være `ro` ?
graffen
commented
Korrekt, fikser! Korrekt, fikser!
graffen
commented
Hov, nej... for så kan containeren ikke selv skrive til den første gang. Jeg overvejede at gzip'e hele config træet og lægge det med i ansible men jeg er i tvivl om, hvor pænt jeg synes, det er. Jeg er åben for forslag/diskussioner :-) Hov, nej... for så kan containeren ikke selv skrive til den første gang. Jeg overvejede at gzip'e hele config træet og lægge det med i ansible men jeg er i tvivl om, hvor pænt jeg synes, det er. Jeg er åben for forslag/diskussioner :-)
benjaoming
commented
Er det ikke meget nice at have konfigurationen vedligeholdt i git? Det vil gøre vores setup mere "reproducible". Hvis konfigrationsfilen er implicit (generet automatisk), vil det ved opdateringer af contianer-image blive uigennemskueligt, hvilken runtime konfigurationsfil, der eksisterer? Er det ikke meget nice at have konfigurationen vedligeholdt i git? Det vil gøre vores setup mere "reproducible". Hvis konfigrationsfilen er implicit (generet automatisk), vil det ved opdateringer af contianer-image blive uigennemskueligt, hvilken runtime konfigurationsfil, der eksisterer?
graffen
commented
Som det er nu gør vi ikke rigtigt noget ved den config fil, det hele kører bare med default settings. Det var mest for at holde nogenlunde vores konvention om at volumes ligger det samme sted. Vi kan aftale, at hvis vi nogensinde retter i den så sørger vi for at den kommer under versionskontrol - det er lidt det vi har gjort med de andre containere der kræver configfiler med customiseringer. Som det er nu gør vi ikke rigtigt noget ved den config fil, det hele kører bare med default settings. Det var mest for at holde nogenlunde vores konvention om at volumes ligger det samme sted. Vi kan aftale, at hvis vi nogensinde retter i den så sørger vi for at den kommer under versionskontrol - det er lidt det vi har gjort med de andre containere der kræver configfiler med customiseringer.
|
|||||||
- /sys:/host/sys:ro
|
- "{{ netdata.volume_folder }}/lib:/var/lib/netdata"
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- "{{ netdata.volume_folder }}/cache:/var/cache/netdata"
|
||||||
|
- "/etc/passwd:/host/etc/passwd:ro"
|
||||||
|
- "/etc/group:/host/etc/group:ro"
|
||||||
|
- "/proc:/host/proc:ro"
|
||||||
|
- "/sys:/host/sys:ro"
|
||||||
|
- "/etc/os-release:/host/etc/os-release:ro"
|
||||||
networks:
|
networks:
|
||||||
- name: external_services
|
- external_services
|
||||||
env:
|
- docker_proxy
|
||||||
|
environment:
|
||||||
VIRTUAL_HOST : "{{ netdata.domain }}"
|
VIRTUAL_HOST : "{{ netdata.domain }}"
|
||||||
LETSENCRYPT_HOST: "{{ netdata.domain }}"
|
LETSENCRYPT_HOST: "{{ netdata.domain }}"
|
||||||
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
|
LETSENCRYPT_EMAIL: "{{ letsencrypt_email }}"
|
||||||
PGID: "999"
|
PGID: "999"
|
||||||
|
DOCKER_HOST: "proxy:2375"
|
||||||
labels:
|
labels:
|
||||||
com.ouroboros.enable: "true"
|
com.ouroboros.enable: "true"
|
||||||
|
|
||||||
|
proxy:
|
||||||
|
image: "tecnativa/docker-socket-proxy"
|
||||||
|
volumes:
|
||||||
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||||
|
environment:
|
||||||
|
CONTAINERS : 1
|
||||||
|
networks:
|
||||||
|
- docker_proxy
|
||||||
|
networks:
|
||||||
|
docker_proxy:
|
||||||
|
external_services:
|
||||||
|
external: true
|
||||||
|
|
Kan man begrænse ejerskab på denne folder?
Det er ikke noget vi gør på nogen af de andre services... men vi skal i det hele taget nok have givet vores sikkerhedssetup en overhaling tror jeg.
Helt sikkert, det giver mening at gøre med en anden task også.. så ejerskabet ikke bare sættess ved oprettelse af folderen, men også gentages ved hver playbook run 👍