RES Automation Manager: RunBook Parameter Linking

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:

  1. Het aanmaken van de user. De eerste 5x gingen niet goed. Na de 5de keer werd de gebruiker wel goed aangemaakt.
  2. Toont de settings die uiteindelijk via parameters gebruikt zijn in het process van het aanmaken van de gebruiker. De uiteindelijke gebruikersnaam is DuckK5 geworden.
  3. 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.
  4. 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.

Creëer automatisch AD Gebruikersaccounts met RES Automation Manager

Deze blog toont enkele nieuwe functies van RES Automation Manager 2011 SR1. Zoals velen waarschijnlijk weten, is het mogelijk om Active Directory Gebruikersaccounts aan te maken met RES AM. Wat echter nog niet kon, is een uitzondering te maken op het moment dat het te creëren account al bestaat. Dit is echter wel handig als je een grote hoeveelheid accounts probeert aan te maken, waarbij gegevens via een CSV bestand worden ingelezen.

In de meeste omgevingen worden gebruikersaccounts aangemaakt via bepaalde regels. Bijvoorbeeld [achternaam][eerste letter van de voornaam][oplopend nummer in geval dat accountnaam al bestaat]. Dit is nu ook mogelijk in RES AM. Met de nieuwe opties om parameters te veranderen als resultaat van een conditie en condities die een taak afhankelijk maken van het resultaat van de taak ervoor.

Deze blog toont screenshots met grote hoeveelheden parameters erin. Deze zijn te herkennen aan het formaat $[parameternaam]. Het is noodzakelijk om kennis te hebben hoe deze parameters worden aangemaakt en ingezet, wil je datgene in deze blog tot een goed einde brengen. Tevens moet voor de uitvoer van deze blog een Active Directory Connector aanwezig zijn binnen de RES AM omgeving.

Als eerste maken we een nieuwe module aan. Geef het een goede omschrijvende naam, zoals ‘Create a domain user’. Voeg de taak ‘Create Active Directory User’ toe. Hiervoor kan gebruik worden gemaakt van de mogelijkheden zoals omschreven in een blog van Anne Plancius “How to get rid of those spaces in Windows User Accounts“. Na doorlopen van die stappen zou de taak er ongeveer als volgt uit moeten zien:

Nadat een gebruiker op deze manier is aangemaakt, wil je waarschijnlijk enkele andere gegevens aanvullen, zoals homedrive, profielpad, telefoonnummer, enzovoort. Dit kun je doen door een 2de taak aan te maken in de module. Kies de taak ‘Manage Active Directory User’ en gebruik in de settings-tab the parameters die je ook in de 1ste taak hebt gebruikt (dit scheelt dus type werk). Op de 2de tab (User Properties) kun je de gegevens kwijt. De eerder gecreëerde parameter voor logonname kun je gebruiken voor het invoeren van de homedrive- en profielpad. Op het einde zou de taak er ongeveer zo uit moeten zien:

Als deze twee taken zijn aangemaakt, zou je ongeveer de onderstaande module parameters moeten hebben. Een aantal ervan kun je al voor de module invoeren, zodat de waarden van je omgeving er standaard al in staan. De UserLogonName is een uitdaging, maar wordt uitgelegd in de eerder genoemde blog van Anne Plancius. De lege parameters worden gevraagd in te voeren bij het laten uitvoeren van de taak.

Nu heb je een module dat automatisch een gebruikersaccount aanmaakt in de Active Directory en welke je kunt gebruiken via een CSV bestand. De lege parameters kunnen immers via een CSV ingelezen worden, waarna RES AM automatisch per regel in de CSV de gemaakte taken gaat uitvoeren. Dit gaat goed, totdat je dezelfde namen aan treft. Zo gauw in het CSV bestand zowel de namen Katrien Duck, Kwik Duck en Kwek Duck voorkomen, zal de taak falen met de mededeling dat het aan te maken object al bestaat. Katrien en Kwik Duck krijgen immers beiden de inlognaam DuckK. Laten we de aangemaakt taken eens veranderen, zodat dit wel goed gaat komen.

Als eerste maken we een nieuwe parameter aan voor de teller die achter de gebruikersaccounts moet komen op het moment dat zo’n inlognaam al bestaat. Voor het gemak noemen we de parameter ‘Counter’ en geven we deze standaard geen waarde. Zorg ervoor dat je in het tabblad Ínput’ de vinkjes weghaalt bij ‘input new value’. Vink wel het hokje aan bij ‘Hide parameter when not directly used’. De nieuwe parameter zou er dan zo uit moeten zien:

Nu moeten we de parameter van UserLogonName nog aanpassen. Open deze en plaats de nieuwe parameter ‘Counter’ op het einde van de value. Als de parameter ‘Counter’ leeg is (default waarde) wordt de logonnaam nog steeds [achternaam][1ste letter van de voornaam]. Echter, Als de parameter ‘Counter’ een waarde heeft, zoals bijvoorbeeld de waarde 11, dan wordt de logonnaam DuckK11.

