| 
															
																@@ -7,18 +7,43 @@ Since some software components like fastd and B.A.T.M.A.N. are not always easily 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 via a packet manager on all platforms, the basic idea in this repo is to create roles for this  
															 | 
															
															 | 
															
																 via a packet manager on all platforms, the basic idea in this repo is to create roles for this  
															 | 
														
													
												
													
														
															| 
															 | 
															
																 software and eventually fall back to building from source. 
															 | 
															
															 | 
															
																 software and eventually fall back to building from source. 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+## Getting started 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+This project is based on ansible, vagrant, VirtualBox and test kitchen. Although it is possible to get all this 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+working on windows, it is easier to do on Linux or Mac OS 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+### Prerequesites 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+* [Install ansible](http://docs.ansible.com/ansible/intro_installation.html) for your operating system  
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+* [Install VirtualBox](https://www.virtualbox.org/wiki/Downloads) for your operating system (Version 5 seems to work) 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+* Also install the extension pack for USB support etc. in VirtualBox. Some machines depend on this. 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+* [Install vagrant](http://docs.vagrantup.com/v2/installation/) for your operating system 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+* [Install test kitchen](http://kitchen.ci/docs/getting-started/installing) for your operating system 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+* Install ansible for test kitchen: `sudo gem install kitchen-ansiblepush kitchen-ansible` 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+* Install vagrant driver for test kitchen: `sudo gem install kitchen-vagrant` 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+### First steps 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+After you installed all necessary tools and gems you change in the checked out directory of this project 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+and simply type `kitchen test`. This will create multiple virtual machines execute the ansible roles and 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+test everything via serverspec. After all tests are successfull the machines are destroyed again. 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+### Simple development workflow 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+Since creating the machines can take some time (several minutes) is doesn't make sense to destroy them after each run. 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+You can call `kitchen setup` to create all defined machines and keep them running. Then you can start editing roles or  
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+creating roles and if you want to check your changes you can execute `kitchen converge && kitchen verify` to execute the 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+roles on all machines and run the serverspec tests on all machines. All commands can be combined with the machine name 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+(available via `kitchen list`) if you want to manipulate only one machine.  
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+If you need to analyse problems on one machine you can login with `kitchen login [machine name]` 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+## The Vagrantfile 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+The Vagrantfile and the host and group vars in this repo should be used to quickly create a "test community" in the future. 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+ 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 ## TODO 
															 | 
															
															 | 
															
																 ## TODO 
															 | 
														
													
												
													
														
															| 
															 | 
															
																  
															 | 
															
															 | 
															
																  
															 | 
														
													
												
													
														
															| 
															 | 
															
																 * batman role needs to enable build from source 
															 | 
															
															 | 
															
																 * batman role needs to enable build from source 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 * we need a way to get batman compatibility mode as a fact and be able to configure it 
															 | 
															
															 | 
															
																 * we need a way to get batman compatibility mode as a fact and be able to configure it 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-* Add role for Freifunk batman config 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-* Add role for Freifunk network config 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 * Add support for more platforms (don't force a linux distro to others) 
															 | 
															
															 | 
															
																 * Add support for more platforms (don't force a linux distro to others) 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 * Everything else I forgot 
															 | 
															
															 | 
															
																 * Everything else I forgot 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-* Add CI via travis: 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																- 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-## Setup test kitchen locally 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																- 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-* Install [test kitchen](http://kitchen.ci/): sudo gem install test-kitchen 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-* Install additionall kitchen gems: sudo gem install kitchen-ansiblepush kitchen-ansible kitchen-vagrant 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																-* start tests via: kitchen test 
															 | 
															
															 | 
															
																 
															 | 
														
													
												
													
														
															| 
															 | 
															
																 
															 | 
															
															 | 
															
																+* Add CI via travis: 
															 |