|
| 1 | +--- |
| 2 | +title: Sample script for Azure HDInsight when cluster creation fails |
| 3 | +description: Sample script to run when Azure HDInsight cluster creation fails with DomainNotFound error. |
| 4 | +ms.service: hdinsight |
| 5 | +ms.topic: troubleshooting |
| 6 | +ms.date: 04/25/2022 |
| 7 | +--- |
| 8 | + |
| 9 | +# Sample Script |
| 10 | + |
| 11 | +Use this script to run when Azure HDInsight cluster creation fails with an error **DomainNotFound** error. |
| 12 | + |
| 13 | +``` |
| 14 | +domainName=$1 |
| 15 | +userName=$2 |
| 16 | +
|
| 17 | +if [[ -z "$domainName" ]]; then |
| 18 | + echo "Domain name is a required parameter" |
| 19 | + exit |
| 20 | +fi |
| 21 | +
|
| 22 | +if [[ -z "$userName" ]]; then |
| 23 | + echo "User name is a required parameter" |
| 24 | + exit |
| 25 | +fi |
| 26 | +
|
| 27 | +echo -n Password: |
| 28 | +read -s password |
| 29 | +echo |
| 30 | +
|
| 31 | +echo $password |
| 32 | +
|
| 33 | +echo "Domain join $domainName" |
| 34 | +
|
| 35 | +ping -q -c 1 $domainName |
| 36 | +pingStatus=$? |
| 37 | +
|
| 38 | +if [ $pingStatus -eq 0 ]; then |
| 39 | + echo "Ping for domain $domainName succeeded" |
| 40 | +else |
| 41 | + echo "Domain controller for $domainName was not resolvable" |
| 42 | + exit |
| 43 | +fi |
| 44 | +
|
| 45 | +shortDomainName="${domainName%%.*}" |
| 46 | +shortUserName="${userName%%@*}" |
| 47 | +sambaConfFileName="/etc/samba/smb.conf" |
| 48 | +
|
| 49 | +echo "Preparing the $sambaConfFileName file" |
| 50 | +cp $sambaConfFileName "$sambaConfFileName.bak" |
| 51 | +echo "[global]" > $sambaConfFileName |
| 52 | +echo " security = ads" >> $sambaConfFileName |
| 53 | +echo " realm = ${domainName^^}" >> $sambaConfFileName |
| 54 | +echo "# If the system doesn't find the domain controller automatically, you may need the following line" >> $sambaConfFileName |
| 55 | +echo " password server = *" >> $sambaConfFileName |
| 56 | +echo "# note that workgroup is the 'short' domain name" >> $sambaConfFileName |
| 57 | +echo " workgroup = ${shortDomainName^^}" >> $sambaConfFileName |
| 58 | +echo "# winbind separator = +" >> $sambaConfFileName |
| 59 | +echo " winbind enum users = yes" >> $sambaConfFileName |
| 60 | +echo " winbind enum groups = yes" >> $sambaConfFileName |
| 61 | +echo " template homedir = /home/%D/%U" >> $sambaConfFileName |
| 62 | +echo " template shell = /bin/bash" >> $sambaConfFileName |
| 63 | +echo " client use spnego = yes" >> $sambaConfFileName |
| 64 | +echo " client ntlmv2 auth = yes" >> $sambaConfFileName |
| 65 | +echo " encrypt passwords = yes" >> $sambaConfFileName |
| 66 | +echo " restrict anonymous = 2" >> $sambaConfFileName |
| 67 | +echo " log level = 2" >> $sambaConfFileName |
| 68 | +echo " log file = /var/log/samba/sambadebug.log.%m" >> $sambaConfFileName |
| 69 | +echo " debug timestamp = yes" >> $sambaConfFileName |
| 70 | +echo " max log size = 50" >> $sambaConfFileName |
| 71 | +echo " winbind use default domain = yes" >> $sambaConfFileName |
| 72 | +echo " nt pipe support = no" >> $sambaConfFileName |
| 73 | +echo >> $sambaConfFileName |
| 74 | +echo "# Placeholder for domains" >> $sambaConfFileName |
| 75 | +echo "idmap config ${shortDomainName^^} : backend = rid" >> $sambaConfFileName |
| 76 | +echo "idmap config ${shortDomainName^^} : schema_mode = rid" >> $sambaConfFileName |
| 77 | +echo "idmap config ${shortDomainName^^} : range = 100000-1100000" >> $sambaConfFileName |
| 78 | +echo "idmap config ${shortDomainName^^} : base_rid = 0" >> $sambaConfFileName |
| 79 | +echo "idmap config * : backend = tdb" >> $sambaConfFileName |
| 80 | +echo "idmap config * : schema_mode = rid" >> $sambaConfFileName |
| 81 | +echo "idmap config * : range = 10000-99999" >> $sambaConfFileName |
| 82 | +echo "idmap config * : base_rid = 0" >> $sambaConfFileName |
| 83 | +
|
| 84 | +export KRB5_TRACE=/tmp/krb.log |
| 85 | +reformattedUserName="$shortUserName@${domainName^^}" |
| 86 | +echo net ads join -w $domainName -U $reformattedUserName%$password |
| 87 | +
|
| 88 | +netJoinResult=$? |
| 89 | +
|
| 90 | +if [ $netJoinResult -ne 0 ] |
| 91 | +then |
| 92 | + echo "Net join failed with result: $netJoinResult" |
| 93 | + exit |
| 94 | +fi |
| 95 | +
|
| 96 | +echo "Net join succeeded" |
| 97 | +
|
| 98 | +net ads info |
| 99 | +``` |
0 commit comments