De eerste stappen voor het afhandelen van een bestaand gebruikersaccount zijn nu gezet. Enige wat we nog moeten doen is de counter van een waarde voorzien, indien dat nodig is. Als eerste moeten we de taak ‘Create AD User’ door laten gaan bij problemen. Dit kun je doen door deze te editen en te kiezen voor het tabblad ‘Properties’. Geef daar bij ‘Error control’ de optie ‘Continue job on error’ aan.

Open vervolgens de 2de taak ‘Manage AD User’ en kies voor het tabblad ‘Condition’. Op deze tab gaan we een van de nieuwe condities gebruiken van RES AM 2011 SR1. Kies ‘Add’ en selecteer ‘Status of the previously executed task’ en geef deze de waarde ‘= Completed’.

Nu moeten we RES AM laten weten wat hij moet doen op het moment dat deze conditie wordt gehaald en wat hij moet doen als de conditie niet gehaald wordt en de task dus ‘failed’ is. Kies onder ‘If condition is TRUE’ voor de optie ‘Execute this task, but skip all remaining task in this module’. Onder ‘If Condition is FALSE’ kies je voor de optie ‘Skip this task’ en selecteer je de checkbox bij ‘Set parameter’. Kies vervolgens de parameter ‘Counter’ en geef deze de waarde ‘1’. Het totaal ziet er vervolgens als volgt uit:

Wat houdt bovenstaande nou allemaal in. Op het moment dat RES AM probeert een gebruikersnaam aan te maken die al bestaat, zal de taak ‘Create AD User’ falen. Omdat we hebben aangegeven dat RES AM door moet gaan op het moment dat die taak faalt, start gewoon de volgende taak ‘Manage AD User’. Hierbij wordt eerst de conditie bekeken om te bepalen wat er met de taak moet gebeuren. Als het gelukt was het useraccount aan te maken, wordt deze taak gewoon uitgevoerd. Na uitvoeren van de taak, worden de rest van de taken in de module overgeslagen. Het account is immers klaar.

Echter, wanneer de gebruikersnaam niet aangemaakt kon worden. Wordt de module ‘Manage AD User’ overgeslagen en wordt de parameter ‘Counter’ een waarde toegekend van 1. Hiermee wordt op dat moment ook de aan te maken gebruikersnaam veranderd, omdat deze afhankelijk is van de waarde in parameter ‘Counter’

Echter, hier hebben we niets aan als de module verder niet nogmaals probeert dezelfde stappen uit te voeren. RES AM kent geen ‘loop’ mogelijkheid, dus moeten we die zelf min of meer creëren door de al gemaakte taken te kopiëren. Dit kun je doen door in de taaklijst van de module beide taken te selecteren en vervolgens via de rechtermuisknop te kiezen voor Copy of door ctrl+C te gebruiken. Past vervolgens dezelfde taken in dit scherm. Doe dit een aantal keren voor het geval er redelijk wat gebruikers zijn met dezelfde achternaam en voorletter. Het resultaat ziet er dan als volgt uit:

We hebben nu een grote module met een grote hoeveelheid taken erin. Echter, de ‘counter’ komt nooit hoger dan 1. Open de 2de taak ‘Manage AD user’, ga naar het tabblad ‘Condition’ en geef de ‘counter’ de waarde ‘2’. Doe dit ook voor de 3de keer dat ‘Manage AD user’ voor komt en verander daar de waarde ‘3’, enzovoort (tot de allerlaatste, daar haal je de conditie weg).

Open daarna de laatste ‘Create AD user’-taak en zet ‘Error control’ bij deze taak terug op ‘Stop job on error’. RES AM zal dan de module als failed beschouwen als ook in onze laatste ‘loop’ het account niet aangemaakt kan worden. Nu zullen de neefjes Kwik, Kwek en Kwak Duck de gebruikersaccounts DuckK1, DuckK2 en DuckK3 krijgen, op het moment dat Katrien Duck (DuckK) al in het AD aanwezig is. Zogauw Kwik Duck wordt aangemaakt zal de module eindigen met de status ‘Completed with errors. Dit komt omdat de 1ste keer dat het account wordt aangemaakt, die taak faalt. Als je zo’n job opent ziet het er ongeveer als volgt uit:

Zoals je kunt zien is de eerste keer dat het account wordt aangemaakt, een error opgetreden. De ‘Manage AD User’-taak wordt vervolgens overgeslagen en de counter wordt verhoogd naar 1. De tweede keer dat het account wordt aangemaakt gaat het nu wel goed, dus wordt ook het managen van het account gedaan om vervolgens de overige taken in de module over te slaan.

Een buildingblock van dit alles is binnenkort te downloaden bij RESguru.com. Deze blog zal dan worden aangepast met een link daar naar toe.