Tag: Hyper-V
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
Palvelinten hallinta loppumoduuli (Syksy 2017)
December 10, 2017
Palvelinten hallinta
No Comments
Simo Suominen
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ä.
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ö.
Unattended.xml
Lopuksi otettiin käyttöön automatisoitu asennus kohdasta Unattended -> Activate Unattended Options.
Seuraavat kohdat muuttamalla asennus kysyi ainoastaan mille levylle Windows asennetaan.
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
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
ChocolateyHyper-VpuppetUACunattendedWindows 10