Tehtävänanto
h12. Windowsin hallintaa. Tee kohta a ja jokin kohdista b – z. Kaikki kohdat tehdään Puppetilla.
a) Asenna ohjelmia Windowsiin package-resurssilla ja chocolatey providerilla. Täältä löytyy Gedit, Firefox, LibreOffice, VLC, sysinternals…
c) Asenna MSI-paketti
Harjoituksessa käytetty laitteisto/ohjelmisto:
Herra:
- Tietokone (Asus Z170-A, i7-6700K , 16GB DDR4 3200MHz, Evga 1070 sc)
- Oheishärpäkkeet
- Windows 10 Pro 64-Bit
Orja:
- 16GB Kingston DataTraveler 100 G3 USB 3.0 muistitikku
- Tietokone (GA-B85M-D3H, xeon 1230V3, 8GB DDR3 1600MHz, R9 280x)
- Oheishärpäkkeet
- Xubuntu 16.04.1
Lähtötilanne / alustavat valmistelut:
Aloitin harjoituksen tekemisen kotikoneillani lauantaina 4.12.2016.
Herran käyttäjärjestelmänä harjoituksessa toimi Windows 10 Pro, 64-bit, joka oli jo valmiiksi asennettuna koneessani. Käyttöjärjestelmän versio oli 1607 ja koontikäännös 14393.447. Windowsin kielenä oli suomi. Tietokoneellani on vain yksi käyttäjä, Markus, jota myös käytettiin tässä harjoituksessa. Asioita tehtiin pääsääntöisesti peruskäyttäjän oikeuksin, paitsi kohdissa, joissa erikseen mainittu. Tietokone oli jo harjoituksen aloitettua yhdistetty kotini langattomaan lähiverkkoon.
Yllä mainittujen lisäksi Puppet oli jo valmiiksi asennettuna, sillä se tehtiin harjoituksessa 11.
Orjana toimi veljeni tietokone, jossa käytin Xubuntua livetikulla. Xubuntun version oli 16.04.1-desktop-amd64.iso.
Herra orja arkkitehtuuri
Ohjeina käytin Tero Karvisen Windows 10 as a Puppet Slave for Ubuntu 16.04 Master artikkelia: http://terokarvinen.com/2016/windows-10-as-a-puppet-slave-for-ubuntu-16-04-master
Käytin omaa konettani Windows orjana ja veljeni koneella käytin Puppetmasteria Xubuntu-livetikulla.
Aloitin asentamalla Puppetin ja PuppetMasterin herra-linux-konelle:
$ sudo apt-get install puppet puppetmaster
Hakemistossa /etc/puppet/ muokkasin sudoeditillä puppet.conf tiedostoa:
[main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/run/puppet factpath=$vardir/lib/facter prerun_command=/etc/puppet/etckeeper-commit-pre postrun_command=/etc/puppet/etckeeper-commit-post [master] # These are needed when the puppetmaster is run by passenger # and can safely be removed if webrick is used. ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY dns_alt_names = 192.168.1.65
[master]-tagien alle kirjoitin dns_alt_names = 192.168.1.65 (masterin IP)
IP-osoitteen sain komennolla $ ifconfig.
Seuraavaksi muokkasin Windows orjan puppet.conf tiedostoa, joka löytyi:
Paikallinen levy (C:) > ProgramData > PuppetLabs > puppet > etc
Huomaa, että täytyy olla täppä ruudussa näytä piilotetut kohteet, jotta ProgramData kansiota voi edes nähdä.
Puppet.conf tiedoston muokkaaminen ei kuitenkaan heti onnistunut, vaan täytyi muokata kyseisen tiedoston oikeuksia ensin.
Tämä onnistui klikkaamalla sitä hiiren oikealla painikkeella, ja “ominaisuudet“, josta sitten aukesi seuraavan näköinen ikkuna:
Tuosta sitten mentiin “Suojaus” ja isosta napista “Muokkaa…“.
Siinä sitten annettiin käyttäjille täydet oikeudet kyseiseen tiedostoon.
Tämän jälkeen tiedoston muokkaus onnistui.
Muokkasin sitä muistiolla ja lisäsin sinne [main]-tagien alle server=192.168.1.65:
[main] server=192.168.1.65 pluginsync=true autoflush=true environment=production
Tämän jälkeen yritin ottaa yhteyttä Herraan Windows orjaltani.
C:\WINDOWS\system32>puppet agent -tdv
Info: csr_attributes file loading from C:/ProgramData/PuppetLabs/puppet/etc/csr_attributes.yaml Info: Creating a new SSL certificate request for make-pc Info: Certificate Request fingerprint (SHA256): 57:AB:CA:7E:B3:3B:92:9F:8B:00:6C:A6:42:E0:06:78:C6:57:2C:78:1B:9E:A9:99:52:36:88:B0:C6:24:9B:00 Debug: Creating new connection for https://192.168.1.65:8140 Debug: Using cached certificate for ca Debug: Creating new connection for https://192.168.1.65:8140 Debug: Creating new connection for https://192.168.1.65:8140 Info: Caching certificate for ca Debug: Creating new connection for https://192.168.1.65:8140 Debug: Using cached certificate_request for make-pc Debug: Using cached certificate for ca Debug: Creating new connection for https://192.168.1.65:8140 Debug: Using cached certificate for ca Debug: Creating new connection for https://192.168.1.65:8140 Exiting; no certificate found and waitforcert is disabled
Seuraavaksi tulikin listata sertifikaatti pyynnöt Linux herralla:
$ sudo puppet cert -list
xubuntu@xubuntu:/etc/puppet$ sudo puppet cert list "make-pc" (SHA256) 57:AB:CA:7E:B3:3B:92:9F:8B:00:6C:A6:42:E0:06:78:C6:57:2C:78:1B:9E:A9:99:52:36:88:B0:C6:24:9B:00
Sitten hyväksyin uuden sertifikaatin:
$ sudo puppet -sign cert make-pc
Testaus
Tein samankaltaisen moduulin, kuin Tero.
$ sudo mkdir /etc/puppet/modules/hellowindows/manifests/
$ sudoedit /etc/puppet/modules/hellowindows/manifests/init.pp
class hellowindows { file {"C:\Users\Markus\Desktop\hellomarkus": content => "moi markus\n", } }
Lisäksi /etc/puppet/manifests/ sijaintiin site.pp sudoeditillä, ja sen sisällöksi:
class {hellowindows:}
Tämän jälkeen kokeilin Windows orjalla asentaa moduulin itselleni herralta.
C:\WINDOWS\system32>puppet agent -tdv
Info: Retrieving plugin Debug: Failed to load library 'msgpack' for feature 'msgpack' Debug: Puppet::Network::Format[msgpack]: feature msgpack is missing Debug: file_metadata supports formats: pson b64_zlib_yaml yaml raw Debug: Creating new connection for https://192.168.1.65:8140 Debug: Starting connection for https://192.168.1.65:8140 Error: /File[C:/ProgramData/PuppetLabs/puppet/var/lib]: Failed to generate additional resources using 'eval_generate': Server hostname '192.168.1.65' did not match server certificate; expected xubuntu Debug: Failed to load library 'msgpack' for feature 'msgpack' Debug: Puppet::Network::Format[msgpack]: feature msgpack is missing Debug: file_metadata supports formats: pson b64_zlib_yaml yaml raw Debug: Creating new connection for https://192.168.1.65:8140 Debug: Starting connection for https://192.168.1.65:8140 Error: /File[C:/ProgramData/PuppetLabs/puppet/var/lib]: Could not evaluate: Could not retrieve file metadata for puppet://192.168.1.65/plugins: Server hostname '192.168.1.65' did not match server certificate; expected xubuntu Debug: Finishing transaction 24737700 Debug: Evicting cache entry for environment 'production' Debug: Caching environment 'production' (ttl = 0 sec) Debug: Loading external facts from C:/ProgramData/PuppetLabs/puppet/var/facts.d Debug: Failed to load library 'msgpack' for feature 'msgpack' Debug: Puppet::Network::Format[msgpack]: feature msgpack is missing Debug: catalog supports formats: pson b64_zlib_yaml yaml dot raw Debug: Creating new connection for https://192.168.1.65:8140 Debug: Starting connection for https://192.168.1.65:8140 Error: Could not retrieve catalog from remote server: Server hostname '192.168.1.65' did not match server certificate; expected xubuntu Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping run Debug: Creating new connection for https://192.168.1.65:8140 Debug: Starting connection for https://192.168.1.65:8140 Error: Could not send report: Server hostname '192.168.1.65' did not match server certificate; expected xubuntu
Pieleen meni, ja orja ei saanut haluttua tiedostoa.
a) Package-resurssi ja Chocolatey provider
Tiedän, että on käytännössä turhaa jatkaa eteenpäin, jos edes alkuvaiheet eivät ole kunnolla säädetty oikeiksi. Aikani käyttää näitä kahta konetta on kuitenkin nyt rajallinen, joten yritän edes teoreettisesti saada seuraavatkin vaiheet raportoitua, jotta voin sitten halutessani myöhemmässä vaiheessa palata niihin. Veljeni potkii minut koneeltaan kummiskin heti saapuessaan kotiin.
Asensin chocolateu providerin herralla komennolla:
$ sudo puppet module install puppetlabs/windows
Sitten tein uuden moduulin nimeltä firefox sijaintiin /etc/puppet/modules/firefox/manifests/.
$ sudoedit init.pp
class firefox { include chocolatey Package { ensure => "installed", provider => "chocolatey", } package {["firefox"]:} }
Lisäksi muokkasin site.pp
class {hellowindows:} class {firefox:}
Tämä moduuli siis asentaisi Windows orjalle Firefox selaimen, kun orjalla ajetaan komento:
$ puppet agent -tdv
c) MSI-paketin asennus
Blenderin msi-paketin voi ladata Xubuntu herralle: https://www.blender.org/download/
Tähän sitten uusi moduuli hakemistoon /etc/puppet/modules/blender/manifests/.
$ sudoedit init.pp
class blender { file {"C:/blender-2.78a-windows64.msi": source => "puppet:///modules/blender/blender-2.78a-windows64.msi", } package {"Blender": ensure => "installed", source => "C:/blender-2.78a-windows64.msi", } }
Site.pp:
class {hellowindows:} class {firefox:} class {blender:}
Moduulin asennus Windows orjalta:
$ puppet agent -tdv
Yhteenveto
Tässä harjoituksessa oli tarkoitus toteuttaa herra-orja-arkkitehtuurilla moduulien asennus orjalle. Moduulit asentaisivat Chocolatey provideria hyödyntäen Firefox selaimen ja Blenderin msi-paketin. Itselläni herran ja orjan konfigurointi toimivaksi tuotti ongelmia, enkä siten pystynyt käytännössä toteuttaamaan harjoitusta loppuun saakka. Moduulit tein käytännössä, mutta en pystynyt siirtämään niitä herralta orjalle oikein. Kirjoitin kuitenkin teoreettisesti, miten tämä tapahtuisi, jotta voin halutessani myöhemmässä vaiheessa palata tehtävään helposti.
Lähteet:
Harjoituksen ohjeet
URL: http://terokarvinen.com/2016/aikataulu-palvelinten-hallinta-ict4tn022-1-5-op-uusi-ops-loppusyksy-2016
Windows 10 as a Puppet Slave for Ubuntu 16.04 Master
URL: http://terokarvinen.com/2016/windows-10-as-a-puppet-slave-for-ubuntu-16-04-master
Chocolatey Puppet Provider
URL: http://terokarvinen.com/2016/automatically-install-a-list-of-software-to-windows-chocolatey-puppet-provider
Blender MSI
URL: https://www.blender.org/download/