From ad74dbb2bc91e96808281a2dadd57e17d7e0976b Mon Sep 17 00:00:00 2001 From: Miles Collier Date: Tue, 3 Aug 2021 12:53:44 -0600 Subject: [PATCH 1/2] Update domainjoin_unix_script.go `OwnerDirectoryDescription` does not seem to exist on Centos 7.9 ```aws ds describe-directories --region us-east-1 --query "DirectoryDescriptions[?DirectoryId =='d-90676a899f'].OwnerDirectoryDescription.DirectoryId | [0]" | sed 's/"//g'``` Results in: null (incorrect) ```aws ds describe-directories --region us-east-1 --query "DirectoryDescriptions[?DirectoryId =='d-90676a899f'].DirectoryId | [0]" | sed 's/"//g'``` Results in: d-* (correct) --- agent/plugins/domainjoin/domainjoin_unix_script.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/agent/plugins/domainjoin/domainjoin_unix_script.go b/agent/plugins/domainjoin/domainjoin_unix_script.go index f8a246909..6b8ac2c0e 100755 --- a/agent/plugins/domainjoin/domainjoin_unix_script.go +++ b/agent/plugins/domainjoin/domainjoin_unix_script.go @@ -287,12 +287,12 @@ get_servicecreds() { SECRET_ID="${SECRET_ID_PREFIX}/$DIRECTORY_ID/seamless-domain-join" SECRET_VALUE=$($AWSCLI secretsmanager get-secret-value --secret-id "$SECRET_ID" --region $REGION --query "SecretString" --output text 2>/dev/null) if [ $? -ne 0 ]; then - PARENT_DIRECTORY_ID=$($AWSCLI ds describe-directories --region $REGION --query "DirectoryDescriptions[?DirectoryId =='$DIRECTORY_ID'].OwnerDirectoryDescription.DirectoryId | [0]" | sed 's/"//g') + PARENT_DIRECTORY_ID=$($AWSCLI ds describe-directories --region $REGION --query "DirectoryDescriptions[?DirectoryId =='$DIRECTORY_ID'].DirectoryId | [0]" | sed 's/"//g') if [ $? -ne 0 ] || [ -z "$PARENT_DIRECTORY_ID" ] || [ "$PARENT_DIRECTORY_ID" == null ]; then echo "***Failed: Cannot find parent directory Id" exit 1 fi - PARENT_ACCOUNT_ID=$($AWSCLI ds describe-directories --region $REGION --query "DirectoryDescriptions[?DirectoryId =='$DIRECTORY_ID'].OwnerDirectoryDescription.AccountId | [0]" | sed 's/"//g') + PARENT_ACCOUNT_ID=$($AWSCLI ds describe-directories --region $REGION --query "DirectoryDescriptions[?DirectoryId =='$DIRECTORY_ID'].AccountId | [0]" | sed 's/"//g') if [ $? -ne 0 ] || [ -z "$PARENT_ACCOUNT_ID" ] || [ "$PARENT_ACCOUNT_ID" == null ]; then echo "***Failed: Cannot find parent account Id" exit 1 From 68dedba02910b05f4d43e6ed6e9acd7e841a0a60 Mon Sep 17 00:00:00 2001 From: Miles Collier Date: Tue, 3 Aug 2021 13:30:29 -0600 Subject: [PATCH 2/2] Support Active Directory if joined on non-cross account --- agent/plugins/domainjoin/domainjoin_unix_script.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/agent/plugins/domainjoin/domainjoin_unix_script.go b/agent/plugins/domainjoin/domainjoin_unix_script.go index 6b8ac2c0e..8c90fb11a 100755 --- a/agent/plugins/domainjoin/domainjoin_unix_script.go +++ b/agent/plugins/domainjoin/domainjoin_unix_script.go @@ -287,11 +287,19 @@ get_servicecreds() { SECRET_ID="${SECRET_ID_PREFIX}/$DIRECTORY_ID/seamless-domain-join" SECRET_VALUE=$($AWSCLI secretsmanager get-secret-value --secret-id "$SECRET_ID" --region $REGION --query "SecretString" --output text 2>/dev/null) if [ $? -ne 0 ]; then - PARENT_DIRECTORY_ID=$($AWSCLI ds describe-directories --region $REGION --query "DirectoryDescriptions[?DirectoryId =='$DIRECTORY_ID'].DirectoryId | [0]" | sed 's/"//g') + PARENT_DIRECTORY_ID=$($AWSCLI ds describe-directories --region $REGION --query "DirectoryDescriptions[?DirectoryId =='$DIRECTORY_ID'].DirectoryId | [0]" | sed 's/"//g') if [ $? -ne 0 ] || [ -z "$PARENT_DIRECTORY_ID" ] || [ "$PARENT_DIRECTORY_ID" == null ]; then echo "***Failed: Cannot find parent directory Id" exit 1 fi + SHARED_DIRECTORY_ID=$($AWSCLI ds describe-directories --region $REGION --query "DirectoryDescriptions[?DirectoryId =='$DIRECTORY_ID'].OwnerDirectoryDescription.DirectoryId | [0]" | sed 's/"//g') + if [ $? -ne 0 ] || [ -z "$SHARED_DIRECTORY_ID" ] || [ "$SHARED_DIRECTORY_ID" == null ]; then + echo "No share exists, ignoring" + + else + echo "Share exists, modifying PARENT_DIRECTORY" + PARENT_DIRECTORY_ID=$SHARED_DIRECTORY_ID + fi PARENT_ACCOUNT_ID=$($AWSCLI ds describe-directories --region $REGION --query "DirectoryDescriptions[?DirectoryId =='$DIRECTORY_ID'].AccountId | [0]" | sed 's/"//g') if [ $? -ne 0 ] || [ -z "$PARENT_ACCOUNT_ID" ] || [ "$PARENT_ACCOUNT_ID" == null ]; then echo "***Failed: Cannot find parent account Id"