forked from FF-RGB/ansible
Add yanic role (mostly copy&paste from Bremen)
This commit is contained in:
parent
6f071c524a
commit
6cccf81de2
7
roles/go/tasks/main.yml
Normal file
7
roles/go/tasks/main.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Download and install go
|
||||||
|
unarchive: src=https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz dest=/usr/local copy=no
|
||||||
|
|
||||||
|
- name: Configure go
|
||||||
|
template: src=go.sh dest=/etc/profile.d/go.sh
|
2
roles/go/templates/go.sh
Normal file
2
roles/go/templates/go.sh
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export GOPATH=/opt/go
|
||||||
|
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
|
35
roles/yanic/defaults/main.yml
Normal file
35
roles/yanic/defaults/main.yml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
yanic_publisher: false
|
||||||
|
yanic_respondd: true
|
||||||
|
yanic_respondd_collect_interval: "1m"
|
||||||
|
yanic_respondd_interface: "br-{{ site_code }}"
|
||||||
|
|
||||||
|
yanic_webserver: false
|
||||||
|
yanic_webserver_bind: "127.0.0.1:8080"
|
||||||
|
yanic_webserver_webroot: "/var/www/html/meshviewer"
|
||||||
|
|
||||||
|
yanic_nodes: true
|
||||||
|
yanic_nodes_state_path: "/var/lib/yanic/yanic.json"
|
||||||
|
yanic_nodes_save_interval: "5s"
|
||||||
|
yanic_nodes_offline_after: "10m"
|
||||||
|
yanic_nodes_prune_after: "7d"
|
||||||
|
|
||||||
|
yanic_meshviewer_version: 2
|
||||||
|
yanic_meshviewer_path: "/var/www/html/meshviewer/data"
|
||||||
|
yanic_meshviewer_nodes: "{{yanic_meshviewer_path}}/nodes.json"
|
||||||
|
yanic_meshviewer_graph: "{{yanic_meshviewer_path}}/graph.json"
|
||||||
|
|
||||||
|
yanic_database_delete_after: "7d"
|
||||||
|
yanic_database_delete_interval: "1h"
|
||||||
|
|
||||||
|
yanic_socket:
|
||||||
|
- enable: false
|
||||||
|
type: unix
|
||||||
|
address: "/var/lib/yanic/database.socket"
|
||||||
|
yanic_influxdb:
|
||||||
|
- enable: false
|
||||||
|
host: http://localhost:8086
|
||||||
|
database: ffhb
|
||||||
|
username: ""
|
||||||
|
password: ""
|
9
roles/yanic/handlers/main.yml
Normal file
9
roles/yanic/handlers/main.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
- name: Restart yanic
|
||||||
|
service: name=yanic state=restarted
|
||||||
|
|
||||||
|
- name: Restart yanic-publish
|
||||||
|
service: name=yanic-publish.timer state=restarted
|
||||||
|
|
||||||
|
- name: Reload systemd
|
||||||
|
command: systemctl daemon-reload
|
4
roles/yanic/meta/main.yml
Normal file
4
roles/yanic/meta/main.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- { role: go }
|
43
roles/yanic/tasks/main.yml
Normal file
43
roles/yanic/tasks/main.yml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Create users
|
||||||
|
user: name=yanic generate_ssh_key=yes ssh_key_type=rsa ssh_key_file=.ssh/id_rsa ssh_key_comment="yanic@{{inventory_hostname}}"
|
||||||
|
|
||||||
|
- name: Install yanic
|
||||||
|
shell: /usr/local/go/bin/go get -u github.com/FreifunkBremen/yanic/cmd/yanic
|
||||||
|
environment:
|
||||||
|
GOPATH: /opt/go
|
||||||
|
notify: Restart yanic
|
||||||
|
|
||||||
|
- name: Configure yanic
|
||||||
|
template: src=config.toml dest=/etc/yanic.conf
|
||||||
|
notify: Restart yanic
|
||||||
|
|
||||||
|
- name: Create directories
|
||||||
|
file: path={{ item }}/ state=directory owner=yanic
|
||||||
|
with_items:
|
||||||
|
- "{{ yanic_meshviewer_path }}"
|
||||||
|
- /var/lib/yanic
|
||||||
|
|
||||||
|
- name: Install system unit
|
||||||
|
template: src=yanic.service dest=/lib/systemd/system/yanic.service
|
||||||
|
notify:
|
||||||
|
- Reload systemd
|
||||||
|
- Restart yanic
|
||||||
|
|
||||||
|
- name: Enable yanic
|
||||||
|
service: name=yanic enabled=yes
|
||||||
|
|
||||||
|
- name: Install system publish unit
|
||||||
|
template: src={{item}} dest=/lib/systemd/system/{{item}}
|
||||||
|
when: yanic_publisher
|
||||||
|
with_items:
|
||||||
|
- yanic-publish.service
|
||||||
|
- yanic-publish.timer
|
||||||
|
notify:
|
||||||
|
- Reload systemd
|
||||||
|
- Restart yanic-publish
|
||||||
|
|
||||||
|
- name: Enable yanic-publish
|
||||||
|
service: name=yanic-publish.timer enabled=yes
|
||||||
|
when: yanic_publisher
|
43
roles/yanic/templates/config.toml
Normal file
43
roles/yanic/templates/config.toml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# {{ ansible_managed }}
|
||||||
|
[respondd]
|
||||||
|
enable = {{ yanic_respondd | ternary('true','false') }}
|
||||||
|
collect_interval = "{{ yanic_respondd_collect_interval }}"
|
||||||
|
interface = "{{ yanic_respondd_interface }}"
|
||||||
|
|
||||||
|
[webserver]
|
||||||
|
enable = {{ yanic_webserver | ternary('true','false') }}
|
||||||
|
bind = "{{ yanic_webserver_bind }}"
|
||||||
|
webroot = "{{ yanic_webserver_webroot }}"
|
||||||
|
|
||||||
|
[nodes]
|
||||||
|
enable = {{yanic_nodes | ternary('true','false') }}
|
||||||
|
state_path = "{{yanic_nodes_state_path}}"
|
||||||
|
save_interval = "{{yanic_nodes_save_interval}}"
|
||||||
|
offline_after = "{{yanic_nodes_offline_after}}"
|
||||||
|
prune_after = "{{yanic_nodes_prune_after}}"
|
||||||
|
|
||||||
|
|
||||||
|
[meshviewer]
|
||||||
|
version = {{yanic_meshviewer_version}}
|
||||||
|
nodes_path = "{{yanic_meshviewer_nodes}}"
|
||||||
|
graph_path = "{{yanic_meshviewer_graph}}"
|
||||||
|
|
||||||
|
[database]
|
||||||
|
delete_after = "{{ yanic_database_delete_after }}"
|
||||||
|
delete_interval = "{{ yanic_database_delete_interval }}"
|
||||||
|
|
||||||
|
{% for db in yanic_influxdb %}
|
||||||
|
[[database.connection.influxdb]]
|
||||||
|
enable = {{ db.enable | ternary('true','false') }}
|
||||||
|
address = "{{ db.host }}"
|
||||||
|
database = "{{ db.database }}"
|
||||||
|
username = "{{ db.username }}"
|
||||||
|
password = "{{ db.password }}"
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% for db in yanic_socket %}
|
||||||
|
[[database.connection.socket]]
|
||||||
|
enable = {{ db.enable | ternary('true','false') }}
|
||||||
|
type = "{{ db.type }}"
|
||||||
|
address = "{{ db.address }}"
|
||||||
|
{% endfor %}
|
10
roles/yanic/templates/yanic-publish.service
Normal file
10
roles/yanic/templates/yanic-publish.service
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Publish data of yanic on downloads server
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/rsync --del -rt {{ yanic_nodes_path }}/ downloads@webserver.bremen.freifunk.net:data/yanic
|
||||||
|
User=yanic
|
||||||
|
Type=oneshot
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
9
roles/yanic/templates/yanic-publish.timer
Normal file
9
roles/yanic/templates/yanic-publish.timer
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Publish data of yanic on downloads server every minute
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=15min
|
||||||
|
OnUnitActiveSec=1min
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
13
roles/yanic/templates/yanic.service
Normal file
13
roles/yanic/templates/yanic.service
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=yanic
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=yanic
|
||||||
|
ExecStart=/opt/go/bin/yanic -config /etc/yanic.conf
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5s
|
||||||
|
Environment=PATH=/usr/bin:/usr/local/bin
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user