Na installatie van het OS, wat wij als IT-ers natuurlijk in het engels installeren, kan het voor komen dat je nog een extra taal wilt toevoegen. Nou kan dat via de GUI, maar dat wil je niet altijd. Het liefst zou je zien dat je deze via RES Automation Manager of een andere uitroltool geïnstalleerd kan krijgen.
Op de languagepack cd’s van Windows 2008 en Windows 7 vind je meerdere directories. Kies de directory met de taal die je wil installeren en neem hier de lp.cab uit. Deze kun je via de commandline installeren via lpksetup /i * /p [patch of/en bestandsnaam van de languagepack] /r /s
De switches achter lpksetup.exe dienen de volgende doelen:
/i
Installeer een taal
/i *
/i [taalkeuze]
Installeer alle talen in het languagepack. Mocht je een languagepack hebben met meerdere talen dan kun je hier één selectie uit maken door bv. nl-NL te gebruiken ipv ster.
/p [path naar languagepack directory]
/p [path+bestandnaam van languagepack]
Path naar een directory met alle languagepacks die je wil installeren. Wil je maar één bepaalde languagepack installeren, dan moet je ook de bestandsnaam erbij plaatsen
/r
Geen reboot op het einde van de installatie
/s
Stille installatie
Let er bij het gebruik van een languagepack op, dat je versie van Windows wel meerdere talen ondersteund. Installeer je een languagepack op een Windows versie die geen multi-language ondersteund, dan wordt de hoofdtaal van die installatie overschreven!
Na installatie van een languagepack heb je via de GUI de mogelijkheid om de taal in te stellen voor de gebruiker en voor het systeem. Bij Terminal Servers (of Citrix XenApp) wil je in de meeste gevallen dat bij een Nederlands bedrijf Nederlands de standaard taal wordt voor gebruikers en voor het OS/System account.
Dit kun je via de volgende commandline doen: control.exe intl.cpl,,/f:”[path naar configuratie.xml]”
Het configuratiebestand moet er voor Nederlands als volgt uitzien:
Dit configuratie bestand zorgt ervoor dat de taal van de huidige user op Nederlands wordt gezet en dat de regionale instellingen worden gekopieerd naar het default-user profiel en naar het systeem account. De regionale instellingen worden zelf niet ingesteld (dit kan wel) en ook de toetsenbord instelling wordt niet aangepast. De instellingen worden na een reboot aktief op de machine.
Voor meer opties en meer uitleg over de opbouw van het xml-bestand kun je terecht op:
In een eerdere blog heb ik laten zien hoe je via RES Automation Manager een gebruiker aan kan maken, waarbij de user logonname automatisch via een counter wordt verhoogd in het geval dat er al een gebruiker bestaat met dezelfde logonnaam. In deze blog laat ik zien hoe je die aangemaakt logonname kunt gebruiken om de homedrive voor die gebruiker aan te maken. Uiteraard zou je dit nog verder door kunnen trekken, door ook de mailbox, etc. aan te maken. Het linken of transporteren van de waarde van een module naar een andere module, kan vanaf RES AM 2011 SR1. Datgene wat wij er in deze blog mee gaan doen, kan vanaf RES AM 2011 SR2 of RES AM 2012 IR1. Het is namelijk niet mogelijk om een waarde door te geven op het moment dat de module de status ‘finished with errors’ heeft in RES AM 2011 SR1.
Create Homedrive module
Als eerste maken we een module aan voor het creëren van de homedrive. Geef de module een logische naam, zoals ‘create a homedrive’. Ga vervolgens naar de tab ‘parameters’ en maak een nieuwe parameter aan. Geef deze de naam ‘UserLogonName’ (zonder de ‘ ‘) en stel de parameter zo in dat deze vraagt om een waarde op het moment dat hij gescheduled word. Check tevens de checkboxen en zorg ervoor dat alleen de box ‘Hide parameter if parameter is not used directly’ aangevinkt is.
Ga vervolgens naar het tabblad ‘Tasks’ en maak een nieuwe task aan. Kies voor ‘Configuration -> Files -> Perform operations. Maak hierin een nieuwe aktie type ‘Create Folder’ aan. Bij ‘Folder Path’ type je het path waar de folder aangemaakt moet worden. De driveletter is de letter van de drive van de server waar de map op aangemaakt word. Deze server moet uiteraard ook een RES AM Agent geïnstalleerd hebben. Plaats de cursor vervolgens achter de laatste ” in het path en selecteer de ‘UserLogonName’-parameter (dit kun je doen door een rechtermuisknop -> Insert Parameter -> $[UserLogonName] )
Klik OK en nogmaals OK om de ‘Perform file operation’-task af te sluiten.
Maak nu een nieuwe taak aan in de module. Kies hiervoor Security -> File Permissions -> Set. Gebruik dezelfde folder als in de ‘create folder’-task die je net hebt aangemaakt en vink het vinkje bij ‘Remove all existing permissions’ uit. Dit voorkomt dat standaard permissies die al bestaan op de folder (bv. Domain Users full control), worden verwijderd. Kies vervolgens voor ‘Add Entry’
In de ‘Add entry’ dialog venster kies je voor the ‘UserLogonName’-parameter (via rechtermuisknop) en vervolgens voor ‘Full control’ en ‘Add access allowed’
Klik vervolgens op OK, nog eens OK (om het venster van de taak Folder Permissies te sluiten) en nogmaals op OK (om de module te sluiten). De module voor het aanmaken van de homedrive is nu klaar. Je kunt deze testen door de module eenmaal uit te voeren, een testuseraccount op te geven en deze te module te starten op de machine waar de homedrives op aangemaakt worden. Controleer na het uitvoeren of de directory is aangemaakt en de juiste rechten er op zijn uitgedeeld.
Runbook parameter linking
Nu we beide modules hebben voor het aanmaken van een gebruiker en het aanmaken van een homedrive, gaan we deze samen plaatsen in een RunBook. Hierbij gebruiken we de aangemaakt UserLogonName uit de eerste module als input voor de ‘create homedrive’-module.
Maak een nieuwe RunBook aan en geef deze een goede naam, zoals ‘Create user and homedrive’. Ga vervolgens naar het tabblad ‘Jobs’ en maak hier een nieuwe job aan. In het ‘Add RunBook job’ venster kies je eerst voor ‘What’. Selecteer vervolgens de ‘Create domain user’ task. Vervolgens kies je in het ‘Who’ veld de juiste machine. In het geval van het aanmaken van een user account, zal dit waarschijnlijk de domain controller zijn. Op deze machine moet ook de juiste connector voor deze taak zijn geïnstalleerd. Onder het venster kies je voor ‘Continue Run Book on Error’ in het ‘Error control’ veld. Deze instelling is nodig om het RunBook door te laten gaan in het geval de module met het resultaat ‘Finished with errors’ terug komt (wat niet onwaarschijnlijk is dat dit gebeurd, omdat er regelmatig mensen zijn die dezelfde gebruikersnaam opleveren). Druk vervolgens op OK om de job aan te maken.
Maak vervolgens een tweede job aan. Selecteer hierbij de ‘create user homedrive’ en zorg ervoor dat deze op de fileserver komt te draaien. De fileserver kan van een normale agent worden voorzien. Laat ‘error control’ op de default waarde ‘stop run book on error’ staan.
Nu beide jobs in het RunBook staan, kies je voor het tabblad ‘Run Book parameters’ en klik je vervolgens op de knop ‘AutoCreate’ (onderin het venster). RES Automation Manager creeerd nu alle parameters die ook in de modules en/of projecten worden gebruikt. Verwijder na het aanmaken de ‘Counter’-parameter. Dubbelklik vervolgens op de UserLogonName om deze aan te passen. Maak het veld ‘Value’ leeg en ga vervolgens naar de ‘Links’ tab in dit dialoog venster. Klik hier met rechts op de ‘Create User Account’-job en kies vervolgens voor Action -> Get final value. Dit zorgt ervoor dat op het einde van de job, de waarde van UserLogonName wordt teruggegeven aan het RunBook.
Klik vervolgens met de rechtermuisknop op de ‘Create home drive’-job en kies voor ‘Set initial value’. Het resultaat zou vervolgens moeten zijn wat hieronder staat. De richting van de pijlen is hierbij het belangrijkste.
Klik op OK om terug te gaan naar de RunBook parameters tab. Klik hier op de ‘Links’ tab, deze zou er ongeveer zo uit moeten zien:
Op dit moment hebben we een RunBoom met twee verschillende jobs die mogelijk draaien op twee verschillende servers. De 2de job (het aanmaken van een homedrive) is afhankelijk van de gebruikersnaam die de eerste job (create user) heeft aangemaakt. Als de eerste job heeft gedraaid, wordt door het linken van de parameters, de laatste waarde van de UserLogonName-parameter van de job, getransporteerd naar de gelijkwaardige parameter in de RunBook. Het RunBook start vervolgens de 2de job en geeft deze (ook weer via de gelinkte parameters) de waarde mee die hij van de 1ste job heeft ontvangen. De 2de job maakt daardoor een homedrive aan met de user logonname die de 1ste job uiteindelijk heeft gecreeerd.
Nu hebben we alleen een problem als de ‘create user’-job faalt en het resultaat ‘failed’ krijgt. Doordat is aangegeven dat het RunBook door moet gaan als er problemen optreden, zal hij ook doorgaan als het resultaat ‘failed’ is. Om dit te voorkomen moeten we een conditie op de 2de job zetten. Ga daarvoor naar het tabblad ‘jobs’ van het RunBook, selecteer de 2de job (‘create home drive’) en klik onderaan het scherm op ‘condition’. Maak een nieuwe conditie aan met de volgende waarde ‘Status of previously executed job <> Failed’. Als de conditie WAAR (TRUE) is dan ‘Executed job’. De waarde bij FALSE komt op ‘Skip this and all other jobs’. Dit zorgt ervoor dat andere jobs (na het creeeren van de homedrive) in hetzelfde RunBook ook niet gedraaid worden (bijvoorbeeld het aanmaken van een mailbox).
Resultaat
Als we dit RunBook nu draaien en de voornaam, achternaam, etc. opgeven, maakt het RunBook eerst een gebruikersaccount aan. Daarnaa wordt de homedrive gecreëerd, tenzij de gebruikersnaam niet aangemaakt kon worden. Vraag je de uitslag van het RunBook op na draaien, dan zie je ongeveer hetgene hieronder:
Het aanmaken van de user. De eerste 5x gingen niet goed. Na de 5de keer werd de gebruiker wel goed aangemaakt.
Toont de settings die uiteindelijk via parameters gebruikt zijn in het process van het aanmaken van de gebruiker. De uiteindelijke gebruikersnaam is DuckK5 geworden.
Let op de counter, deze toont het getal 5. Dit zijn de verhogingen van het getal achter de gebruikersnaam die ontstaan zijn doordat het aanmaken de eerste 4 keer niet goed ging, omdat die gebruikersnamen al bestonden.
The job parameter die doorgegeven is aan de job ‘create home drive’. Deze bevat de user logonnaam die in de eerste stappen is gemaakt door de 1ste job.
Dit RunBook kun nu eenvoudig uitgebreid worden met bv. het aanmaken van een mailbox of het geven van rechten op andere systemen waar de gebruikersnaam van belang is. Via een CSV bestand kunnen snel meerdere gebruikers aangemaakt worden en ook is via Service Orchestration deze module te gebruiken om automatisch gebruikers aan te maken.
Mocht je Citrix XenClient testen of gebruiken, dan wil je af en toe wel een backup maken van je VM, voor het geval dat er eens iets mis gaat. Ook als je upgrade naar een nieuwe versie van XenClient kan het handig zijn om een backup te maken. Bij een upgrade is het namelijk niet altijd mogelijk om de bestaande VM’s te bewaren.
Normaal is dit eenvoudig te bewerkstelligen via de Synchronizer. Alleen, niet iedereen heeft die beschikbaar. Het is met wat omwegen toch mogelijk een backup te maken. Hiervoor heb je wel een extra computer in hetzelfde netwerk nodig.
Op de disk van de machine met XenClient staan een aantal directories. XenClient slaat de configuratie van VM’s op in de .configvms directory. De daadwerkelijke VHD’s van de VM’s worden opgeslagen in .storagedisks. Helaas zijn de configuratie bestanden en de disken niet onder een logische naam opgeslagen, maar onder UUID’s.
Backup van een XenClient VM
Stap 1: Opvragen van VM UUID
Als eerste moet je erachter komen wat de UUID is van de VM die je wilt backuppen. Open daarvoor eerst een Terminal venster door in de GUI van XenClient de toetsencombinatie Control+Shift+T in te drukken. Er opent zich nu een terminal venster, waarin gevraagd wordt naar het root-wachtwoord. Voer deze in. Je krijgt nu “[email protected]:~#” te zien. Voer hier het commando xec-vm in. Hiermee vraag je een overzicht op van alle VM’s die binnen XenClient bekend zijn, met hun logische naam en hun UUID. De uitvoer ziet er ongeveer als volgt uit:
Onthou de UUID van de machine die je wilt backuppen.
Stap 2: Remote verbinding met XenClient
Voor het extern verbinding maken met XenClient vanaf een andere machine moet je SSH hebben geactiveerd. Het activeren van SSH wordt gevraagd bij de installatie van XenClient. Heb je het toen niet geactiveerd, dan kun je het via het terminal venster alsnog activeren. Type het volgende commando om SSH binnen XenClient te activeren: touch /config/ssh_enabled , druk daarna op control+q om de interface van XenClient een refresh te geven en SSH te activeren.
Daarnaast heb je het IP adres nodig van de XenClient. Heb je de XenClient 2 TechPreview of hoger, ga dan binnen de XenClient GUI naar het netwerk icoon rechtsbovenin. Kies daarna voor “Connection Information“. Hier vind je het ip adres van de wireless of wired verbinding. Heb je nog XenClient 1, dan kun je het volgende commando invoeren in een terminal venster: ifconfig | less . Het IP adres wordt getoond bij brbridged (bij bedrade verbinding) en bij wlan0 (bij draadloze verbinding).
Installeer nu WinSCP op een andere machine. Open WinSCP en maak een verbinding naar de XenClient machine door het ip-adres in te voeren, root als user name en het wachtwoord van de root.
Druk vervolgens op Login. Mocht je een waarschuwing krijgen over een certificaat, dan kun je deze gewoon vertrouwen en opslaan. Dit is het self-made certificaat dat XenClient gebruikt.
Je krijgt nu een scherm te zien met aan de linkerkant de machine waar WinSCP op draait en op de rechterkant van het scherm de disk van de XenClient machine.
Stap 3: Opzoeken locatie van de VHD
Browse in het rechterveld van WinSCP naar ..configvms.
Hier staan enkele bestanden in, met dezelde UUID’s als in stap 1. Open het bestand dat correspondeert met de UUID die je wil backuppen, door er op te dubbelklikken. In het bestand dat zich nu opent moet je op zoek gaan naar het trefwoord “disk”. Iets daaronder staat het path naar de VHD die gebruikt wordt voor de VM.
Mochten in dit bestand meerdere VHD’s staan. Dan is de VM al een keer gesynchroniseerd met een Synchronizer, of heb je de VM gedownload van een Synchronizer. In dat geval kun je niet zomaar een backup maken van de VHD. In dat geval moet je naast de VHD’s die in dit bestand staan, ook de config file backuppen.
Stap 4: Backup van de VHD
Een backup maken is nu simpel. Ga in het rechterscherm naar de locatie die je in stap 3 hebt gevonden. Alle VHD’s staan in de directory ..storagedisks. In het linker gedeelte van WinSCP ga je naar de locatie waar je de backup van de VHD wil plaatsen. Sleep nu het VHD bestand van het rechterscherm naar de linkerkant. WinSCP kopieert nu de VHD naar je backup locatie.
Restoren van een XenClient VM
Het restoren gaat op de volgende manier:
Maak een nieuwe VM aan via de Add-VM Wizard. De grootte van de harddisk van de VM maakt niet uit. Deze kun je gerust op 10gb zetten. Kies op het einde om de VM wel aan te maken, maar nog geen installatie te doen.
Vraag de UUID op (zie stap 1 van backup)
Maak verbinding via WinSCP (zie stap 2 van backup)
Open de configfile (zie stap 3 van backup)
Ga naar de directory met de VHD’s en rename de originele vhd van de VM (bv. door deze de extensie .old te geven)
Kopieer nu de backup VHD naar de storage locatie van de XenClient.
Rename de oude vhd naar de UUID van de disk die bij de net aangemaakt VHD hoort.