Puppet

Puppet, kokoonpanojen hallintaohjelma on tehty hallitsemaan useita palvelimia yhden koneen kautta. Siinä asennetaan moduulit yhdelle ”master” koneelle, josta sitten jokainen ”slave” kone käy hakemassa tietoja puolentunnin välein. Tämä on aivan loistava tapa hallita suuria määriä koneita, koska koneet eivät tarvitse olla kokoajan edes päällä. Kun slave kone käynnistetään, se käy tarkistamassa masterilta, onko tullut jotain uutta moduulia juuri kyseiselle koneelle ja päivittää itsensä sen mukaan.
Tämän kurssin pääsääntöinen ohjelma on Puppet ja opettelemme sen käyttöä.

Moduuli on paketti käskyjä, joka kertoo koneelle mitä sen joutuu päivittää. Siinä kerrotaan myös mitkä ohjelmat joutuu olla päällä ja jos ohjelma ei ole vaikka päällä, se käynnistää sen samalla jos näin on kerrottu moduulissa.

Puppet master

PuppetMaster on on ohjelma, johon puppet-orjat ottavat yhteyttä 30minuutin välein jos toisin ei ole määrätty. Kun slave-kone ottaa ensimmäisen kerran yhteyttä, niin Master-koneella joutuu hyväksyä uusi kone. Tämän jälkeen sama kone voi ottaa yhteyttä ilman hyväksyntää.

Seuraavat komennot tehdään master-koneella:

sudo apt-get update
sudo apt-get install -y puppetmaster
sudo service puppetmaster stop
sudo rm -r /var/lib/puppet/ssl

Poistamme yhden kansion, koska siellä on väärin tehdyt ssl salasanat. Muokkaamme vähän puppet.confia ja ohjelma tekee sen jälkeen uudet salasanat.

$ sudo nano /etc/puppet/puppet.conf

Sieltä löytyy 15 riviä tekstiä. Laitamme seuraavan tekstin [master] taulun alle.

dns_alt_names = puppet, palvelin.local

Itse käytän puppettia vain paikallisessa verkossa. Palvelinnimen saa selville kun kirjoittaa HOSTNAME. Minun palvelimen nimi on… palvelin :). Lisätkää itse oma hostname ja sen jälkeen .local, niin toimii vain paikallisessa verkossa.
Sitten käynnistetään vain palvelu uudestaan.

sudo service puppetmaster start

Slave

Sitten siirrymme orja-koneelle. Ensimmäiseksi katsotaan että yhteys Masteriin varmasti toimii.

$ ping -c 1 palvelin.local

Jos yhteys toimii niin loistavaa, muuten joudut korjata ensiksi yhteyden. Yksi hyvä tapa on tietysti sammuttaa iptables/ufw ja kokeilla uudestaan pingiä.
Nyt asennamme orjakoneeseen puppetin ja konffaamme sen kuntoon.

$ sudo apt-get update
$ sudo apt-get install -y puppet
$ sudo nano /etc/puppet/puppet.conf

Tiedosto on ihan samannäköinen kuin master-puolella konffattu tiedosto. Tänne lisäämme yhden taulun lisää.

[agent]
server = palvelin.local

Seuraavaksi muutamme vielä puppetin käynnistystä.

sudo nano /etc/default/puppet
START=yes

Siellä lukee normaalisti START=no, niin sen vaihdamme.Ei muuta kuin puppetin käynnistys ja katsotaan toimiiko yhteys.

$ sudo service puppet restart

Takaisin Master-koneelle

Nyt pitäisi näkyä tällä koneella, onko orja yrittänyt ottaa yhteyttä.

sudo puppet cert --list
sudo puppet cert --sign MINKÄ_KONE_OTTI_YHTEYTTÄ

Laitan pätkän omaa terminaali näkymää tähän, jotta tiedätte suurinpiirtein mitä ylhäällä tapahtui. Huomatkaa että sammutin ufw:n, koska se esti minua ottamasta yhteyttä koneiden välillä. Etsin vielä mitä porttia puppet käyttää ja lisään sen ufw: tietoihin.

$ sudo service ufw stop
ufw stop/waiting
$ sudo puppet cert --list
jone-aspire-4810t (00:00:00:00:00:00:00:00:00:23:B5:7B:E7:05:E5:77)
$ sudo puppet cert --sign jone-aspire-4810t
notice: Signed certificate request for jone-aspire-4810t
notice: Removing file Puppet::SSL::CertificateRequest jone-aspire-4810t at
'/var/lib/puppet/ssl/ca/requests/jone-aspire-4810t.pem'

Masteri käskee

Lainaan meidän opettajan koodia tähän, koska sillä on helppo kokeilla toimiiko yhteys. GURUMME Tero Karvisen ohje.

Modules ja manifest hakemistot

Muistakaa että olemme nyt master-koneella.

$ cd /etc/puppet
$ sudo mkdir -p manifests/ modules/helloworld/manifests/
$ sudo nano manifests/site.pp
include helloworld

Tehdään helloworld-moduuli.

$ sudo nano modules/helloworld/manifests/init.pp

Lisää seuraavat rivit:

class helloworld {
        file { '/tmp/helloFromMaster':
                content => "Luethan lisää minun kirjoituksia http://www.jounirepo.com\n"
        }
}

Toimiiko?

Orja-koneella käynnistetään puppet uudestaan, niin ei tarvitse odottaa 30minuuttia.

$ sudo service puppet restart
$ cat /tmp/helloFromMaster
Luethan lisää minun kirjoituksia http://www.jounirepo.com

Ongelma

Itse asensin vielä muutamia muitakin moduuleitani ja tuli ongelma:

err: Removing mount files: /etc/puppet/files does
not exist or is not a directory

Tämän vian sai korjattua kun teki vain files hakemiston /etc/puppet/ hakemistoon.

Kommentoi ensimmäisenä

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *