Ubuntun käyttämä Debianin APT-pakettijärjestelmä toimii oletuksena interaktiivisesti. Kun uusi paketti asennetaan apt-get install -komennolla, se kyselee usein käyttäjältä erilaisia tietokanta-asetuksia ja muita preferenssejä. Tämä hankaloittaa pakettien asentamista automaattisesti esimeriksi Puppetilla.

Ongelma on ratkaistavissa preseedaamalla tarvittavat asetukset debconfille etukäteen. Puppet tukee preseedausta suoraan package-direktiivisessä.

Ideana on asentaa paketti kerran käsin niin, että tarvittavat asetukset tallentuvat muistiin. Asetukset esimerkiksi phpbb3-paketille saa sitten näkyviin näin:

sudo debconf-get-selections | grep phpbb3

Asetuksia on todennäköisesti aika paljon, joten voi käyttää harkintaa siinä, tarvitaanko välttämättä kaikkia preseedaukseen. Itse kokeillessani nämä kaksi riviä riittivät phpbb3:n tapauksessa:

phpbb3  phpbb3/httpd    multiselect     apache2
phpbb3  phpbb3/dbconfig-install boolean false

Preseedatut asetukset voi ottaa käyttöön ainakin kahdella eri tavalla. Ne voi laittaa väliaikaistiedostoon ja ottaa käyttöön komennolla:

sudo debconf-set-selections /tmp/phpbb3.preseed

Tai jos käyttää Puppetia, niin package-direktiiviin voi littää responsefile-attribuutin osoittamaan samaan tiedostoon (joka pitää tietysti ensin luoda toisella direktiivillä):

package { 'phpbb3':
        ensure => installed,
        responsefile => '/tmp/preseed.phpbb3',
        require => File['/tmp/preseed.phpbb3'],
}

Tällaisen asennuksen jälkeen täytyy sitten muistaa vielä luoda tarvittavat konfiguraatiotiedostot, jos niiden automaattisen (interaktiivisen) luomisen on ohittanut paketin asennusvaiheessa.

Published 18.6.2011