Tag: Hyper-V


Palvelinten hallinta loppumoduuli (Syksy 2017)


Palvelinten hallinta loppumoduuli (Syksy 2017)

Lähde  Tero Karvinen 2017: Palvelinten Hallinta, http://terokarvinen.com

Harjoitusympäristönä Windows 10 Pro 64-bit

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

 

Harjoituksen tavoitteena oli luoda kokonaisuus, jonka avulla oli mahdollista asentaa Windows 10 tyhjälle koneelle, asettaa käyttöjärjestelmä

Puppetin orjaksi ja ajaa Puppet-moduuli joka ottaa käyttöön halutut ohjelmat ja asetukset. Tavoitteena oli, että käyttäjän ei tarvitsee puuttua asennukseen mahdollisimman vähän.

Kohdelaitteena oli koodinimi “Pelikone” ,jota varten halutaan mahdollisimman pelkistetty Windows-ympäristö ilman Microsoftin bloatwarea.

 

Automatisoitu Windows 10 asennus

 

Windows 10 ISO-tiedoston muokkaukseen käytettiin WinReducer -ohjelmaa. Ohjelman avulla luotiin unattended.xml -tiedosto, jota tarvitaan Windowsin automatisoituun asennukseen.

Lisäksi lisättiin asennettavan Windowsin rekisteriin viittaus, joka poisti UAC:n käytöstä sekä määriteltiin skripti, joka luotiin kun käyttäjä kirjautuu ensimmäistä kertaa asennettuun käyttöjärjestelmään.

 

Harjoituksessa käytettiin apuna WinReducer EX-100 ohjelman kokeiluversiota. Ohjelman käynnistyksen jälkeen valittiin Start -> ISO -> valittiin aiemmin ladattu Windows 10 ISO (en_windows_10_education_version_1703_updated_march_2017_x64_dvd_10189297).

Seuraavaksi ohjelma avasi ISO-tiedoston sisällön muokkausta varten. Ohjelman avulla on mahdollista lisätä, poistaa ja muokata Windowsin asetuksia ja ominaisuuksia. Tavoitteena oli muokata asetuksia Puppetin avulla, joten asennukseen tehtiin ainoastaan ne muutokset, jotka olivat välttämättömiä.

 

UAC:n poisto käytöstä

UAC:n käytöstä poisto onnistuu esimerkiksi rekisteriä muokkaamalla. Lähteenä käytettiin TechNetin artikkelia, jonka perusteella muutos tehtiin ensin omaan tietokoneeseen jonka jälkeen ks. kohta rekisterissä tallennettiin .reg -tiedostoksi (…export). Ohjelman System -> WinReducer Registry Integrator

-välilehden alta lisättiin .reg -tiedosto asennukseen (Add a Registry File -> Save in a Registry File).

 

Ohjelmien asennusskripti

System -> WinReduce Post Installation -> OOBE muokattiin .cmd -tiedostoa, joka ajetaan sen jälkeen kun Windows on asennettu. Add a File -napin avulla lisättiin puppet.bat ja puppet-3.8.7-x64.msi -tiedostot asennukseen, jonka jälkeen muokattiin skriptiä.

@ECHO OFF
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\sources\install.wim set CDROM=%%i:
if not defined CDROM goto :eof
echo Detected CDROM as drive %CDROM%
cd\

Title WINDOWS PUPPET SLAVE SETUP
Color F0

@echo ********** Welcome **********
@echo ********** Installing Puppet Agent with master at puppet.simosuominen.com **********
msiexec /qn /norestart /i %CDROM%\WinReducerEX100PI\puppet-3.8.7-x64.msi PUPPET_MASTER_SERVER=puppet.simosuominen.com
timeout 10
start "PuppetWindow" cmd /c %CDROM%\WinReducerEX100PI\puppet.bat
@echo ********** Connecting to the Puppetmaster **********
cd "C:\Program Files\Puppet Labs\Puppet\bin"
timeout 2
puppet agent -tdv
@echo ********** Done **********

 

Skripti tunnistaa asennusmedian (jota ei saa poistaa ennen kuin koko asennus on valmis) ja asentaa medialta Puppetin puppet.simosuominen.com. Asennuksen jälkeen skripti ajaa puppet.bat -tiedoston, joka odottaa 45 sekuntia ja ajaa puppet agent -tdv -komennon. Skripti ajaa samaan aikaan ks. komennon uudestaan. Käyttäjälle jää n. 35 sekunttia aikaa käydä hyväksymässä uuden Puppet-orjan sertifikaatti. Alla näkyy puppet.bat -tiedoston sisältö.

:: puppet.bat file for unattended Windows 10 Puppet slave installation
@echo ********** You now have 45 seconds to accept the certificate **********
timeout 45
cd C:\Program Files\Puppet Labs\Puppet\bin
puppet agent -tdv

 

Unattended.xml

Lopuksi otettiin käyttöön automatisoitu asennus kohdasta Unattended -> Activate Unattended Options.

Seuraavat kohdat muuttamalla asennus kysyi ainoastaan mille levylle Windows asennetaan.

Administrator Account -> ON

Administrative Password -> "salasana"

Activate Autologon -> ON

Turn Off Password Expiration -> ON

Accept EULA -> ON

Hide Cortana Setup -> ON

Hide Local Account -> ON

Hide Online Account -> ON

Hide Wireless Setup -> ON

Protect your PC -> Turn off Express settings

Power schemes -> High Performance

System Language -> United Kingdom

System Keyboard -> Finnish

Text Size (DPI) -> 100%

Time Zone (UTC +02:00) Helsinki, ....

ISO-tiedoston luonti suoritettiin loppuun ohjelman avulla valitsemalla Finish ja seuraamalla ohjelman ohjeita. Lopputuloksena Windows 10 ISO-tiedosto, joka asentaessa kysyy ainoastaan mille kiintolevylle käyttöjärjestelmä asennetaan. Loppuasennus toimii automaattisesti. Asennuksen jälkeen käyttäjä Administrator kirjataan automaattisesti sisään ja luotu skripti käynnistyy.

Moduulit

 

Moduulien ajoa varten tarvitaan Puppetmasterilla seuraavat Windows Puppet moduulit:

puppetlabs/powershell

puppetlabs/registry

councyl/windows

chocolatey/chocolatey

 

Vasta asennetun Windows 10 asetusten muokkausta varten luotiin kaksi moduulia. winsteam -moduulin tehtävänä oli asentaa ja käynnistää Steam -pelialusta haluttuun kohteeseen. winsetup -moduuli asensi tarvittavat ohjelmat ja poisti ylimääräisiä ohjelmia ja asetuksia. Lisäksi winsetup muokkasi päivitysten asennusta sekä rekisteriä. Moduulit määriteltiin Puppetmasterilla ajettavaksi järjestyksessä winsteam -> winsetup. Ensimmäinen moduuli käynnistää ohjelmia, joiden päivitys vie aikaa ja toinen moduuli käynnistää koneen uudelleen moduulin lopuksi. Tavoitteena oli ajoittaa moduulien ajon valmistuminen niin, että päivitykset olisivat valmistuneet siinä vaiheessa, kun kone käynnistyy uudestaan.

 

Käytetyt moduulit winsteam ja winsetup GitHubissa.

PS. winsetup-moduuliin lisättiin GitHubista skripti, joka muokkaa Windows 10 asetuksia rajusti. Skriptiin kannattaa tutustua, ennen kuin käyttää moduulia.

 

Testaus

 

Windows-asennusta ja moduuleja testattiin Hyper-V virtuaalikoneella, johon oli lisätty toinen kiintolevy. Asennus nauhoitettiin Windows 10 oman Game DVR -työkalun avulla. Nauhoitus katkesi joka kerta, kun virtuaalikone käynnistyi uudelleen, joten videoita on useampi kappale.

 

Winpuppet 1: Asennuksen aloitus, asennuskohteen valinta

 

Winpuppet 2: Asennus jatkuu, moduuleja edeltävä tilanne, skriptin toiminta ja moduulien ajo

 

Winpuppet 3: Moduulien ajon jälkeinen tilanne

 

Moduulien ajon jälkeen voitiin todeta, että halutut ohjelmat olivat asentuneet ja asetukset olivat voimassa. Windowsin “modernit” ohjelmat oli poistettu, OneDrive kadonnut sekä Cortana piilotettu. Syystä tai toisesta Virtuaalikoneen Windowsin verkkoyhteys oli mennyt epäkuntoon. Tätä ei tapahtunut muilla testauskerroilla ja ongelma korjaantui joko ajamalla virheiden selvityksen tai käynnistämällä virtuaalikoneen uudestaan.

 

