Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rgl/debian-router-ansible-vagrant
example debian linux router provisioned by ansible in a vagrant environment
https://github.com/rgl/debian-router-ansible-vagrant
ansible debian debian-linux-router router vagrant
Last synced: 10 days ago
JSON representation
example debian linux router provisioned by ansible in a vagrant environment
- Host: GitHub
- URL: https://github.com/rgl/debian-router-ansible-vagrant
- Owner: rgl
- Created: 2021-05-16T19:31:20.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-03-12T09:59:37.000Z (almost 3 years ago)
- Last Synced: 2024-10-04T18:41:23.683Z (3 months ago)
- Topics: ansible, debian, debian-linux-router, router, vagrant
- Language: Shell
- Homepage:
- Size: 21.5 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# About
This is an example debian linux router provisioned by ansible in a vagrant
environment.Vagrant VMs need to have a management network wich is NATted by the host,
but that makes it difficult to play with the linux router, so this essentially
adds a secondary network interface that is used for routing, and replaces the
default route that is set by DHCP in `eth0` to use our router in `eth1`
instead. So everything that would be normally done at `eth0` must be done
in `eth1`.The network is setup as:
![](diagram.png)
**NB** The dotted lines represent a network connection that is not directly used, instead, the traffic in those nodes goes through `eth1` and is routed by the `router` machine.
**NB** For a non-ansible equivalent of this environment see
[rgl/debian-router-vagrant](https://github.com/rgl/debian-router-vagrant).## Usage
Install the [base debian 11 box](https://github.com/rgl/debian-vagrant).
Install ansible in a python venv:
```bash
# NB this will use sudo to install system dependencies.
bash ansible-install.sh
```Start this environment:
```bash
source ansible-env.sh
time vagrant up --provider=libvirt --no-destroy-on-error --no-tty
```You can later trigger the ansible playbook execution with `vagrant`:
```bash
vagrant up --provision
```You can also directly trigger the ansible playbook execution with
`ansible-playbook`:```bash
ansible-inventory --list --yaml
ansible-playbook playbook.yml --check --diff #-vvv
ansible-playbook playbook.yml --diff #-vvv
```## Network Packet Capture
You can easily capture and see traffic from the host with the `wireshark.sh`
script, e.g., to capture the traffic from the `eth1` interface on each VM:```bash
./wireshark.sh router eth1 # or any
./wireshark.sh node1 eth1 # or any
./wireshark.sh node2 eth1 # or any
```## Reference
* https://www.vagrantup.com/docs/provisioning/ansible_intro
* https://www.vagrantup.com/docs/provisioning/ansible_common
* https://www.vagrantup.com/docs/provisioning/ansible
* https://docs.ansible.com/ansible-core/2.12/user_guide/playbooks.html
* https://docs.ansible.com/ansible-core/2.12/user_guide/playbooks_best_practices.html
* https://docs.ansible.com/ansible-core/2.12/reference_appendices/YAMLSyntax.html