osmo-ci/ansible/roles/gsm-tester/tasks/main.yml

461 lines
9.4 KiB
YAML

---
# 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:
- 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
- liblua5.3-dev
- lua-socket
tags:
- osmocom
# mdbus2 is not available in debian10. TODO: compile it for >9
- name: install mdbus2
apt:
name:
- mdbus2
when: ansible_distribution == 'Debian' and ansible_distribution_version <= '9'
tags:
- ofono
- modem
- name: install srsLTE build-only dependencies
apt:
name:
- cmake
- libfftw3-dev
- libmbedtls-dev
- libboost-program-options-dev
- libconfig++-dev
- libsctp-dev
- libpcsclite-dev
- libuhd-dev
- libczmq-dev
- libsoapysdr-dev
tags:
- srs
- name: install srsLTE runtime extra dependencies (Debian)
apt:
name:
- soapysdr-module-lms7
when: ansible_distribution == 'Debian'
tags:
- srs
- name: install srsLTE runtime extra dependencies (Ubuntu)
apt:
name:
- soapysdr0.6-module-lms7
when: ansible_distribution == 'Ubuntu'
tags:
- srs
- name: install ofono build dependencies
apt:
name: ofono
state: build-dep
tags:
- ofono
- modem
- name: install libqmi-glib a dependency of sysmocom ofono
apt:
name: libqmi-glib-dev
tags:
- ofono
- modem
- name: install uhub dependencies
apt:
name:
- libusb-1.0-0-dev
tags:
- modem
- name: setup uhubctl repository
git:
repo: "https://github.com/mvp/uhubctl.git"
dest: /root/uhubctl
version: master
clone: yes
update: no
tags:
- modem
- name: build uhubctl
shell: |
make && \
make install
args:
chdir: /root/uhubctl
creates: /usr/sbin/uhubctl
tags:
- modem
# 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:
- modem
- name: setup ofono repository
git:
repo: 'https://gitea.sysmocom.de/sysmocom/ofono'
dest: /root/ofono
version: osmo-gsm-tester
clone: yes
update: no
tags:
- ofono
- modem
- 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
- modem
- name: ensure ofono is started
service:
name: ofono
state: started
enabled: yes
tags:
- ofono
- modem
- name: install patchelf build dependencies
apt:
name:
- autoconf
tags:
- patchelf
- osmo-gsm-tester-proc
# patchelf 0.9 available in debian has bugs with certain binaries. Version 0.10
# fails on other binaries, so we need version 0.11 installed in /usr/local/bin
# (takes preference in PATH)
- name: setup patchelf v0.11 repository
git:
repo: 'https://github.com/NixOS/patchelf.git'
dest: /root/patchelf
version: "0.11"
clone: yes
update: no
tags:
- patchelf
- osmo-gsm-tester-proc
- name: build patchelf v0.11
shell: |
autoreconf -fi && \
./configure --prefix=/usr/local && \
make && \
make install
args:
chdir: /root/patchelf
creates: /usr/local/bin/patchelf
tags:
- patchelf
- osmo-gsm-tester-proc
- name: install gsm tester dependencies (main)
apt:
name:
- sqlite3
- python3
- python3-setuptools
- python3-yaml
- python3-mako
- python3-gi
- python3-watchdog
- python3-numpy
- python3-websocket
- ofono
- patchelf
- libcap2-bin
- python3-pip
- udhcpc
tags:
- osmo-gsm-tester-main
- name: install gsm tester dependencies (proc)
apt:
name:
- tcpdump
- patchelf
- libcap2-bin
- iperf3
- sudo
tags:
- osmo-gsm-tester-proc
- 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
- osmo-gsm-tester-main
- name: create group osmo-gsm-tester
group:
name: osmo-gsm-tester
tags:
- osmo-gsm-tester-main
- osmo-gsm-tester-proc
- name: Add jenkins user to osmo-gsm-tester group
user:
name: "{{ jenkins_user }}"
groups: "{{ item }}"
append: yes
shell: /bin/bash
with_items:
- osmo-gsm-tester
tags:
- osmo-gsm-tester-main
- osmo-gsm-tester-proc
- name: add jenkins user to systemd-journal and dialout groups
user:
name: "{{ jenkins_user }}"
groups: "{{ item }}"
append: yes
shell: /bin/bash
with_items:
- systemd-journal
- dialout
tags:
- osmo-gsm-tester-main
- name: setup state directory
file:
path: /var/tmp/osmo-gsm-tester/state
state: directory
group: osmo-gsm-tester
mode: g+rwxs
tags:
- osmo-gsm-tester-main
- name: install acl
apt:
name: acl
tags:
- osmo-gsm-tester-main
# 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
tags:
- osmo-gsm-tester-main
- name: create trials directory
file:
path: /var/tmp/osmo-gsm-tester/trials
state: directory
group: osmo-gsm-tester
mode: g+rwxs
tags:
- osmo-gsm-tester-main
- name: ensure tcpdump can be called by osmo-gsm-tester
file:
path: /usr/sbin/tcpdump
group: osmo-gsm-tester
mode: 0750
tags:
- osmo-gsm-tester-proc
- tcpdump
- name: create a symlink for tcpdump
file:
src: /usr/sbin/tcpdump
dest: /usr/local/bin/tcpdump
state: link
tags:
- osmo-gsm-tester-proc
- tcpdump
- name: add correct capabilities to tcpdump
capabilities:
path: /usr/sbin/tcpdump
capability: cap_net_raw,cap_net_admin=eip
state: present
tags:
- osmo-gsm-tester-proc
- tcpdump
- 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
tags:
- osmo-gsm-tester-proc
- 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
tags:
- osmo-gsm-tester-proc
- name: setup osmo-gsm-tester repository
git:
repo: 'https://gitea.osmocom.org/cellular-infrastructure/osmo-gsm-tester'
dest: /root/osmo-gsm-tester
version: master
clone: yes
update: no
tags:
- osmo-gsm-tester-proc
- name: Install osmo-gsm-tester script helpers to /usr/local/bin (PATH) (mkdir)
file: path=/usr/local/bin state=directory
- name: Install osmo-gsm-tester script helpers to /usr/local/bin (PATH)
shell: |
cp utils/bin/*.sh /usr/local/bin/
args:
chdir: /root/osmo-gsm-tester
tags:
- osmo-gsm-tester-proc
- name: Install osmo-gsm-tester sudoers.d files to /etc/sudoers.d/ (PATH (mkdir)
file: path=/etc/sudoers.d/ state=directory
- name: Install osmo-gsm-tester sudoers.d files to /etc/sudoers.d/ (PATH)
shell: |
cp utils/sudoers.d/* /etc/sudoers.d/
args:
chdir: /root/osmo-gsm-tester
tags:
- osmo-gsm-tester-proc
- name: Install dbus policy file to allow osmo-gsm-tester group to access ofono
shell: |
cp utils/dbus-1/* /etc/dbus-1/system.d/
args:
chdir: /root/osmo-gsm-tester
tags:
- ofono
- modem
- name: logrotate limit filesizes to 10M
copy:
content: "maxsize 10M"
dest: /etc/logrotate.d/maxsize
tags:
- osmo-gsm-tester-main
- name: install sispmctl (usb power socket)
apt:
name: sispmctl
tags:
- sispm
- name: allow group osmo-gsm-tester to access sispm devices
copy:
src: 60-sispmctl.rules
dest: /etc/udev/rules.d/
notify: restart udev
tags:
- sispm
- name: allow group osmo-gsm-tester to access LMS devices
copy:
src: 64-limesuite.rules
dest: /etc/udev/rules.d/
notify: restart udev
tags:
- lms
- name: use persistent naming for modem network interfaces
copy:
src: 70-net-setup-link-modems.rules
dest: /etc/udev/rules.d/
notify: restart udev
tags:
- modem
- name: create remote rundir directories
file:
path: "/osmo-gsm-tester-{{ item }}"
state: directory
group: osmo-gsm-tester
mode: g+rwxs
with_items:
- srsenb
- srsepc
- srsue
- trx
- amarisoftenb
- amarisoftepc
- amarisoftue
tags:
- osmo-gsm-tester-proc
- osmocom
- srs
- name: avoid dhcpcd managing modem interfaces and racing with udev rename
lineinfile:
path: /etc/dhcpcd.conf
regexp: '^denyinterfaces'
line: 'denyinterfaces ww* r*'
tags:
tags:
- osmo-gsm-tester-main
- dhcpcd