Dieser Artikel ist der zweite Teil einer dreiteiligen Serie. Der vorherige Teil der Serie ist hier zu finden.
In diesem Teil wird ein Deployment Script erarbeitet und eingerichtet, welches den eigentlichen Domain Join und die dynamische DNS Aktualisierung übernimmt.
Rahmenbedingungen:
In diesem Artikel werden ergänzend die folgenden Variablen benutzt:
Scriptpfad | /opt/joinDomain.sh |
Domain Join Service Account | svc-linux-domainjoin |
Passwort | 061Wvx1A7pbN94 |
Syntax für Admingruppen | SG-%ComputerName%-LocalAdmins |
Einrichtung
Wenn wir, wie im vorherigen Beitrag beschrieben, PowerBroker (Open-) Identity Service heruntergeladen haben und ohne Fehler installieren konnten, steht uns nun die „domainjoin-cli“ zur Verfügung, welche wir uns im Join Script zur nutze machen werden. Naheliegenderweise erweiterten wir mit dem Script ebenfalls die Datei „/etc/sudoers“ um eine Administrative Gruppe nach dem oben genannten Namensschema. Zusätzlich richten wir einen stündliche Cronjob ein, welcher den DNS Hostname des Systems im Windows DNS Server registriert.
Hinweis: Hier wird explizit auf die v4 Adressen gefiltert, dies kann durch v6 erweitert werden, indem man den Regex, welcher im Script definiert ist entsprechend abändert.
Da wir leider keinerlei Möglichkeit haben, auf den RunAs-User des SCVMMs zuzugreifen, müssen wir an dieser Stelle ein Passwort in das Script fest einspeichern. Dieser Account benötigt allerdings lediglich das Recht, Computer in das Active Directory aufzunehmen.
Auch hier ein weiterer Hinweis: Standardmäßig steht das Attribut „MSDS-MachineAccountQuota“ auf 10, somit kann ein normaler Account ohne weitere Rechte (z.B. durch die Gruppe Account Operators oder eine spezielle ACL) lediglich 10 Computer in das Active Directory aufnehmen.
Dafür speichern wir das folgende Script unter dem oben definierten Script Pfad ab:
#!/bin/sh #Join the domain /opt/pbis/bin/domainjoin-cli join contoso.com svc-linux-domainjoin@contoso.com "061Wvx1A7pbN94"; #Wait a few seconds for all services to recover sleep 30s; #Define some basic settings /opt/pbis/bin/config UserDomainPrefix CONTOSO; /opt/pbis/bin/config AssumeDefaultDomain true; /opt/pbis/bin/config LoginShellTemplate /bin/bash; /opt/pbis/bin/config HomeDirTemplate %H/%U; /opt/pbis/bin/config RequireMembershipOf CONTOSO\\domain-users; /opt/pbis/bin/config UserNotAllowedError "Active Directory: Access Denied"; #Trigger a DDNS Update using all of our IPv4 Addresses /opt/pbis/bin/update-dns --ipaddress $(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/'); #Schedule a hourly DDNS Update using all of our IPv4 Addresses echo "#!/bin/bash" > /etc/cron.hourly/ad-ddns-update; echo "/opt/pbis/bin/update-dns --ipaddress \$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print \$2}' | cut -f1 -d'/')" >> /etc/cron.hourly/ad-ddns-update; #Assign executable permissions to the cronjob chmod +x /etc/cron.hourly/ad-ddns-update; #Adjust our sudoers file echo "%sg-$(hostname | tr [A-Z] [a-z])-LocalAdmins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers;
Hat man die Datei unter dem vorher definierten Pfad gespeichert, so muss man diese noch mit dem Kommando „chmod +x /opt/joinDomain.sh“ ausführbar machen.
Ausblick
In dem kommenden Beitrag wird die erzeugte virtuelle Maschine durch zu einem Template konvertiert und durch entsprechende runOnce Kommandos erweitert.
http://faq-o-matic.net/?p=8127