X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Fbuildd%2Fmanifests%2Finit.pp;h=29a35246afe7f770bacfeeeff6a0f5697392c828;hb=4c031bc2c3d1d6ddc9f2478bf9c68cffbb5e1d9e;hp=02231fe5ea5baf576e4b12cb7e871d2f8577a0d8;hpb=f7318438034afccb3b83c7cc5be01834be56fb77;p=mirror%2Fdsa-puppet.git diff --git a/modules/buildd/manifests/init.pp b/modules/buildd/manifests/init.pp index 02231fe5e..29a35246a 100644 --- a/modules/buildd/manifests/init.pp +++ b/modules/buildd/manifests/init.pp @@ -1,83 +1,65 @@ class buildd ($ensure=present) { + # Do nothing until we get the buildd user from ldap + if $::buildd_user_exists { + # + # home directory + # + file { '/home/buildd': + ensure => directory, + mode => '2755', + group => buildd, + owner => buildd, + } - include schroot - package { 'sbuild': - ensure => installed, - tag => extra_repo, - } - package { 'libsbuild-perl': - ensure => installed, - tag => extra_repo, - before => Package['sbuild'] - } + # + # sbuild configuration, including chroots + # + include schroot - package { 'apt-transport-https': - ensure => installed, - } - if $ensure == present { - package { 'dupload': + package { 'sbuild': ensure => installed, + tag => extra_repo, } - file { '/etc/dupload.conf': - source => 'puppet:///modules/buildd/dupload.conf', - require => Package['dupload'], + package { 'libsbuild-perl': + ensure => installed, + tag => extra_repo, + before => Package['sbuild'] + } + file { '/etc/sbuild/sbuild.conf': + source => 'puppet:///modules/buildd/sbuild.conf', + require => Package['sbuild'], + } + if $has_srv_buildd { + concat::fragment { 'dsa-puppet-stuff--buildd-update-schroots': + target => '/etc/cron.d/dsa-puppet-stuff', + content => @(EOF) + 13 22 * * 0,3 root PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin setup-all-dchroots buildd + | EOF + } + } + exec { 'add-buildd-user-to-sbuild': + command => 'adduser buildd sbuild', + onlyif => "getent group sbuild > /dev/null && ! getent group sbuild | grep '\\' > /dev/null" } - site::linux_module { 'dm_snapshot': } - ferm::module { 'nf_conntrack_ftp': } - } - - site::aptrepo { 'buildd': - ensure => absent, - } - - $suite = $::lsbdistcodename ? { - squeeze => $::lsbdistcodename, - wheezy => $::lsbdistcodename, - undef => 'squeeze', - default => 'wheezy' - } - site::aptrepo { 'buildd.debian.org': - key => 'puppet:///modules/buildd/buildd.debian.org.asc', - url => 'https://buildd.debian.org/apt/', - suite => $suite, - components => 'main', - require => Package['apt-transport-https'], - } - if $::hostname in [alkman,porpora,zandonai] { - site::aptrepo { 'buildd.debian.org-proposed': - url => 'https://buildd.debian.org/apt/', - suite => "${suite}-proposed", - components => 'main', - require => Package['apt-transport-https'], + # + # dupload configuration + # + package { 'dupload': + ensure => installed, } - } - - if $::hostname in [krenek] { - site::aptrepo { 'buildd.debian.org-experimental': - url => 'https://buildd.debian.org/apt/', - suite => "${suite}-experimental", - components => 'main', - require => Package['apt-transport-https'], + file { '/etc/dupload.conf': + source => 'puppet:///modules/buildd/dupload.conf', + require => Package['dupload'], } - } + include ferm::ftp_conntrack - # 'bad' extension - file { '/etc/apt/preferences.d/buildd.debian.org': - ensure => absent, - } - file { '/etc/apt/preferences.d/buildd': - content => template('buildd/etc/apt/preferences.d/buildd'), - before => Site::Aptrepo['buildd.debian.org'] - } - file { '/etc/cron.d/dsa-buildd': - source => 'puppet:///modules/buildd/cron.d-dsa-buildd', - require => Package['debian.org'] - } - if $::lsbmajdistrelease >= 7 { + # + # Aptitude killer + # package { 'python-psutil': ensure => installed, } @@ -85,8 +67,164 @@ class buildd ($ensure=present) { source => 'puppet:///modules/buildd/buildd-schroot-aptitude-kill', mode => '0555', } - file { '/etc/cron.d/puppet-buildd-aptitude': - content => "*/5 * * * * root /usr/local/sbin/buildd-schroot-aptitude-kill\n", + + concat::fragment { 'dsa-puppet-stuff--buildd-aptitude-killer': + target => '/etc/cron.d/dsa-puppet-stuff', + content => @(EOF) + */5 * * * * root /usr/local/sbin/buildd-schroot-aptitude-kill + | EOF + } + + + # + # GPG/SSH key generation + # + file { '/home/buildd/.gnupg': + ensure => directory, + mode => '700', + group => buildd, + owner => buildd, + } + file { '/home/buildd/.gnupg/gpg.conf': + content => "personal-digest-preferences SHA512\n", + group => buildd, + owner => buildd, + } + + if ! $::buildd_key { + exec { 'create-buildd-key': + command => '/bin/su - buildd -c \'mkdir -p -m 02700 .ssh && ssh-keygen -C "`whoami`@`hostname` (`date +%Y-%m-%d`)" -P "" -f .ssh/id_rsa -q\'', + onlyif => '/usr/bin/getent passwd buildd > /dev/null && ! [ -e /home/buildd/.ssh/id_rsa ]' + } + } + + # + # buildd/pybuildd configuration + # + if $::hostname in [x86-grnet-01,x86-grnet-02,zani] { + # + # pybuildd configuration + # + package { 'buildd': + ensure => purged, + } + + package { ['python3-retrying', 'python3-yaml']: + ensure => installed, + } + file { '/home/buildd/.profile': + content => @(EOT), + export XDG_RUNTIME_DIR="/run/user/$(id -u)" + export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" + | EOT + group => buildd, + owner => buildd, + } + file { '/home/buildd/logs': + ensure => directory, + mode => '2750', + group => buildd, + owner => buildd, + } + file { '/var/lib/systemd/linger': + ensure => directory, + mode => '755', + } + file { "/var/lib/systemd/linger/buildd": + ensure => present, + } + file { '/etc/systemd/journald.conf.d': + ensure => directory, + mode => '755', + } + file { '/etc/systemd/journald.conf.d/persistency.conf': + source => 'puppet:///modules/dsa_systemd/persistency.conf', + } + + # Make sure that the build directory have the correct permissions. + # This should go away once pybuildd issue #3 is solved. + file { '/home/buildd/build': + ensure => directory, + mode => '2750', + group => buildd, + owner => buildd, + } + # work around https://salsa.debian.org/wb-team/pybuildd/issues/11 + concat::fragment { 'dsa-puppet-stuff--pybuildd-expire-logs': + target => '/etc/cron.d/dsa-puppet-stuff', + content => @(EOF) + @daily buildd [ -d ~buildd/logs ] && find ~buildd/logs -type f -mtime +90 -delete + | EOF + } + } else { + # + # buildd configuration + # + file { '/home/buildd/build': + ensure => directory, + mode => '2750', + group => buildd, + owner => buildd, + } + file { '/home/buildd/logs': + ensure => directory, + mode => '2750', + group => buildd, + owner => buildd, + } + file { '/home/buildd/old-logs': + ensure => directory, + mode => '2750', + group => buildd, + owner => buildd, + } + file { '/home/buildd/upload-security': + ensure => directory, + mode => '2750', + group => buildd, + owner => buildd, + } + file { '/home/buildd/stats': + ensure => directory, + mode => '2755', + group => buildd, + owner => buildd, + } + file { '/home/buildd/stats/graphs': + ensure => directory, + mode => '2755', + group => buildd, + owner => buildd, + } + file { '/home/buildd/upload': + ensure => directory, + mode => '2755', + group => buildd, + owner => buildd, + } + file { '/home/buildd/.forward': + content => "|/usr/bin/buildd-mail\n", + group => buildd, + owner => buildd, + } + + package { 'buildd': + ensure => installed, + } + file { '/etc/buildd/buildd.conf': + source => 'puppet:///modules/buildd/buildd.conf', + require => Package['buildd'], + } + + concat::fragment { 'dsa-puppet-stuff--buildd': + target => '/etc/cron.d/dsa-puppet-stuff', + source => 'puppet:///modules/buildd/cron.d-dsa-buildd', + require => Package['debian.org'] + } + service { 'buildd': + enable => false, + ensure => 'stopped', + } } } }