# fflux Ansible Configuration This repo contains Ansible configs for the Freifunk Lëtzebuerg infra. ## Files - `hosts`: contains all of the machines. - Careful: a wrongly defined machine can lead to major problems. - `authorized_keys`: `fflux` user pubkey ## Directories - `files`: templates for various playbooks - `initial_server_setup`: initial server setup - `gateway`: Set up a fflux gateway - `api`: api.freifunk.lu - `firmware`: firmware.freifunk.lu ## Guide ### Initial Server Setup First, add the machine to `hosts` at the top of the file: ```yml machine-name-here ansible_host=10.20.30.40 ``` Note that `machine-name-here` will be the machine's hostname. Then, put the machine under the `[initial]` group: ```yml [initial] machine-name-here ansible_user=root ``` Finally, change the default private SSH key under `[all:vars]` if necessary: ```yml ansible_ssh_private_key_file=/home/myuser/.ssh/id_ed25519 ``` You can now run the playbook: ```bash fflux@fflux:~/repos/Ansible-Configuration$ ansible-playbook -i hosts initial_server_setup/initial_setup.yml ``` Note that the placement of the repositories might impact the playbook's behaviour, particularly for more advanced setups, incl. web server. ### Install Website (freifunk, www, api) First, make sure the machine is still configured properly at the top of the `hosts` file. (see initial server setup) Then, put the machine under the `[website-web]` group: ```yml perso-test ``` Note that if you are not running this on the fflux management server as the `fflux` user, you might want to check the remote `authorized_keys` (that one of your keys is allowed) and append `ansible_user=fflux` to that line, similarly to the initial server setup. **IMPORTANT NOTE**: do not forget to set the DNS records properly, so that the machine is reachable via the domain names. (at the time of writing `freifunk.lu`, `www.freifunk.lu` and `api.freifunk.lu`, but you can simply check the playblook) Finally, run the playbook: ```bash fflux@fflux:~/repos/Ansible-Configuration$ ansible-playbook -v -i hosts web/install_website.yml ```