Delete old Roles
This commit is contained in:
parent
8212fc243c
commit
3320ee053f
16 changed files with 0 additions and 778 deletions
|
@ -1,6 +0,0 @@
|
||||||
The ffmwu-bird role sets up the bird config for gates or other meshing
|
|
||||||
servers (distinction made by group membership). It will ensure empty
|
|
||||||
include files for ICVPN integration; integration itself to be configured
|
|
||||||
by different role. bird package should be installed elsewhere.
|
|
||||||
|
|
||||||
Relies on host_var "ffrl_exit_conf" and ... .
|
|
|
@ -1,46 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
- name: standardise dir ownership
|
|
||||||
file:
|
|
||||||
path: /etc/bird
|
|
||||||
state: directory
|
|
||||||
owner: admin
|
|
||||||
group: bird
|
|
||||||
mode: 0750
|
|
||||||
|
|
||||||
- name: standardise file ownerships
|
|
||||||
file:
|
|
||||||
path: "{{b_item}}"
|
|
||||||
state: touch
|
|
||||||
owner: admin
|
|
||||||
group: bird
|
|
||||||
mode: 0750
|
|
||||||
with_items:
|
|
||||||
- /etc/bird/bird.conf
|
|
||||||
- /etc/bird/mwu_peers_v4.inc
|
|
||||||
- /etc/bird/ffrl_peers_v4.inc
|
|
||||||
- /etc/bird/icvpn_peers_v4.inc
|
|
||||||
- /etc/bird/icvpn_roa_v4.inc
|
|
||||||
- /etc/bird/bird6.conf
|
|
||||||
- /etc/bird/icvpn_peers_v6.inc
|
|
||||||
- /etc/bird/icvpn_roa_v6.inc
|
|
||||||
- /etc/bird/mwu_peers_v6.inc
|
|
||||||
- /etc/bird/ffrl_peers_v6.inc
|
|
||||||
loop_control:
|
|
||||||
loop_var: b_item
|
|
||||||
|
|
||||||
- name: template out bird.confs
|
|
||||||
template:
|
|
||||||
backup: yes
|
|
||||||
dest: /etc/bird/{{b_item}}
|
|
||||||
src: "{{b_item}}"
|
|
||||||
#validate !!!
|
|
||||||
with_items:
|
|
||||||
- bird.conf
|
|
||||||
- bird6.conf
|
|
||||||
loop_control:
|
|
||||||
loop_var: b_item
|
|
||||||
|
|
||||||
# FIXME: construct mwu includes
|
|
||||||
|
|
||||||
# FIXME: construct ffrl includes
|
|
|
@ -1,258 +0,0 @@
|
||||||
timeformat protocol iso long;
|
|
||||||
|
|
||||||
# local addresses
|
|
||||||
{% if 'gates' in group_names %}
|
|
||||||
define local_addr_ffrl = {{hostvar}}185.66.195.38;
|
|
||||||
define local_addr_icvpn = {{hostvar}}10.207.37.161; # ingwer = mwu161
|
|
||||||
define local_addr_mwu = 10.37.0.{{mwu server id}};
|
|
||||||
{% else %}
|
|
||||||
define local_addr_mwu = 10.37.1.{{mwu server id}};
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# AS
|
|
||||||
define mwu_as = 65037; # private AS of mwu
|
|
||||||
{% if 'gates' in group_names %}
|
|
||||||
define ffrl_as = 201701; # public AS of rheinland
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if 'gates' in group_names %}
|
|
||||||
router id local_addr_ffrl;
|
|
||||||
|
|
||||||
table ffrl; # BGP Peerings FFRL
|
|
||||||
|
|
||||||
# ROA
|
|
||||||
roa table roa_icvpn {
|
|
||||||
include "ebgp_roa_v4.inc";
|
|
||||||
}
|
|
||||||
{% else %}
|
|
||||||
router id local_addr_mwu;
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# functions
|
|
||||||
function is_default() {
|
|
||||||
return net ~ [
|
|
||||||
0.0.0.0/0
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
function is_freifunk() {
|
|
||||||
return net ~ [
|
|
||||||
10.0.0.0/8{16,24}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
function is_dn42() {
|
|
||||||
return net ~ [
|
|
||||||
172.20.0.0/14{20,28}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
function is_chaosvpn() {
|
|
||||||
return net ~ [
|
|
||||||
172.31.0.0/16+
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
function is_mwu_self_nets() {
|
|
||||||
return net ~ [
|
|
||||||
10.56.0.0/16+,
|
|
||||||
10.37.0.0/16+
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
function is_wi_self_net() {
|
|
||||||
return net ~ [
|
|
||||||
10.56.0.0/16+
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
function is_mz_self_net() {
|
|
||||||
return net ~ [
|
|
||||||
10.37.0.0/16+
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
{% if 'gates' in group_names %}
|
|
||||||
function is_local_addr_ffrl() {
|
|
||||||
return net ~ [
|
|
||||||
{{hostvar}}185.66.195.38/32
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
function is_ffrl_tunnel_nets() {
|
|
||||||
return net ~ [
|
|
||||||
{{hostvar}}100.64.2.234/31,
|
|
||||||
{{hostvar}}100.64.2.236/31,
|
|
||||||
{{hostvar}}100.64.2.238/31,
|
|
||||||
{{hostvar}}100.64.2.240/31,
|
|
||||||
{{hostvar}}100.64.1.112/31,
|
|
||||||
{{hostvar}}100.64.1.114/31
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# filters
|
|
||||||
{% if 'gates' in group_names %}
|
|
||||||
filter ebgp_icvpn_import_filter {
|
|
||||||
if is_mwu_self_nets() then reject;
|
|
||||||
if is_chaosvpn() then accept;
|
|
||||||
if roa_check(roa_icvpn) = ROA_VALID then {
|
|
||||||
if is_freifunk() then accept;
|
|
||||||
if is_dn42() then accept;
|
|
||||||
} else {
|
|
||||||
if roa_check(roa_icvpn) = ROA_UNKNOWN then {
|
|
||||||
if is_dn42() then {
|
|
||||||
# print "ROA UNKNOWN for dn42 net, accepting: ", net, " ASN: ", bgp_path.last;
|
|
||||||
accept;
|
|
||||||
}
|
|
||||||
if is_freifunk() then {
|
|
||||||
# print "ROA UNKNOWN for freifunk net, accepting: ", net, " ASN: ", bgp_path.last;
|
|
||||||
accept;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if roa_check(roa_icvpn) = ROA_INVALID then {
|
|
||||||
if is_freifunk() then {
|
|
||||||
# print "ROA INVALID for freifunk net, accept: ", net, " ASN: ", bgp_path.last;
|
|
||||||
accept;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reject;
|
|
||||||
}
|
|
||||||
reject;
|
|
||||||
}
|
|
||||||
|
|
||||||
filter ebgp_ffrl_import_filter {
|
|
||||||
if is_default() then accept;
|
|
||||||
reject;
|
|
||||||
}
|
|
||||||
|
|
||||||
filter ebgp_ffrl_export_filter {
|
|
||||||
if is_local_addr_ffrl() then accept;
|
|
||||||
reject;
|
|
||||||
}
|
|
||||||
{% else %}
|
|
||||||
# sanity check: don't allow critical overrides
|
|
||||||
filter ebgp_icvpn_import_filter {
|
|
||||||
if is_mwu_self_nets() then reject;
|
|
||||||
if is_default() then reject;
|
|
||||||
if is_freifunk() then accept;
|
|
||||||
if is_dn42() then accept;
|
|
||||||
if is_chaosvpn() then accept;
|
|
||||||
reject;
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# protocols
|
|
||||||
# necessary to inform bird about devices
|
|
||||||
protocol device {
|
|
||||||
scan time 30;
|
|
||||||
};
|
|
||||||
|
|
||||||
protocol kernel kernel_mwu {
|
|
||||||
scan time 30;
|
|
||||||
import none;
|
|
||||||
export filter {
|
|
||||||
if is_mwu_self_nets() then
|
|
||||||
reject;
|
|
||||||
krt_prefsrc = local_addr_icvpn;
|
|
||||||
accept;
|
|
||||||
};
|
|
||||||
kernel table ipt_icvpn;
|
|
||||||
};
|
|
||||||
|
|
||||||
{% if 'gates' in group_names %}
|
|
||||||
# learn about directly connected community subnets
|
|
||||||
protocol direct mwu_subnets {
|
|
||||||
interface "mzBR";
|
|
||||||
interface "wiBR";
|
|
||||||
import where is_mwu_self_nets();
|
|
||||||
};
|
|
||||||
|
|
||||||
protocol static ffrl_uplink_hostroute {
|
|
||||||
table ffrl;
|
|
||||||
route 185.66.195.38/32 reject;
|
|
||||||
}
|
|
||||||
|
|
||||||
protocol direct ffrl_tunnels {
|
|
||||||
table ffrl;
|
|
||||||
interface "ffrl-*";
|
|
||||||
import where is_ffrl_tunnel_nets();
|
|
||||||
}
|
|
||||||
|
|
||||||
protocol kernel kernel_ffrl {
|
|
||||||
scan time 30;
|
|
||||||
import none;
|
|
||||||
export filter {
|
|
||||||
krt_prefsrc = local_addr_ffrl;
|
|
||||||
accept;
|
|
||||||
};
|
|
||||||
table ffrl;
|
|
||||||
kernel table ipt_ffinetexit;
|
|
||||||
};
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# Templates
|
|
||||||
# templates for iBGP
|
|
||||||
{% if 'gates' in group_names %}
|
|
||||||
template bgp bgp_ibgp_mwu {
|
|
||||||
local local_addr_mwu as mwu_as;
|
|
||||||
import keep filtered on;
|
|
||||||
import all; # EXPERIMENT !!!!!
|
|
||||||
export where source = RTS_BGP;
|
|
||||||
direct;
|
|
||||||
gateway direct;
|
|
||||||
};
|
|
||||||
{% else %}
|
|
||||||
template bgp bgp_ibgp_mwu {
|
|
||||||
local local_addr_mwu as mwu_as;
|
|
||||||
import filter ebgp_icvpn_import_filter;
|
|
||||||
export none;
|
|
||||||
direct;
|
|
||||||
gateway direct;
|
|
||||||
};
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if 'gates' in group_names %}
|
|
||||||
# templates for eBGP
|
|
||||||
template bgp ebgp_ic {
|
|
||||||
local local_addr_icvpn as mwu_as;
|
|
||||||
import keep filtered on;
|
|
||||||
import filter ebgp_icvpn_import_filter;
|
|
||||||
export filter {
|
|
||||||
if is_mwu_self_nets() then { # own nets
|
|
||||||
accept;
|
|
||||||
}
|
|
||||||
if source = RTS_BGP then {
|
|
||||||
if is_freifunk() || is_dn42() then {
|
|
||||||
accept;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reject;
|
|
||||||
};
|
|
||||||
direct;
|
|
||||||
};
|
|
||||||
|
|
||||||
template bgp ffrl_uplink {
|
|
||||||
table ffrl;
|
|
||||||
local as mwu_as;
|
|
||||||
import keep filtered;
|
|
||||||
import filter ebgp_ffrl_import_filter;
|
|
||||||
export filter ebgp_ffrl_export_filter;
|
|
||||||
next hop self;
|
|
||||||
direct;
|
|
||||||
};
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# P E E R I N G S
|
|
||||||
# iBGP
|
|
||||||
include "mwu_peers_v4.inc";
|
|
||||||
|
|
||||||
{% if 'gates' in group_names %}
|
|
||||||
# P E E R I N G S
|
|
||||||
# eBGP FFRL exit
|
|
||||||
include "ffrl_peers_v4.inc";
|
|
||||||
|
|
||||||
# P E E R I N G S
|
|
||||||
# eBGP ICVPN
|
|
||||||
include "icvpn_peers_v4.inc";
|
|
||||||
{% endif %}
|
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
dependencies:
|
|
||||||
- { role: ffmwu-server }
|
|
||||||
- { role: packages, pkg_repo_list: "{{meshing_pkg_repo_list}}",
|
|
||||||
pkg_pkg_list: "{{meshing_pkg_pkg_list}}",
|
|
||||||
pkg_pip_list: "{{meshing_pkg_pip_list}}",
|
|
||||||
really_do: "{{ansible_managed_meshing}}" }
|
|
|
@ -1,80 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
- name: ensure backend-scripts-log-dir
|
|
||||||
file: path=~/.cronlog state=directory mode=0700
|
|
||||||
|
|
||||||
# FIXME: maybe move behind next block?
|
|
||||||
- name: clone backend scripts
|
|
||||||
git:
|
|
||||||
dest: "~/clones/backend-scripts"
|
|
||||||
repo: "https://github.com/freifunk-mwu/backend-scripts.git"
|
|
||||||
accept_hostkey: yes
|
|
||||||
|
|
||||||
- block: # replaces backend script bootstrap_git_all.py
|
|
||||||
- name: generate host key
|
|
||||||
command: ssh-keygen -t ed25519 -N "" -f {{ansible_hostname}}_rsa
|
|
||||||
args:
|
|
||||||
chdir: ~/.ssh
|
|
||||||
creates: ~/.ssh/{{ansible_hostname}}_rsa
|
|
||||||
register: keypair
|
|
||||||
|
|
||||||
- name: generate ssh config entry
|
|
||||||
blockinfile:
|
|
||||||
block: |
|
|
||||||
Host github_mwu
|
|
||||||
User git
|
|
||||||
Hostname github.com
|
|
||||||
PreferredAuthentications publickey
|
|
||||||
IdentityFile ~/.ssh/{{ansible_hostname}}_rsa
|
|
||||||
create: yes
|
|
||||||
dest: ~/.ssh/config
|
|
||||||
marker: "# {mark} ANSIBLE MANAGED BLOCK github_mwu"
|
|
||||||
mode: 0640
|
|
||||||
|
|
||||||
- name: change git user name
|
|
||||||
git_config:
|
|
||||||
scope: global
|
|
||||||
name: "user.name"
|
|
||||||
value: "{{ansible_hostname}}"
|
|
||||||
|
|
||||||
- name: change git user email
|
|
||||||
git_config:
|
|
||||||
scope: global
|
|
||||||
name: "user.email"
|
|
||||||
value: "{{ansible_hostname}}@{{ansible_fqdn}}"
|
|
||||||
|
|
||||||
# block end
|
|
||||||
|
|
||||||
- block:
|
|
||||||
- name: read new pubkey
|
|
||||||
shell: cat ~/.ssh/{{ansible_hostname}}_rsa.pub
|
|
||||||
register: ssh_pub_key
|
|
||||||
|
|
||||||
- name: read existing github token from spinat
|
|
||||||
shell: cat ~/.ssh/github-ansible-token
|
|
||||||
register: github_access_token
|
|
||||||
delegate_to: spinat.freifunk-mwu.de
|
|
||||||
|
|
||||||
- name: register new pubkey with github freifunkmwu account
|
|
||||||
github_key:
|
|
||||||
name: "Server {{ansible_hostname}}"
|
|
||||||
token: "{{github_access_token.stdout}}"
|
|
||||||
pubkey: "{{ssh_pub_key.stdout}}"
|
|
||||||
# FIXME: force yes ???
|
|
||||||
force: no
|
|
||||||
|
|
||||||
when: keypair.changed
|
|
||||||
|
|
||||||
- name: manage crontab - PATH
|
|
||||||
cron: env=yes name=PATH value="/home/admin/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
|
|
||||||
|
|
||||||
- name: manage crontab - entries
|
|
||||||
cron: name={{mwu_m_item.n}} job={{mwu_m_item.j}} minute={{mwu_m_item.mi}}
|
|
||||||
hour={{mwu_m_item.h}} day={{mwu_m_item.d}} month={{mwu_m_item.mo}}
|
|
||||||
weekday={{mwu_m_item.w}}
|
|
||||||
with_items:
|
|
||||||
- { n: "sync_meshkeys", mi: "*/15", h: "*", d: "*", mo: "*", w: "*", j: "/usr/bin/python3 $HOME/clones/backend-scripts/sync_meshkeys_gw.py > $HOME/.cronlog/sync_meshkeys.log" }
|
|
||||||
# FIXME: define hostvar for mi
|
|
||||||
- { n: "snapshot_configs", mi: "23", h: "5,23", d: "*", mo: "*", w: "*", j: "/usr/bin/python3 $HOME/clones/backend-scripts/snapshot_configs_all.py > $HOME/.cronlog/snapshot_configs.log" }
|
|
||||||
loop_control:
|
|
||||||
loop_var: mwu_m_item
|
|
|
@ -1,21 +0,0 @@
|
||||||
---
|
|
||||||
# this file included in a loop, called seperately for each community
|
|
||||||
# => configure fastd for one community here
|
|
||||||
# make a difference between gates an meshing-only servers
|
|
||||||
# hash describing community expected as "mf_com"; also expected: "f_ssh_keyfile"
|
|
||||||
|
|
||||||
- name: ensure fastd config dir - {{mf_com.abbreviation}}
|
|
||||||
file: path=/etc/fastd/{{mf_com.abbreviation}}VPN/peers
|
|
||||||
state=directory mode=0750
|
|
||||||
|
|
||||||
#- debug: var=mf_com
|
|
||||||
|
|
||||||
#- debug: var=f_ssh_keyfile
|
|
||||||
|
|
||||||
- name: include either gate ...
|
|
||||||
include: fastd-gate.yml
|
|
||||||
when: fastd_config == 'gate'
|
|
||||||
|
|
||||||
- name: ... or meshing-only style
|
|
||||||
include: fastd-meshonly.yml
|
|
||||||
when: fastd_config == 'meshing-only'
|
|
|
@ -1,73 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
# hash describing community expected as "mf_com";
|
|
||||||
# also expected: "f_ssh_keyfile" and "mf_com_repo"
|
|
||||||
|
|
||||||
- name: clone key repo - {{mf_com.abbreviation}}
|
|
||||||
git:
|
|
||||||
dest: "{{mf_com_repo}}"
|
|
||||||
key_file: "{{f_ssh_keyfile.stdout}}"
|
|
||||||
repo: "ssh://git@github.com/{{mf_com.repo}}"
|
|
||||||
update: no
|
|
||||||
accept_hostkey: yes
|
|
||||||
|
|
||||||
# the following is a crude but functional work-around the problem that
|
|
||||||
# the git module wouldn't clone the repo with the ssh-config-entry
|
|
||||||
# in the url, but git wouldn't push without it (due to missing
|
|
||||||
# connection to the ssh key)
|
|
||||||
- name: change git url to pushable
|
|
||||||
git_config:
|
|
||||||
repo: "{{mf_com_repo}}"
|
|
||||||
scope: local
|
|
||||||
name: "remote.origin.url"
|
|
||||||
value: "ssh://github_mwu/{{mf_com.repo}}"
|
|
||||||
|
|
||||||
- name: generate fastd key pair - {{mf_com.abbreviation}}
|
|
||||||
command: fastd --generate-key
|
|
||||||
creates="/etc/fastd/{{mf_com.abbreviation}}VPN/secret.conf"
|
|
||||||
register: f_key_pair
|
|
||||||
|
|
||||||
- block:
|
|
||||||
|
|
||||||
# - debug: var=f_key_pair
|
|
||||||
|
|
||||||
- name: write out fastd secret key - {{mf_com.abbreviation}}
|
|
||||||
lineinfile:
|
|
||||||
backup: yes
|
|
||||||
create: yes
|
|
||||||
dest: "/etc/fastd/{{mf_com.abbreviation}}VPN/secret.conf"
|
|
||||||
insertbefore: BOF
|
|
||||||
line: secret "{{f_key_pair.stdout_lines[0] |regex_replace('^Secret. ','')}}";
|
|
||||||
mode: 0400
|
|
||||||
regexp: '^secret ".*";'
|
|
||||||
state: present
|
|
||||||
|
|
||||||
- name: write out fastd public key - {{mf_com.abbreviation}}
|
|
||||||
lineinfile:
|
|
||||||
create: yes
|
|
||||||
dest: "{{mf_com_repo}}/servers/{{fastd_alias}}"
|
|
||||||
insertbefore: BOF
|
|
||||||
line: key "{{f_key_pair.stdout_lines[1] |regex_replace('^Public. ','')}}";
|
|
||||||
mode: 0440
|
|
||||||
regexp: '^key ".*";'
|
|
||||||
state: present
|
|
||||||
register: f_pub_key
|
|
||||||
ignore_errors: True
|
|
||||||
|
|
||||||
- name: delete secret in case of public failure - {{mf_com.abbreviation}}
|
|
||||||
file: path="/etc/fastd/{{mf_com.abbreviation}}VPN/secret.conf" state=absent
|
|
||||||
when: f_pub_key.failed is defined
|
|
||||||
|
|
||||||
- fail: msg="FAILED writing fastd key pair"
|
|
||||||
when: f_pub_key.failed is defined
|
|
||||||
|
|
||||||
when: f_key_pair.changed
|
|
||||||
# end of block
|
|
||||||
|
|
||||||
- name: template out fastd.conf - {{mf_com.abbreviation}}
|
|
||||||
template:
|
|
||||||
backup: yes
|
|
||||||
dest: "/etc/fastd/{{mf_com.abbreviation}}VPN/fastd.conf"
|
|
||||||
mode: 0640
|
|
||||||
src: "{{mf_com_templ}}"
|
|
||||||
validate: 'fastd --verify-config -c %s'
|
|
|
@ -1,15 +0,0 @@
|
||||||
---
|
|
||||||
# this file included by fastd-community.yml, which is included in a loop,
|
|
||||||
# called seperately for each community
|
|
||||||
# => configure fastd for one community here
|
|
||||||
# hash describing community expected as "mf_com"; also expected: "f_ssh_keyfile"
|
|
||||||
|
|
||||||
#- debug: var=mf_com
|
|
||||||
|
|
||||||
#- debug: var=f_ssh_keyfile
|
|
||||||
|
|
||||||
- set_fact:
|
|
||||||
mf_com_repo: "/etc/fastd/{{mf_com.abbreviation}}VPN/peers"
|
|
||||||
mf_com_templ: "fastd.conf-gate"
|
|
||||||
|
|
||||||
- include: fastd-config.yml
|
|
|
@ -1,34 +0,0 @@
|
||||||
---
|
|
||||||
# this file included by fastd-community.yml, which is included in a loop,
|
|
||||||
# called seperately for each community
|
|
||||||
# => configure fastd for one community here
|
|
||||||
# hash describing community expected as "mf_com"; also expected: "f_ssh_keyfile"
|
|
||||||
|
|
||||||
#- debug: var=mf_com
|
|
||||||
|
|
||||||
#- debug: var=f_ssh_keyfile
|
|
||||||
|
|
||||||
- name: prepare secure temp dir
|
|
||||||
command: mktemp -d --tmpdir ansible-tmp-mf{{mf_com.abbreviation}}.XXXXXXXXXX
|
|
||||||
register: tmpdir
|
|
||||||
|
|
||||||
- set_fact:
|
|
||||||
mf_com_repo: "{{tmpdir.stdout}}"
|
|
||||||
mf_com_templ: "fastd.conf-meshing"
|
|
||||||
|
|
||||||
- include: fastd-config.yml
|
|
||||||
|
|
||||||
- name: git add new public key
|
|
||||||
command: git add servers
|
|
||||||
chdir="{{mf_com_repo}}"
|
|
||||||
|
|
||||||
- name: git commit new public key
|
|
||||||
command: git commit -m "add {{ansible_hostname}}"
|
|
||||||
chdir="{{mf_com_repo}}"
|
|
||||||
|
|
||||||
- name: git push new public key
|
|
||||||
command: git push
|
|
||||||
chdir="{{mf_com_repo}}"
|
|
||||||
|
|
||||||
- name: clean up
|
|
||||||
file: path="{{mf_com_repo}}" state=absent
|
|
|
@ -1,15 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
- name: ensure correct ownership of /etc/fastd
|
|
||||||
file: path=/etc/fastd state=directory mode=0750 owner=admin group=admin
|
|
||||||
|
|
||||||
- name: find ssh keyfile name for use with git
|
|
||||||
shell: grep IdentityFile ~/.ssh/config | awk '{print $2}'
|
|
||||||
register: f_ssh_keyfile
|
|
||||||
changed_when: False
|
|
||||||
|
|
||||||
# configure communtity, one by one
|
|
||||||
- include: fastd-community.yml mf_com={{mwu_mf_item.value}}
|
|
||||||
with_dict: "{{community_params}}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: mwu_mf_item
|
|
|
@ -1,19 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
# we don't want to disrupt servers where this role is manually maintained!
|
|
||||||
# thus: warning and block statement
|
|
||||||
|
|
||||||
- name: full-stop if meshing role is manually maintained on this server
|
|
||||||
debug: msg="meshing role skipped to not disrupt manual maintenance - set ansible_managed_meshing to True to enable ansible control"
|
|
||||||
when: (not ansible_managed_meshing is defined) or (not ansible_managed_meshing)
|
|
||||||
|
|
||||||
- block:
|
|
||||||
|
|
||||||
# backend scripts
|
|
||||||
- include: backend-scripts.yml
|
|
||||||
|
|
||||||
# fastd
|
|
||||||
- include: fastd.yml
|
|
||||||
|
|
||||||
when: (ansible_managed_meshing is defined) and (ansible_managed_meshing)
|
|
||||||
# end block
|
|
|
@ -1,34 +0,0 @@
|
||||||
# fastd.conf
|
|
||||||
# from https://github.com/freifunk-mwu/ansible-ffmwu.git
|
|
||||||
|
|
||||||
log level warn;
|
|
||||||
hide ip addresses yes;
|
|
||||||
hide mac addresses yes;
|
|
||||||
|
|
||||||
interface "{{mf_com.abbreviation}}VPN";
|
|
||||||
method "salsa2012+umac"; # new method (faster)
|
|
||||||
|
|
||||||
# Bind to v4 and v6 interfaces
|
|
||||||
bind {{ansible_default_ipv4.address}}:{{mf_com.fastd_port}};
|
|
||||||
{% if ansible_default_ipv6.address is defined %}
|
|
||||||
bind [{{ansible_default_ipv6.address}}]:{{mf_com.fastd_port}};
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
include "/etc/fastd/{{mf_com.abbreviation}}VPN/secret.conf";
|
|
||||||
mtu 1406; # 1492 - IPv4/IPv6 Header - fastd Header...
|
|
||||||
|
|
||||||
peer group "vpn_nodes" {
|
|
||||||
# p#eer limit 200;
|
|
||||||
include peers from "/etc/fastd/{{mf_com.abbreviation}}VPN/peers"; # servers 2 b moved out ...
|
|
||||||
{% if mf_com.xtra_peers is defined %}
|
|
||||||
{% for xtra in mf_com.xtra_peers %}
|
|
||||||
include peers from "/etc/fastd/{{mf_com.abbreviation}}VPN/{{xtra}}";
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
|
|
||||||
peer group "servers" {
|
|
||||||
include peers from "/etc/fastd/{{mf_com.abbreviation}}VPN/peers/servers"; # yet 2 b filled ...
|
|
||||||
}
|
|
||||||
|
|
||||||
status socket "/var/run/fastd-{{mf_com.abbreviation}}.status";
|
|
|
@ -1,43 +0,0 @@
|
||||||
# fastd.conf
|
|
||||||
# from https://github.com/freifunk-mwu/ansible-ffmwu.git
|
|
||||||
|
|
||||||
log level warn;
|
|
||||||
hide ip addresses yes;
|
|
||||||
hide mac addresses yes;
|
|
||||||
|
|
||||||
interface "{{mf_com.abbreviation}}VPN";
|
|
||||||
method "salsa2012+umac"; # new method (faster)
|
|
||||||
|
|
||||||
# Bind to v4 and v6 interfaces
|
|
||||||
bind {{ansible_default_ipv4.address}}:{{mf_com.fastd_port}};
|
|
||||||
{% if ansible_default_ipv6.address is defined %}
|
|
||||||
bind [{{ansible_default_ipv6.address}}]:{{mf_com.fastd_port}};
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
include "/etc/fastd/{{mf_com.abbreviation}}VPN/secret.conf";
|
|
||||||
mtu 1406; # 1492 - IPv4/IPv6 Header - fastd Header...
|
|
||||||
|
|
||||||
secure handshakes yes;
|
|
||||||
mode tap;
|
|
||||||
|
|
||||||
peer group "mesh_vpn_backbone" {
|
|
||||||
peer limit 4;
|
|
||||||
peer "gw_ingwer" {
|
|
||||||
key "9b74e90fd68df749e45718eced65268260872e4cf74369b9bf9e9fb42411efe9";
|
|
||||||
remote ipv6 "ingwer.freifunk-mwu.de" port {{mf_com.fastd_port}};
|
|
||||||
}
|
|
||||||
peer "gw_lotuswurzel" {
|
|
||||||
key "d73479cc97a87ffd4b256a873e505f3264408ed077b248358c52e8dc82bbfc07";
|
|
||||||
remote ipv6 "lotuswurzel.freifunk-mwu.de" port {{mf_com.fastd_port}};
|
|
||||||
}
|
|
||||||
peer "gw_spinat" {
|
|
||||||
key "9e59a202eccabe1aac37d8000e762ecb05e17b3e521f7a54ab693af66e4adfb7";
|
|
||||||
remote ipv6 "spinat.freifunk-mwu.de" port {{mf_com.fastd_port}};
|
|
||||||
}
|
|
||||||
peer "gw_wasserfloh" {
|
|
||||||
key "9c00e0534a9dc5232e9bfacb304261f21f24604ad233b648bf52d6b40ca60884";
|
|
||||||
remote ipv6 "wasserfloh.freifunk-mwu.de" port {{mf_com.fastd_port}};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
status socket "/var/run/fastd-{{mf_com.abbreviation}}.status";
|
|
|
@ -1,33 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
meshing_pkg_repo_list:
|
|
||||||
repo_keys:
|
|
||||||
- neoraider:
|
|
||||||
id: "16EF3F64CB201D9C"
|
|
||||||
server: keyserver.ubuntu.com
|
|
||||||
- freifunk-mwu:
|
|
||||||
id: "286CC7A4"
|
|
||||||
server: keyserver.ubuntu.com
|
|
||||||
repos:
|
|
||||||
- fastd:
|
|
||||||
repo: 'deb https://repo.universe-factory.net/debian/ sid main'
|
|
||||||
update_cache: no
|
|
||||||
- batman:
|
|
||||||
repo: 'deb http://ppa.launchpad.net/freifunk-mwu/batman-adv/ubuntu trusty main'
|
|
||||||
update_cache: no
|
|
||||||
- batman_src:
|
|
||||||
repo: 'deb-src http://ppa.launchpad.net/freifunk-mwu/batman-adv/ubuntu trusty main'
|
|
||||||
update_cache: yes
|
|
||||||
|
|
||||||
meshing_pkg_pkg_list:
|
|
||||||
- git
|
|
||||||
- haveged
|
|
||||||
- python3-pip
|
|
||||||
- fastd
|
|
||||||
- batctl
|
|
||||||
- batman-adv-source
|
|
||||||
|
|
||||||
meshing_pkg_pip_list: # example
|
|
||||||
- py-cpuinfo
|
|
||||||
|
|
||||||
#- photon_core
|
|
|
@ -1,34 +0,0 @@
|
||||||
This role installs apt and python packages on the target host. Necessary
|
|
||||||
apt repos can be defined.
|
|
||||||
It expects the arguments pkg_repo_list, pkg_pkg_list and pkg_pip_list
|
|
||||||
to be filled. If any argument is undefined, the repectibe action will
|
|
||||||
be skipped. See below for examples.
|
|
||||||
|
|
||||||
```
|
|
||||||
pkg_repo_list: # example
|
|
||||||
repo_keys:
|
|
||||||
- cool_guy:
|
|
||||||
id: "67678686"
|
|
||||||
server: keyserver.ubuntu.com
|
|
||||||
- smart_guy:
|
|
||||||
id: "2f2f2f2f2"
|
|
||||||
server: keyserver.ubuntu.com
|
|
||||||
repos:
|
|
||||||
- cool_game:
|
|
||||||
repo: 'deb http://ppa.launchpad.net/cool/game/ubuntu trusty main'
|
|
||||||
update_cache: no
|
|
||||||
- smart_tool:
|
|
||||||
repo: 'deb http://ppa.launchpad.net/samrt/tool/ubuntu trusty main'
|
|
||||||
update_cache: yes # smart to have yes on last and only last entry
|
|
||||||
|
|
||||||
pkg_pkg_list: # example
|
|
||||||
- cool-game
|
|
||||||
- smart-tool
|
|
||||||
- python3-pip # remember this one when wanting to use pkg_pip_list
|
|
||||||
|
|
||||||
pkg_pip_list: # example
|
|
||||||
- smart-tool-py-interface
|
|
||||||
|
|
||||||
# this flag controls the execution of the role; used to subdue if needed
|
|
||||||
really_do: True
|
|
||||||
```
|
|
|
@ -1,59 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
# we don't want to disrupt servers where this role is manually maintained!
|
|
||||||
# thus: warning and block statement
|
|
||||||
|
|
||||||
- name: full-stop if package role is manually maintained on this server
|
|
||||||
debug: msg="package role skipped to not disrupt manual maintenance - set really_do to True to enable ansible control"
|
|
||||||
when: (not really_do is defined) or (not really_do)
|
|
||||||
|
|
||||||
# observe value of really_do
|
|
||||||
- block:
|
|
||||||
|
|
||||||
# ensure apt keys and apt repos if defined
|
|
||||||
- block:
|
|
||||||
|
|
||||||
- name: ensure defined apt keys
|
|
||||||
apt_key:
|
|
||||||
state: present
|
|
||||||
id: "{{pkg_item.id}}"
|
|
||||||
keyserver: "{{pkg_item.server}}"
|
|
||||||
with_items: "{{ (pkg_repo_list|default({})).repo_keys | default([]) }}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: pkg_item
|
|
||||||
# see defaults in with - when: (pkg_repo_list is defined) and (pkg_repo_list.repo_keys is defined)
|
|
||||||
|
|
||||||
- name: ensure defined apt repos
|
|
||||||
apt_repository:
|
|
||||||
state: present
|
|
||||||
repo: "{{pkg_item.repo}}"
|
|
||||||
update_cache: "{{pkg_item.update_cache}}"
|
|
||||||
filename: freifunk
|
|
||||||
with_items: "{{ (pkg_repo_list|default({})).repos | default([]) }}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: pkg_item
|
|
||||||
# see defaults in with - when: (pkg_repo_list is defined) and (pkg_repo_list.repos is defined)
|
|
||||||
|
|
||||||
# see defaults in with - when: pkg_repo_list is defined
|
|
||||||
# end block
|
|
||||||
|
|
||||||
- name: ensure defined apt packages
|
|
||||||
apt:
|
|
||||||
state: present
|
|
||||||
name: "{{mwu_m_item}}"
|
|
||||||
update_cache: yes
|
|
||||||
cache_valid_time: 21600
|
|
||||||
with_items: "{{meshing_pkg_pkg_list | default([])}}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: mwu_m_item
|
|
||||||
# see default in with - when: meshing_pkg_pkg_list is defined
|
|
||||||
|
|
||||||
- name: ensure defined python libs
|
|
||||||
pip: name={{mwu_m_item}} executable=pip3
|
|
||||||
with_items: "{{meshing_pkg_pip_list | default([])}}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: mwu_m_item
|
|
||||||
# see default in with - when: meshing_pkg_pip_list is defined
|
|
||||||
|
|
||||||
when: (really_do is defined) and (really_do)
|
|
||||||
# end block
|
|
Loading…
Reference in a new issue