Palvelinten hallinta – Windows 10 – Package-resurssi & Chocolatey provider

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ä.
piilotetut-kohteet
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:
puppetconf muokkaus.JPG
Tuosta sitten mentiin “Suojaus” ja isosta napista “Muokkaa…“.
Siinä sitten annettiin käyttäjille täydet oikeudet kyseiseen tiedostoon.
Oikeudet.JPG
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
Screenshot_2016-12-04_13-18-54.png
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/

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 3 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html” Markus Pyhäranta

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top