add role service-bird-lg
This commit is contained in:
parent
1b6953bda9
commit
7f042e1292
15 changed files with 279 additions and 0 deletions
|
@ -10,6 +10,7 @@ common_repos:
|
|||
|
||||
http_meshviewer_prefix: map
|
||||
http_grafana_prefix: stats
|
||||
http_lookingglass_prefix: lg
|
||||
|
||||
prometheus_conf_main: prometheus/prometheus.yml.j2
|
||||
prometheus_opts: "--web.listen-address=localhost:9090"
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
- service-bird
|
||||
- service-bird-icvpn
|
||||
- service-bird-ffrl
|
||||
- service-bird-lg
|
||||
- service-bind-slave
|
||||
- service-respondd
|
||||
- service-nullmailer
|
||||
|
|
|
@ -29,5 +29,6 @@
|
|||
- service-fastd
|
||||
- service-fastd-backbone
|
||||
- service-bird
|
||||
- service-bird-lg
|
||||
- service-respondd
|
||||
- service-nullmailer
|
||||
|
|
13
roles/service-bird-lg/README.md
Normal file
13
roles/service-bird-lg/README.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Ansible role service-bird-lg
|
||||
|
||||
Diese Ansible role installiert und konfiguriert bird-lg.
|
||||
|
||||
## Benötigte Variablen
|
||||
|
||||
- Variable `http_lookingglass_prefix`
|
||||
- Variable `git_path`
|
||||
- Liste `meshes`
|
||||
- Variable `lg_path` (Rollen-Variable)
|
||||
- Variable `lg_user `(Rollen-Variable)
|
||||
- Variable `lg_url_external` (Rollen-Variable)
|
||||
- Variable `lg_url_internal `(Rollen-Variable)
|
19
roles/service-bird-lg/handlers/main.yml
Normal file
19
roles/service-bird-lg/handlers/main.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: reload systemd
|
||||
systemd:
|
||||
daemon_reload: yes
|
||||
|
||||
- name: restart bird-lg-proxy
|
||||
systemd:
|
||||
name: bird-lg-proxy
|
||||
state: restarted
|
||||
|
||||
- name: restart bird-lg-webservice
|
||||
systemd:
|
||||
name: bird-lg-webservice
|
||||
state: restarted
|
||||
|
||||
- name: restart nginx
|
||||
systemd:
|
||||
name: nginx
|
||||
state: restarted
|
4
roles/service-bird-lg/meta/main.yml
Normal file
4
roles/service-bird-lg/meta/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
dependencies:
|
||||
- { role: service-bird }
|
||||
- { role: service-nginx }
|
24
roles/service-bird-lg/tasks/lg-proxy.yml
Normal file
24
roles/service-bird-lg/tasks/lg-proxy.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
- name: write lgproxy.cfg
|
||||
template:
|
||||
src: lgproxy.cfg.j2
|
||||
dest: "{{ lg_path }}/lgproxy.cfg"
|
||||
notify:
|
||||
- restart bird-lg-proxy
|
||||
|
||||
- name: write systemd unit
|
||||
template:
|
||||
src: bird-lg-proxy.service.j2
|
||||
dest: "/etc/systemd/system/bird-lg-proxy.service"
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
notify:
|
||||
- reload systemd
|
||||
- restart bird-lg-proxy
|
||||
|
||||
- name: configure systemd unit
|
||||
systemd:
|
||||
name: bird-lg-proxy
|
||||
enabled: yes
|
||||
state: started
|
33
roles/service-bird-lg/tasks/lg-webservice.yml
Normal file
33
roles/service-bird-lg/tasks/lg-webservice.yml
Normal file
|
@ -0,0 +1,33 @@
|
|||
---
|
||||
- name: write lg.cfg
|
||||
template:
|
||||
src: lg.cfg.j2
|
||||
dest: "{{ lg_path }}/lg.cfg"
|
||||
notify:
|
||||
- restart bird-lg-webservice
|
||||
|
||||
- name: write vhost lookingglass.conf
|
||||
template:
|
||||
src: lookingglass_vhost.conf.j2
|
||||
dest: /etc/nginx/conf.d/lookingglass.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
notify: restart nginx
|
||||
|
||||
- name: write systemd unit
|
||||
template:
|
||||
src: bird-lg-webservice.service.j2
|
||||
dest: "/etc/systemd/system/bird-lg-webservice.service"
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
notify:
|
||||
- reload systemd
|
||||
- restart bird-lg-webservice
|
||||
|
||||
- name: configure systemd unit
|
||||
systemd:
|
||||
name: bird-lg-webservice
|
||||
enabled: yes
|
||||
state: started
|
42
roles/service-bird-lg/tasks/main.yml
Normal file
42
roles/service-bird-lg/tasks/main.yml
Normal file
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
- name: clone repo
|
||||
git:
|
||||
repo: "https://github.com/sileht/bird-lg.git"
|
||||
dest: "{{ lg_path }}"
|
||||
version: master
|
||||
force: yes
|
||||
|
||||
- name: install dependencies
|
||||
package:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
loop:
|
||||
- python-flask
|
||||
- python-dnspython
|
||||
- python-pydot
|
||||
- python-memcache
|
||||
- graphviz
|
||||
- whois
|
||||
- traceroute
|
||||
|
||||
- name: create system user
|
||||
user:
|
||||
name: "{{ lg_user }}"
|
||||
home: "{{ lg_path }}"
|
||||
groups: bird
|
||||
shell: /bin/false
|
||||
|
||||
- name: create log dir
|
||||
file:
|
||||
path: "/var/log/bird-lg"
|
||||
state: directory
|
||||
owner: "{{ lg_user }}"
|
||||
group: "{{ lg_user }}"
|
||||
|
||||
- name: configure lg-proxy
|
||||
when: ffmwu_server_type == "gateway"
|
||||
include_tasks: lg-proxy.yml
|
||||
|
||||
- name: configure lg-webservice
|
||||
when: ffmwu_server_type == "monitoring"
|
||||
include_tasks: lg-webservice.yml
|
31
roles/service-bird-lg/templates/bird-lg-proxy.service.j2
Normal file
31
roles/service-bird-lg/templates/bird-lg-proxy.service.j2
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Copyright (C) 2015-2018 Alsace Réseau Neutre
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# Debian GNU/Linux: store this in /etc/systemd/system/
|
||||
|
||||
|
||||
[Unit]
|
||||
Description=BIRD Looking-Glass proxy
|
||||
After=bird.service bird6.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/python {{ lg_path }}/lgproxy.py
|
||||
User={{ lg_user }}
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -0,0 +1,31 @@
|
|||
# Copyright (C) 2015-2018 Alsace Réseau Neutre
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# Debian GNU/Linux: store this in /etc/systemd/system/
|
||||
|
||||
|
||||
[Unit]
|
||||
Description=BIRD Looking-Glass service
|
||||
After=nginx.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User={{ lg_user }}
|
||||
ExecStart=/usr/bin/python {{ lg_path }}/lg.py
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
34
roles/service-bird-lg/templates/lg.cfg.j2
Normal file
34
roles/service-bird-lg/templates/lg.cfg.j2
Normal file
|
@ -0,0 +1,34 @@
|
|||
DEBUG = False
|
||||
LOG_FILE="/var/log/bird-lg/lg-webservice.log"
|
||||
LOG_LEVEL="WARNING"
|
||||
|
||||
DOMAIN = "ffmwu.org"
|
||||
|
||||
BIND_IP = "127.0.0.1"
|
||||
BIND_PORT = 5001
|
||||
|
||||
PROXY = {
|
||||
{% for host in groups["ffmwu-gateways"] %}
|
||||
"{{ host.rsplit('.freifunk-mwu.de')[0] }}" : 5000,
|
||||
{% endfor %}
|
||||
}
|
||||
|
||||
# Used for bgpmap
|
||||
ROUTER_IP = {
|
||||
{% for host in groups["ffmwu-gateways"] %}
|
||||
"{{ host.rsplit('.freifunk-mwu.de')[0] }}" : [ "{{ bgp_ipv4_transfer_net | ipaddr('net') | ipaddr(hostvars[host]['magic']) | ipaddr('ip') }}", "{{ bgp_ipv6_transfer_net | ipaddr('net') | ipsubnet(64, 0) | ipaddr(hostvars[host]['magic']) | ipaddr('ip') }}" ],
|
||||
{% endfor %}
|
||||
}
|
||||
|
||||
AS_NUMBER = {
|
||||
{% for host in groups["ffmwu-gateways"] %}
|
||||
"{{ host.rsplit('.freifunk-mwu.de')[0] }}" : "65037",
|
||||
{% endfor %}
|
||||
}
|
||||
|
||||
#WHOIS_SERVER = "whois.foo.bar"
|
||||
|
||||
# DNS zone to query for ASN -> name mapping
|
||||
ASN_ZONE = "asn.cymru.com"
|
||||
|
||||
SESSION_KEY = '\xd77\xf9\xfa\xc2\xb5\xcd\x85)`+H\x9d\xeeW\\%\xbe/\xbaT\x89\xe8\xa7'
|
16
roles/service-bird-lg/templates/lgproxy.cfg.j2
Normal file
16
roles/service-bird-lg/templates/lgproxy.cfg.j2
Normal file
|
@ -0,0 +1,16 @@
|
|||
DEBUG=False
|
||||
|
||||
LOG_FILE="/var/log/bird-lg/lg-proxy.log"
|
||||
LOG_LEVEL="WARNING"
|
||||
|
||||
BIND_IP = "{{ bgp_ipv4_transfer_net | ipaddr('net') | ipaddr(magic) | ipaddr('ip') }}"
|
||||
BIND_PORT = 5000
|
||||
|
||||
ACCESS_LIST = [ {% for host in groups["ffmwu-monitoring"] %}"{{ bgp_ipv4_transfer_net | ipaddr('net') | ipaddr(hostvars[host]['magic']) | ipaddr('ip') }}"{% if not loop.last %}, {% endif %}{% endfor %} ]
|
||||
|
||||
# ???
|
||||
IPV4_SOURCE = "10.207.0.37"
|
||||
IPV6_SOURCE = "fec0::a:cf:0:25"
|
||||
|
||||
BIRD_SOCKET="/var/run/bird/bird.ctl"
|
||||
BIRD6_SOCKET="/var/run/bird/bird6.ctl"
|
23
roles/service-bird-lg/templates/lookingglass_vhost.conf.j2
Normal file
23
roles/service-bird-lg/templates/lookingglass_vhost.conf.j2
Normal file
|
@ -0,0 +1,23 @@
|
|||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name {{ lg_url_external }} {{ lg_url_internal }};
|
||||
|
||||
include /etc/nginx/snippets/redirect-to-ssl.conf;
|
||||
include /etc/nginx/snippets/letsencrypt-acme-challenge.conf;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
listen [::]:443 ssl;
|
||||
server_name {{ lg_url_external }} {{ lg_url_internal }};
|
||||
|
||||
ssl_certificate /etc/nginx/ssl/{{ inventory_hostname_short }}.{{ http_domain_external }}/fullchain.pem;
|
||||
ssl_certificate_key /etc/nginx/ssl/{{ inventory_hostname_short }}.{{ http_domain_external }}/privkey.pem;
|
||||
|
||||
include /etc/nginx/snippets/letsencrypt-acme-challenge.conf;
|
||||
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:5001;
|
||||
}
|
||||
}
|
6
roles/service-bird-lg/vars/main.yml
Normal file
6
roles/service-bird-lg/vars/main.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
lg_path: "{{ git_path }}/bird-lg"
|
||||
lg_user: "lookingglass"
|
||||
|
||||
lg_url_external: "{{ http_lookingglass_prefix }}.{{ http_domain_external }}"
|
||||
lg_url_internal: "{{ http_lookingglass_prefix }}.{{ http_domain_internal }}"
|
Loading…
Reference in a new issue