# Install MythTV backend service. # # === Global variables # # $mythtv_dbhost: # Database server name (defaults to localhost). # # $mythtv_dbname: # Database name (defaults to mythconverg). # # $mythtv_dbuser: # Database user name (defaults to mythtv). # # $mythtv_dbpass: # Database password. # class mythtv::backend { if ! $mythtv_dbhost { $mythtv_dbhost = "localhost" } if ! $mythtv_dbuser { $mythtv_dbuser = "mythtv" } if ! $mythtv_dbname { $mythtv_dbname = "mythconverg" } include user::system realize(User["mythtv"], Group["mythtv"]) include mysql::client package { [ "mythtv-backend", "mythtv-setup", "mythtv-docs", "perl-DBD-MySQL", ]: ensure => installed, require => [ User["mythtv"], Group["mythtv"], ], } file { "/etc/mythtv/mysql.txt": ensure => present, content => template("mythtv/mysql.txt.erb"), mode => "0640", owner => root, group => mythtv, notify => Service["mythbackend"], require => Package["mythtv-backend"], } file { "/etc/mythtv/config.xml": ensure => present, content => template("mythtv/config.xml.erb"), mode => "0640", owner => root, group => mythtv, notify => Service["mythbackend"], require => Package["mythtv-backend"], } file { "/etc/sysconfig/mythbackend": ensure => present, source => "puppet:///modules/mythtv/mythbackend", mode => "0644", owner => root, group => root, notify => Service["mythbackend"], require => Package["mythtv-backend"], } file { "/root/.mythtv": ensure => link, target => "/etc/mythtv", force => true, require => Package["mythtv-backend"], } service { "mythbackend": ensure => running, enable => true, hasstatus => true, require => [ Package["mythtv-backend"], Package["mythtv-setup"], ], } file { "/etc/cron.daily/mythorphans": ensure => present, source => "puppet:///modules/mythtv/mythorphans", mode => "0755", owner => root, group => root, } } # Install MythTV daily cron jobs. # # This class should be included only to one host. # class mythtv::cron { require mythtv::backend package { [ "perl-MythTV", "perl-Net-UPnP" ]: ensure => installed, } file { "/etc/cron.daily/mythfilldatabase": ensure => present, source => "puppet:///modules/mythtv/mythfilldatabase", mode => "0755", owner => root, group => root, } file { "/etc/cron.daily/mythoptimize": ensure => present, source => "puppet:///modules/mythtv/mythoptimize", mode => "0755", owner => root, group => root, } } # Install MythTV web frontend. # class mythtv::mythweb { package { [ "mythweb", "mythweather" ]: ensure => installed, } apache::configfile { "mythweb.conf": content => template("mythtv/mythweb.conf.erb"), http => false, require => Package["mythweb"], } if $::operatingsystem == "Fedora" { if $::operatingsystemrelease < 13 { $context = "httpd_sys_content_rw_t" } else { $context = "httpd_sys_rw_content_t" } } selinux::manage_fcontext { "/usr/share/mythweb/data(/.*)?": type => $context, before => File["/usr/share/mythweb/data"], } if ! $apache::sslserver::group { fail("\$apache::sslserver::group not defined, include apache::sslserver class before mythtv::mythweb class") } file { [ "/usr/share/mythweb/data", "/usr/share/mythweb/data/tv_icons", "/usr/share/mythweb/data/cache", ]: ensure => directory, mode => "0770", owner => "root", group => $apache::sslserver::group, seltype => "httpd_sys_rw_content_t", require => Package["mythweb"], } }