[[ansible]] == Ansible Setup Since the set of steps to set up a full {app-name} environment can be quite long and tedious, nowadays the Osmocom RnD and Production {app-name} setups are installed and maintained using Ansible scripts. The set of ansible scripts is available in Osmocom's git repository link:https://gitea.osmocom.org/osmocom/osmo-ci/[osmo-ci.git] under 'ansible' subdirectory, with the rest of ansible scripts to set jenkins slaves, etc. Since these set of scripts is mainly aimed at Osmocom's own setup, and debian is used there, so far only debian hosts are supported officially, though patches to support other distributions are welcome. In there, the 'setup-gsm-tester.yml' file is responsible of doing all required steps to set up a host to become either a <> or a a <>. The ansible file can be run as follows: ---- $ ansible-playbook -i hosts setup-gsm-tester.yml ---- You will need root-alike access in the remote host in order to let ansible install everything {app-name}, however, no root-specific user is required as long as your remote user has sudo access on that host. If that's your case, add the following parameters to 'ansible-playbook': ---- $ ansible-playbook -i hosts -b -K -u your_remote_user setup-gsm-tester.yml ---- The 'setup-gsm-tester.yml' file is mostly an aggregator of tasks. Most {app-name} related tasks can be found under subdirectory 'roles/gsm-tester-*'. Since different (for instance Production vs RnD) can have different characteristics, some per-host variables can be found under directory host_vars/, specifying for instance the number of expected modems attached to the Main Unit, the DHCP server static leasing for devices, etc. The different tasks usually have tags to differentiate which kind of {app-name} host they are required by. They are also set to differentiate sets of tasks required if a specific feature is being used in the host (for instance, willing to manage modems with ofono). This allows playing with the '-t' and '--skip-tags' when running 'ansible-playbooks' in order to run specific set of tasks on each host. For instance, to run tasks required to set up a Slave Unit, one can run: ---- $ ansible-playbook -i hosts setup-gsm-tester.yml -t osmo-gsm-tester-proc ---- To run all modem-related tasks: ---- $ ansible-playbook -i hosts setup-gsm-tester.yml -t modem ---- Don't forget to read all README.md files available in different subdirectories to find out more detailed information on how to run the scripts.