--- # gsm tester would only need the libraries, not the dev packages. # But the name of the -dev packages are more stable over multiple release. - name: update apt apt: cache_valid_time: 3600 update_cache: yes - name: install osmocom runtime dependencies apt: name: "{{ item }}" with_items: - build-essential - git - automake - libdbi-dev - libdbd-sqlite3 - sqlite3 - libsctp-dev - libortp-dev - libpcap-dev - libc-ares-dev - libtool - shtool - pkg-config - libtalloc-dev - libpcsclite-dev - libgnutls28-dev - libmnl-dev - libssl-dev - libczmq-dev - libsofia-sip-ua-glib-dev - libsqlite3-dev - libasound2-dev - mdbus2 - liblua5.3-dev - lua-socket - name: install ofono build dependencies apt: name: ofono state: build-dep - name: install libqmi-glib a dependency of sysmocom ofono apt: name: libqmi-glib-dev - name: install uhub dependencies apt: name: "{{ item }}" with_items: - libusb-1.0-0-dev - name: setup uhubctl repository git: repo: "https://github.com/mvp/uhubctl.git" dest: /root/uhubctl version: master clone: yes update: no - name: build uhubctl shell: | make && \ make install args: chdir: /root/uhubctl creates: /usr/sbin/uhubctl # TODO: move this into restart-modems.d directory - name: copy quad_modem_power_cycle.sh template: src: quad_modem_power_cycle.sh dest: /usr/local/bin/quad_modem_power_cycle.sh mode: 0755 tags: - ofono - name: setup ofono repository git: repo: 'git://git.sysmocom.de/ofono' dest: /root/ofono version: osmo-gsm-tester clone: yes update: no tags: - ofono - name: build ofono shell: | ./bootstrap && \ CFLAGS="-g" ./configure --disable-bluez4 && \ CFLAGS="-g" make -j3 && \ make install && \ systemctl daemon-reload args: chdir: /root/ofono creates: /usr/local/sbin/ofonod tags: - ofono - name: ensure ofono is started service: name: ofono state: started enabled: yes tags: - ofono - name: install gsm tester dependencies apt: name: "{{ item }}" with_items: - dbus - tcpdump - sqlite3 - python3 - python3-yaml - python3-mako - python3-gi - ofono - patchelf - sudo - libcap2-bin - python3-pip - udhcpc - iperf3 - name: install gsm tester pip dependencies pip: name: "{{ item }}" executable: pip3 editable: no with_items: - "git+https://github.com/podshumok/python-smpplib.git@master#egg=smpplib" - pydbus - pyusb - pysispm tags: [pip] - name: create group osmo-gsm-tester group: name: osmo-gsm-tester - name: add jenkins to osmo-gsm-tester and systemd-journal user: name: jenkins groups: "{{ item }}" append: yes shell: /bin/bash with_items: - systemd-journal - osmo-gsm-tester - dialout - name: setup state directory file: path: /var/tmp/osmo-gsm-tester/state state: directory group: osmo-gsm-tester mode: g+rwxs - name: install acl apt: name: acl # Ensure the group always has access to all files - name: add acl to state directory acl: path: /var/tmp/osmo-gsm-tester/state state: present etype: group entity: osmo-gsm-tester default: yes permissions: rwx - name: create trials directory file: path: /var/tmp/osmo-gsm-tester/trials state: directory group: osmo-gsm-tester mode: g+rwxs - name: allow osmo-gsm-tester to access ofono copy: src: dbus_osmo-gsm-tester.conf dest: /etc/dbus-1/system.d/osmo-gsm-tester.conf - name: ensure tcpdump can be called by osmo-gsm-tester file: path: /usr/sbin/tcpdump group: osmo-gsm-tester mode: 750 - name: create a symlink for tcpdump file: src: /usr/sbin/tcpdump dest: /usr/local/bin/tcpdump state: link - name: add correct capabilities to tcpdump capabilities: path: /usr/sbin/tcpdump capability: cap_net_raw,cap_net_admin=eip state: present - name: allow core files for the group osmo-gsm-tester copy: content: "@osmo-gsm-tester - core unlimited" dest: /etc/security/limits.d/osmo-gsm-tester_allowcore.conf - name: allow rt priority for the group osmo-gsm-tester copy: content: "@osmo-gsm-tester - rtprio 99" dest: /etc/security/limits.d/osmo-gsm-tester_rtprio.conf - name: create a wrapper script to add CAP_NET_RAW copy: src: osmo-gsm-tester_setcap_net_raw.sh dest: /usr/local/bin/osmo-gsm-tester_setcap_net_raw.sh mode: 755 - name: allow osmo-gsm-tester sudo osmo-gsm-tester_setcap_net_raw.sh copy: content: | %osmo-gsm-tester ALL=(root) NOPASSWD: /usr/local/bin/osmo-gsm-tester_setcap_net_raw.sh dest: /etc/sudoers.d/osmo-gsm-tester_setcap_net_raw mode: 0440 - name: create a wrapper script to add CAP_NET_ADMIN copy: src: osmo-gsm-tester_setcap_net_admin.sh dest: /usr/local/bin/osmo-gsm-tester_setcap_net_admin.sh mode: 755 - name: allow osmo-gsm-tester sudo osmo-gsm-tester_setcap_net_admin.sh copy: content: | %osmo-gsm-tester ALL=(root) NOPASSWD: /usr/local/bin/osmo-gsm-tester_setcap_net_admin.sh dest: /etc/sudoers.d/osmo-gsm-tester_setcap_net_admin mode: 0440 - name: create a wrapper script to run processes on modem netns copy: src: osmo-gsm-tester_netns_exec.sh dest: /usr/local/bin/osmo-gsm-tester_netns_exec.sh mode: 755 - name: allow osmo-gsm-tester sudo osmo-gsm-tester_netns_exec.sh copy: content: | %osmo-gsm-tester ALL=(root) NOPASSWD: /usr/local/bin/osmo-gsm-tester_netns_exec.sh dest: /etc/sudoers.d/osmo-gsm-tester_netns_exec mode: 0440 - name: create a wrapper script to move modem net iface into its own netns copy: src: osmo-gsm-tester_netns_setup.sh dest: /usr/local/bin/osmo-gsm-tester_netns_setup.sh mode: 755 - name: allow osmo-gsm-tester sudo osmo-gsm-tester_netns_setup.sh copy: content: | %osmo-gsm-tester ALL=(root) NOPASSWD: /usr/local/bin/osmo-gsm-tester_netns_setup.sh dest: /etc/sudoers.d/osmo-gsm-tester_netns_setup mode: 0440 - name: logrotate limit filesizes to 10M copy: content: "maxsize 10M" dest: /etc/logrotate.d/maxsize - name: install sispmctl (usb power socket) apt: name: sispmctl - name: allow group osmo-gsm-tester to access sispm devices copy: src: 60-sispmctl.rules dest: /etc/udev/rules.d/ notify: restart udev - name: allow group osmo-gsm-tester to access LMS devices copy: src: 64-limesuite.rules dest: /etc/udev/rules.d/ notify: restart udev - name: use persistent naming for modem network interfaces copy: src: 70-net-setup-link-modems.rules dest: /etc/udev/rules.d/ notify: restart udev - name: avoid dhcpcd managing modem interfaces and racing with udev rename lineinfile: path: /etc/dhcpcd.conf regexp: '^denyinterfaces' line: 'denyinterfaces ww* r*'