innernet-playbook/README.md

73 lines
2.6 KiB
Markdown
Raw Normal View History

2021-11-15 19:09:23 +01:00
<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc -->
**Table of Contents**
- [Motivation](#motivation)
- [Install](#install)
- [Clone the repo](#clone-the-repo)
2021-12-02 17:41:46 +01:00
- [Build packages from submodule at `./innernet-src`](#build-binaries-from-submodule-at-innernet-src)
2021-11-15 19:09:23 +01:00
- [Run the playbook](#run-the-playbook)
<!-- markdown-toc end -->
# Motivation
2021-11-16 10:02:46 +01:00
There is a need for some of our servers to connect to other IPv6-only hosts. Since this is not always possible without introducing major painpoints elsewhere, we simply create an internal WireGuard network so that the machines in question can communicate securely using IPv4.
2021-11-16 10:04:04 +01:00
![An overview](fsfe-innernet.png)
2021-11-16 10:02:46 +01:00
2021-12-02 17:41:46 +01:00
# Preparation
2021-11-15 19:09:23 +01:00
## Clone the repo
```bash
git clone --recurse-submodules git@git.fsfe.org:fsfe-system-hackers/innernet-playbook.git
cd innernet-playbook
```
## Build binaries from submodule at `./innernet-src`
2021-12-02 17:41:46 +01:00
Since [innernet](https://github.com/tonarino/innernet) is new software, it is not yet included in the Debian repositories. Thus, before running the playbook we need to build the `innernet` and `innernet-server` binaries. At the moment, we are using `1.5.1`, but you can choose any other available version by setting the environment variable accordingly. Please also note that you need [`cargo-deb`](https://github.com/kornelski/cargo-deb) installed to successfully compile the Debian packages.
2021-11-15 19:09:23 +01:00
```bash
2021-12-02 17:41:46 +01:00
./build-debs.sh
2021-11-15 19:09:23 +01:00
```
2021-12-02 17:41:46 +01:00
You can learn more about innernet by looking at its [source code](./innernet-src) or reading this informative [blog post](https://blog.tonari.no/introducing-innernet) of its creator.
## Preparing `ansible`
To ensure this playbook works on different machines, [pipenv](https://pipenv.pypa.io/en/latest/) is used to pin the version of `ansible`. So, to use the same version of Ansible that this playbook was tested with, simply run:
2021-11-15 19:09:23 +01:00
```bash
2021-12-02 17:41:46 +01:00
pipenv install --dev # for developing or
pipenv install # for simply running this playbook
pipenv shell
2021-11-15 19:09:23 +01:00
```
2021-12-02 17:41:46 +01:00
Now, you should be in a shell that is running the correct version of the `ansible` and `ansible-playbook` executable.
## Execution
### Run the playbook
```bash
ansible-playbook deploy.yml
```
### Distribute the invitation files
2021-11-15 19:09:23 +01:00
Some invitation files are for humans, so you need to send these files to them securely. I suggest using someting like `wormohle`.
```bash
sudo apt install magic-wormhole
cd roles/client/files
wormhole send <name_of_peer>.toml
```
2021-12-02 17:41:46 +01:00
2021-12-02 17:46:05 +01:00
### Associations
Please be aware that the `admins` CIDR [is associated](https://github.com/tonarino/innernet#adding-associations-between-cidrs) with all other CIDRs (i.e. `humans > others` and `machines`).
2021-12-02 17:41:46 +01:00
## Development