# Class: rhizo_base::osmocom # # This module manages the Osmocom stack # # Parameters: none # # Actions: # class rhizo_base::osmocom { contain "rhizo_base::osmocom::$lsbdistcodename" } class rhizo_base::osmocom::buster inherits rhizo_base::osmocom::common { package { [ "osmocom-latest" ]: ensure => 'installed' } package { [ 'osmo-bsc', 'osmo-bsc-meas-utils' ]: ensure => '1.9.0rhizo2b', require => Class['rhizo_base::apt'], } package { [ 'osmo-msc' ]: require => Class['rhizo_base::apt'], ensure => '1.9.0+rhizo7b', } package { [ 'osmo-sgsn' ]: ensure => '1.9.0', require => Class['rhizo_base::apt'], } package { [ 'osmo-sip-connector' ]: ensure => '1.6.1rhizo1b', require => Class['rhizo_base::apt'], } } class rhizo_base::osmocom::stretch inherits rhizo_base::osmocom::common { package { [ 'osmo-bsc' ]: ensure => '1.9.0rhizo1', require => Class['rhizo_base::apt'], } package { [ 'osmo-msc' ]: ensure => '1.9.0+rhizo7s', require => Class['rhizo_base::apt'], } package { [ 'osmo-sgsn' ]: ensure => '1.9.0rhizo1', require => Class['rhizo_base::apt'], } package { [ 'osmo-sip-connector' ]: ensure => '1.6.1rhizo1', require => Class['rhizo_base::apt'], } package { [ 'osmo-bsc-meas-utils' ]: ensure => 'installed', } } class rhizo_base::osmocom::common { include systemd $network_name = $rhizo_base::network_name $mcc = $rhizo_base::mcc $mnc = $rhizo_base::mnc $a5 = "1" $bts = hiera('rhizo::bts') $smsc_password = $rhizo_base::smsc_password $smpp_password = $rhizo_base::smpp_password $hlr_db = hiera('rhizo::hlr_db', '/var/lib/osmocom/hlr.db') $sms_db = $rhizo_base::sms_db $mncc_codec = $rhizo_base::mncc_codec $mncc_ip_address = $rhizo_base::mncc_ip_address $vpn_ip_address = hiera('rhizo::vpn_ip_address') $sgsn_ip_address = hiera('rhizo::sgsn_ip_address') $ggsn_ip_address = hiera('rhizo::ggsn_ip_address') $repo = hiera('rhizo::osmo_repo', 'latest') $ipa_name = hiera('rhizo::ipa_name', sprintf("%s-%s-%s-%s", $mcc, $mnc, $bts[0]['lac'], regsubst($vpn_ip_address, '^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$', '\\3-\\4'))) $mgw_num_ep = hiera('rhizo::mgw_num_ep', $bts.size * 24) $osmo_local_bin = hiera('rhizo::osmo_local_bin', []) package { "osmocom-nitb": ensure => 'absent' } package { [ 'python3-osmopy-libs', 'python3-osmopy-utils', 'systemd-coredump', 'libosmocore-utils' ]: ensure => 'installed', } package { [ 'libsmpp1', 'libosmo-sigtran7', 'libosmocore', 'libosmo-mgcp-client9', 'libosmoabis10', 'libosmo-mslookup0', 'libosmonetif8', 'libosmotrau2', 'libosmo-gsup-client0', 'osmo-stp', 'libgtp6', 'osmo-hlr', 'osmo-mgw' ]: ensure => 'latest', require => Class['rhizo_base::apt'] } $ts0_phys_chan = "CCCH" $ts1_phys_chan = "SDCCH8" if $mncc_codec == "GSM" { $phys_chan = "TCH/F" } else { $phys_chan = "TCH/H" } unless hiera('rhizo::local_osmobsc_cfg') == "1" { file { '/etc/osmocom/osmo-bsc.cfg': ensure => file, content => template( 'rhizo_base/osmo-bsc-head.erb', 'rhizo_base/osmo-bsc-bts.erb', 'rhizo_base/osmo-bsc-tail.erb'), } } # We used to notify the osmo-nitb on config changes for a restart # but with the service outage that restarting the split stack entails, # I don't want to even give puppet the possibility to do that. file { '/etc/osmocom/stack': source => 'puppet:///modules/rhizo_base/stack', owner => 'root', mode => '0750', } file { '/etc/osmocom/osmo-stp.cfg': content => template('rhizo_base/osmo-stp.cfg.erb'), require => Package['osmo-stp'], } file { '/etc/osmocom/osmo-hlr.cfg': content => template('rhizo_base/osmo-hlr.cfg.erb'), require => Package['osmo-hlr'], } file { '/etc/osmocom/osmo-msc.cfg': content => template('rhizo_base/osmo-msc.cfg.erb'), require => Package['osmo-msc'], } file { '/etc/osmocom/osmo-mgw.cfg': content => template('rhizo_base/osmo-mgw.cfg.erb'), require => Package['osmo-mgw'], } file { '/etc/osmocom/osmo-mgw2.cfg': content => template('rhizo_base/osmo-mgw2.cfg.erb'), require => Package['osmo-mgw'], } file { '/etc/osmocom/osmo-sip-connector.cfg': content => template('rhizo_base/osmo-sip-connector.cfg.erb'), require => Package['osmo-sip-connector'], } file { '/etc/osmocom/osmo-sgsn.cfg': content => template('rhizo_base/osmo-sgsn.cfg.erb'), require => Package['osmo-sgsn'], } systemd::dropin_file { 'override.conf': unit => 'osmo-msc.service', content => template('rhizo_base/osmo-msc.override.erb') } systemd::dropin_file { 'hlr-override': unit => 'osmo-hlr.service', filename => 'override.conf', source => 'puppet:///modules/rhizo_base/systemd/osmo-hlr.override' } file { '/etc/tinc/check_mdns_route': ensure => present, source => 'puppet:///modules/rhizo_base/check_mdns_route', mode => '0750' } file { '/lib/systemd/system/osmo-mgw-msc.service': ensure => present, source => 'puppet:///modules/rhizo_base/systemd/osmo-mgw-msc.service', } file { '/usr/local/bin/vty': source => 'puppet:///modules/rhizo_base/vty', owner => 'root', mode => '0755', } file { '/usr/lib/python2.7/dist-packages/osmopy': ensure => link, target => '../../python3/dist-packages/osmopy' } service { [ 'osmo-stp', 'osmo-hlr', 'osmo-bsc', 'osmo-msc', 'osmo-mgw', 'osmo-sgsn', 'osmo-sip-connector' ]: provider => 'systemd', enable => true, ensure => 'running', require => Package[ 'python3-osmopy-utils', 'python3-osmopy-libs' ], } service { [ 'osmocom-nitb', 'osmo-mgw-msc' ]: provider => 'systemd', enable => false, ensure => 'stopped' } service { 'osmo-nitb': provider => 'runit', ensure => 'stopped' } exec { 'notify-osmo-restart': command => '/bin/echo 1 > /tmp/OSMO-dirty', refreshonly => true, } }