Olin varsin tyytyväinen lopputulokseen, vaikka kehitettävää jäi. Koko asennusprosessiin meni aikaa n. 30 minuuttia, josta varmasti saadaan vielä aikaa pois kun käyttöjärjestelmä asennetaan oikealle nopealle raudalle.

 

Jatkokehitys

 

  1. Perehdyttävä Windows-asennuksen muokkauksen ilman ohjelmistoa. Käytännössä asennukseen ei vaadita kuin unattended.xml -tiedosto USB-aseman juureen sekä joku tapa ajaa skriptiasennuksen jälkeen. Windows Answer File Generatorin avulla unattended.xml -tiedoston luonti onnistuu ilman XML-osaamista.
  2. Edelliseen liittyen Windows -asennusmedian /sources/install.wim -tiedoston voi purkaa ja lisätä tiedostoja Windows-asennukseen. Lisäämällä skriptin kansioon C:\ProgramData\Windows\Start Menu\Programs\Startup voidaan ajaa ks. skripti joka kerta kun käyttäjä kirjautuu sisään. Skripti pitää poistaa ensimmäisen kirjautumisen jälkeen esim. Puppet-moduulin avulla. WinReducer -ohjelman avulla luotua skriptiä pitää muuttaa tätä tarkoitusta varten.
  3. Luotava ylläpitomoduuli Windowsia varten. winsteam ja winsetup -moduuleja ei voi ajaa useampaa kertaa kovinkaan onnistuneesti. Ylläpitomoduuliin ohjelmien päivitykset, Win10.ps1 -skripti sekä muut poistot.
  4. Lisättävä ajurien asennukset siinä vaiheessa, kun kohderauta on hankittu.
  5. Muita korjauksia, esim. “rumat ratkaisut pois

 

 

 

Muut lähteet:

Windows 10 Initial Setup Script

Windows 10 Annoyance-free Automated Install

Mount and Modify a Windows Image Using DISM

 

 

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

Simo Suominen


Palvelinten hallinta kotitehtävät 5 (Syksy 2017)


Palvelinten hallinta kotitehtävät 5 (Syksy 2017)

Lähde  Tero Karvinen 2017: Palvelinten Hallinta, http://terokarvinen.com

Harjoitusympäristönä asennettu sekä livetikulta ajettu kustomoitu Xubuntu 16.04 LTS 3 64-bit

Windows-harjoitusympäristönä Windows 10 Pro 64-bit

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

 

a) Asenna Puppetin orjaksi vähintään kaksi eri käyttöjärjestelmää. (Tee alusta, pelkkä tunnilla tehdyn muistelu ei riitä).

 

Tavoitteena oli asentaa Lenovo Ideapadin 64-bittinen Windows 10 Home -kone Puppet-orjaksi. Lähteenä harjoitukseen käytettiin Tero Karvisen kirjoitusta sekä tunnilla Tatu Erkinjuntin kanssa tehtyjä moduuleja.

Harjoitus aloitettiin poistamalla UAC käytöstä. Poisto onnistuu esim. siirtymällä Control Panel -> User Accounts -> Change User Account Control Settings. Kun asetus on muutettu kuvan mukaiseksi, tietokone täytyi käynnistää uudestaan.

 

 

Seuraavaksi ladattiin Puppet asennuspaketti Puppetlabsin sivuilta. Tiedoston versio oli puppet-3.8.7-x64.msi. Puppet asennettiin järjestelmänvalvojan oikeuksilla oletuskansioon. Asennusvaiheessa ohjelma kysyi Puppet masterin domainosoitetta, joksi määriteltiin aikaisemmin luotu puppet.simosuominen.com. Asennuksen jälkeen testattiin puppettia siirtymällä Windowsin Command Promptiin, jälleen järjestelmänvalvojan oikeuksilla (Run as Administrator).

Command Promptissa ajettiin vanha kunnon komento puppet agent -tdv. Vastauksena saatiin tieto, että sertifikaattia ei vielä löytynyt, joten siirryttiin Puppet master-virtuaalipalvelimelle hyväksymään sertifikaatti.

 

Sertifikaatin hyväksymisen jälkeen luotiin yksinkertainen hellosimo -moduuli testausta varten. Moduuli lisättiin masterkoneen site.pp -tiedostoon ja ajettiin orjakoneella uudestaan puppet agent -tdv -komento. Moduulin luoma hellosimo.txt -tiedosto löytyi C: juuresta niin kuin pitikin.

 

