235 lines
6.2 KiB
Puppet
235 lines
6.2 KiB
Puppet
# Class: rhizo_base::osmocom
|
|
#
|
|
# This module manages the Osmocom stack
|
|
#
|
|
# Parameters: none
|
|
#
|
|
# Actions:
|
|
#
|
|
|
|
class rhizo_base::osmocom {
|
|
|
|
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')))
|
|
|
|
package { "osmocom-nitb":
|
|
ensure => 'absent'
|
|
}
|
|
|
|
package { [ 'osmo-stp', 'osmo-mgw', 'osmo-sgsn',
|
|
'python3-osmopy-libs', 'python3-osmopy-utils' ]:
|
|
ensure => 'installed',
|
|
require => Class['rhizo_base::apt']
|
|
}
|
|
|
|
$bsc_version = $repo ? {
|
|
'latest' => '1.7.0',
|
|
'nightly' => 'latest',
|
|
default => '1.7.0',
|
|
}
|
|
|
|
package { [ "osmocom-$repo" ]:
|
|
ensure => 'installed'
|
|
}
|
|
|
|
package { [ 'osmo-bsc' ]:
|
|
ensure => $bsc_version,
|
|
require => Class['rhizo_base::apt'],
|
|
}
|
|
|
|
package { [ 'osmo-msc' ]:
|
|
ensure => 'installed',
|
|
require => Class['rhizo_base::apt'],
|
|
notify => Exec['sms_pragma_wal']
|
|
}
|
|
|
|
package { [ 'libsmpp1', 'libosmo-sigtran5' ]:
|
|
ensure => 'latest',
|
|
}
|
|
|
|
package { [ 'osmo-hlr' ]:
|
|
ensure => 'installed',
|
|
require => Class['rhizo_base::apt'],
|
|
notify => Exec['hlr_pragma_wal']
|
|
}
|
|
|
|
$sipcon_version = $repo ? {
|
|
'latest' => '1.5.0',
|
|
'nightly' => 'latest',
|
|
default => '1.5.0',
|
|
}
|
|
|
|
package { [ 'osmo-sip-connector' ]:
|
|
ensure => $sipcon_version,
|
|
require => Class['rhizo_base::apt'],
|
|
}
|
|
|
|
$utils_version = $repo ? {
|
|
'latest' => '1.7.0',
|
|
'nightly' => 'latest',
|
|
default => '1.7.0',
|
|
}
|
|
|
|
package { [ 'osmo-bsc-meas-utils' ]:
|
|
ensure => $utils_version,
|
|
}
|
|
|
|
package { [ 'libosmocore-utils' ]:
|
|
ensure => 'installed',
|
|
}
|
|
|
|
$ts0_phys_chan = "CCCH"
|
|
$ts1_phys_chan = "SDCCH8"
|
|
|
|
if $mncc_codec == "AMR" {
|
|
$phys_chan = "TCH/H"
|
|
} else {
|
|
$phys_chan = "TCH/F"
|
|
}
|
|
|
|
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/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',
|
|
source => 'puppet:///modules/rhizo_base/systemd/osmo-msc.override'
|
|
}
|
|
|
|
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 { 'hlr_pragma_wal':
|
|
command =>
|
|
'/usr/bin/sqlite3 /var/lib/osmocom/hlr.db "PRAGMA journal_mode=wal;"',
|
|
require => Class['rhizo_base::packages'],
|
|
refreshonly => true,
|
|
}
|
|
|
|
exec { 'sms_pragma_wal':
|
|
command =>
|
|
'/usr/bin/sqlite3 /var/lib/osmocom/sms.db "PRAGMA journal_mode=wal;"',
|
|
require => Class['rhizo_base::packages'],
|
|
refreshonly => true,
|
|
}
|
|
|
|
exec { 'notify-osmo-restart':
|
|
command => '/bin/echo 1 > /tmp/OSMO-dirty',
|
|
refreshonly => true,
|
|
}
|
|
|
|
}
|