Toiseksi orjajärjestelmäksi valittiin ensimmäinen Linux distro, joka sattui tulemaan vastaan. Tällä kertaa valituksi tuli Linux Mint 18.2 64-bittinen Hyper-V virtuaalikoneen kautta ajettuna. Valitettavasti puppetin asennus ks. käyttöjärjestelmään ei poikennut mitenkään Xubuntun Puppetin asennuksesta. Lopputuloksena kaksi uutta käyttöjärjestelmää puppet.simosuominen.com Puppetmasterin orjana.

 

b) Säädä Windows-työpöytää. Voit esimerkiksi asentaa jonkin sovelluksen ja tehdä sille asetukset.

 

Jatkettiin Puppet-orja Lenovo-läppärin kanssa säätämistä asentamalla orjakoneelle ohjelmia. Ensin asennettiin master-konelle puppetlabs/windows -moduuli, joka sisältää pakettienhallintaohjelman (Chocolatey) ja muita Windows-orjan tarvitsemia työkaluja.

$ sudo apt-get update

$ sudo puppet module install puppetlabs/windows

Seuraavaksi luotiin uusi moduuli ohjelmien asennusta varten. Moduuliin tuli lisätä viittaus pakettienhallintaohjelmaan, jotta asennus onnistuu.

 

Moduulia ajettaessa saatiin virheilmoitus:

notice: Run of Puppet configuration client already in progress; skipping (C:\ProgramData\PuppetLabs\puppet\var\state\agent_catalog_run.lock exists)

 

Aloin tutkimaan käynnissä olevia prosesseja ja palveluita ja kokeilin ajaa moduulin kahden minuutin päästä uudestaan. Tällä kertaa moduuli asensi ohjelmat ilman virheilmoituksia.

Windows-orjakoneen kustomointi jatkuu kurssin loppumoduulissa.

 

 

 

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

Simo Suominen


Palvelinten hallinta kotitehtävät 4 (Syksy 2017)


Palvelinten hallinta kotitehtävät 4 (Syksy 2017)

Lähde  Tero Karvinen 2017: Palvelinten Hallinta, http://terokarvinen.com

Harjoitusympäristönä asennettu sekä livetikulta ajettu kustomoitu Xubuntu 16.04 LTS 3

Harjoituskoneen tiedot:

Emolevy X79A-GD65 (8D)

Prosessori Intel(R) Core(TM) i7-3930K

16GiB RAM

 

Viikon harjoitusten tavoitteena oli kokeilla Puppetin lisäksi kahta muuta keskitetyn hallinnan järjestelmää, Ansiblea ja Salt:ia.

Molemmat järjestelmät asennettiin ja niiden toimintaa testattiin yksinkertaisen “moduulin” avulla.

 

a) Kokeile Ansiblea

 

Testilaitteistona kaksi kappaletta Hyper-V:llä luotuja virtuaalikoneita, joille oli asennettu 64-bittinen Xubuntu 16.04.3 LTS versiot. Tavoitteena oli asentaa koneelle 1 Ansible ja määritellä asetukset niin, että luotu yksinkertainen moduuli voitiin ajaa koneella 2.

Harjoitus aloitettiin asentamalla “herra” -koneelle Ansible ja OpenSSH suojausavainten luontia varten

$ sudo apt-get update

$ sudo apt-get -y install openssh-server openssh-client ssh ansible

Seuraavaksi määriteltiin “orja” -virtuaalikoneen IP-osoite Ansiblen hosts -tiedostoon ryhmän [orja] alle

$ sudoedit /etc/ansible/hosts

 

Toiselle virtuaalikoneelle asennettiin samat SSH-ohjelmat, mutta Ansiblea ei tarvinnut asentaa kohdelaitteelle. Tässä vaiheessa varmistettiin vielä, että herra pystyi pingaamaan orjaa.

Seuraavaksi luotiin herrakoneelle salausavain, joka siirrettiin orjakoneelle. Avaimen toiminta testattiin ottamalla SSH-yhteys herrakoneelta orjakoneelle.

ssh-keygen -t rsa

ssh-copy-id orja@192.168.1.175

ssh orja@192.168.1.175

SSH-yhteys onnistui ilman salasanaa, mistä voitiin päätellä että avaimen siirto onnistui. Jatkettiin harjoitusta testaamalla orjakoneen pingausta Ansiblen avulla.

$ ansible orja -m ping

Tuloksena saatiin seuraava virheilmoitus

 

Lisäämällä -vvvv komentoon saatiin lisätietoja virheilmoituksesta.

 

Virheilmoituksesta ei suoraan saatu selvää, mikä ongelmana oli. Virheilmoituksen google-hakutulosten perusteella ongelman voi kiertää lisäämällä käyttäjän komentoon. Testausta jatkettiin seuraavalla komennolla:

$ ansible orja -m ping -u orja

Tällä kertaa komento meni läpi. Oletettavasti käyttäjää ei tarvitse lisätä komentoon jos käyttäjänimi on sama kummallakin laitteella. Seuraavaksi luotiin yksinkertainen Ansible playbook ajettavaksi orja-koneella.

$ nano hellosimo.yml

Tiedostoon määriteltiin hostit, joilla ks. playbook ajetaan sekä tehtävät jotka halutaan ajettavan. Tällä kertaa tehtävä oli luoda tekstitiedosto halutulla sisällöllä haluttuun kohteeseen.

---
- name: hellosimo
  hosts: orja
  tasks:
  - name: Luo /tmp/hellosimo.txt tiedosto halutulla sisällolla
    copy: content="Hello Simo!\n" dest=/tmp/hellosimo.txt

Luotu playbook ajettiin komennolla ansible-playbook hellosimo.yml -u orja. Komento meni läpi ilman ongelmia ja Ansiblen tulostus paljasti, että hostiin 192.168.1.175 tehtiin muutoksia. Siirtymällä orjakoneelle ja hakemalla tiedoston /tmp/hellosimo.txt voitiin todeta, että luotu playbook oli ajettu onnistuneesti orjakoneella.

 

Lähteet:

Ansible – A “hello world” Playbook

Joona Leppälahti – CCM/Ansible raportti

b) Kokeile Salt:tia

 

Tavoitteena oli luoda Vagrantin ja Virtualboxin avulla virtuaalikone, josta tehtäisiin rautakoneen Salt-minion, eli orjakone. Harjoitus aloitettiin poistamalla edelliset virtuaalikonekokeilut.

$ vagrant destroy
$ rm Vagrantfile
$ vagrant init bento/ubuntu-16.04
$ vagrant up
$ vagrant ssh

Seuraavaksi asennettiin luodulle virtuaalikoneelle salt-minion ja määriteltiin sen herraksi testikoneen IP-osoite.

$ sudo apt-get update && sudo apt-get -y install salt-minion
$ sudoedit /etc/salt/minion

$ sudo service salt-minion restart

minion -asetustiedosto sisältää pelkkää kommenttia, jonka voi tyhjentää tai säästää myöhempää käyttöä varten. Virtuaalikoneen minion -tiedosto tyhjennettiin ja lisättiin rivi master: IP-osoite osoittamaan rautakoneen IP-osoitteeseen. Lopuksi käynnistettiin salt-minion -palvelu uudestaan, jotta orja ymmärtäisi hakea uutta määriteltyä isäntää. Tämän jälkeen siirryttiin testikoneelle asentamaan salt-master ja muokkaamaan asetuksia.

$ sudo apt-get update && sudo apt-get -y install salt-master
$ sudo salt-key list

vagrant.vm -orjakone löytyi hyväksymättömien avainten listasta (ks. kuva). Avaimen hyväksymisen jälkeen ajettiin komento, jolla hyväksytyillä orjakoneilla voitiin ajaa komentoja.

 

$ sudo salt-key --accept vagrant.vm
$ sudo salt '*' cmd.run "hostname -I"

Komennolla ajettiin siis kaikissa (‘*’) hyväksytyissä salt-slave -koneissa komento “hostname -I”. Tällä kertaa orjia ei ollut kuin yksi. Lopputuloksena voitiin todeta, että herra- ja orjakoneen asetukset toimivat ja harjoitusta voitiin jatkaa. Lopuksi testailtiin komentoja orjakoneille. Paketin asennus ja tietojen hankkiminen orjakoneelta onnistuivat mainiosti.

$ sudo salt '*' pkg.install tree    //paketin asennus
$ sudo salt '*' disk.usage    //kovalevyn tietoja

Lähteenä käytettiin SaltStackin Salt in 10 Minutes -tutoriaalia ja Tero Karvisen kirjoitusta.

 

 

 

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

Simo Suominen