diff -ru gosc-scripts/imc-shell/imgcust-scripts/ConfigFile.sh gosc-scripts-from-RPM/imc-shell/imgcust-scripts/ConfigFile.sh
--- gosc-scripts/imc-shell/imgcust-scripts/ConfigFile.sh 2015-06-17 23:21:44.000000000 +0000
+++ gosc-scripts-from-RPM/imc-shell/imgcust-scripts/ConfigFile.sh 2015-08-13 22:56:47.000000000 +0000
@@ -103,6 +103,8 @@
local lineLength=
local key=
local val=
+# local bulkcontent=0
+ cloud_config_blob="content: |"
ConfigFile_Clear
@@ -146,8 +148,11 @@
# key value pair (non-eager '=' for base64)
elif [[ $line =~ ([^=]+)=(.*) ]]; then
key="${BASH_REMATCH[1]}"
- val="${BASH_REMATCH[2]}"
+ val="${BASH_REMATCH[2]}"
+ echo "$category"
+ echo "$key"
+
# cleaning up on all "input" paths
key=$(Trim "$key")
val=$(Trim "$val")
@@ -169,6 +174,44 @@
done <<<"$content"
}
+# Parses extra config file to parse the bulk blob content.
+# Args:
+# content: string:Name of file containing blob data
+# Results:
+# String: Content of Blob content config file
+# Throws:
+# None
+ConfigFile_GetBlobContent()
+{
+ local content="$1"
+ local line=
+ local cloud_config_blob="content: |"
+
+ while read line
+ do
+ # remove end char \n (chomp)
+ line="${line%\\n}"
+
+ # spaces at the end are not allowed, things like passwords must be at least base64-encoded
+ line=$(Trim "$line")
+
+ if [[ -z "$line" ]]; then
+ # Debug "Empty line. Ignored."
+ continue
+ fi
+
+ if [[ $line == '#'* ]]; then
+ #Debug "Comment found. Line ignored."
+ continue
+ fi
+
+ cloud_config_blob="$cloud_config_blob
+ $line"
+
+ done <<<"$content"
+ echo "$cloud_config_blob"
+}
+
# Parses properties from a .cfg file.
#
# Any previously available properties will be removed.
@@ -184,14 +227,28 @@
ConfigFile_LoadConfigFile()
{
local filename=$1
-
- Info "Opening file name $filename."
-
+ Info "Opening file name $filename"
local content=$(<$filename)
+ ConfigFile_LoadConfigContent "$content"
+}
- ConfigFile_LoadConfigContent "$content"
+# Open and parses content from Blob file content.
+#
+# Args:
+# filename: string: full path to a .cfg file
+# Results:
+# Bulk Config File Content.
+# Throws:
+# None
+ConfigFile_WriteFileContent()
+{
+ local filename=$1
+ local content=$(<$filename)
+ local result=$(ConfigFile_GetBlobContent "$content")
+ echo "$result"
}
+
# Determines whether a property with a given key exists.
#
# Args:
@@ -493,6 +550,200 @@
echo "$val"
}
+# Retrieves Lightwave DNS1 IP.
+#
+# Args:
+# None
+# Results:
+# string: DNS1 IP or empty string in case it's missing or empty
+# Throws:
+# None
+ConfigFile_GetLWDNS1()
+{
+ echo "$(ConfigFile_GetOptionalString 'LIGHTWAVE|DNS1')"
+}
+
+# Retrieves Lightwave DNS2 IP.
+#
+# Args:
+# None
+# Results:
+# string: DNS2 IP or empty string in case it's missing or empty
+# Throws:
+# None
+ConfigFile_GetLWDNS2()
+{
+ echo "$(ConfigFile_GetOptionalString 'LIGHTWAVE|DNS2')"
+}
+
+# Retrieves Lightwave DNS3 IP.
+#
+# Args:
+# None
+# Results:
+# string: DNS3 IP or empty string in case it's missing or empty
+# Throws:
+# None
+ConfigFile_GetLWDNS3()
+{
+ echo "$(ConfigFile_GetOptionalString 'LIGHTWAVE|DNS3')"
+}
+
+# Retrieves Lightwave Domain.
+#
+# Args:
+# None
+# Results:
+# string: Lightwave Domain or empty string in case it's missing or empty
+# Throws:
+# None
+ConfigFile_GetLWDomain()
+{
+ echo "$(ConfigFile_GetOptionalString 'LIGHTWAVE|DOMAIN')"
+}
+
+# Retrieves Lightwave SITE.
+#
+# Args:
+# None
+# Results:
+# string: SITE or empty string in case it's missing or empty
+# Throws:
+# None
+ConfigFile_GetLWSite()
+{
+ echo "$(ConfigFile_GetOptionalString 'LIGHTWAVE|SITE')"
+}
+
+# Retrieves Lightwave OP.
+#
+# Args:
+# None
+# Results:
+# string: OP or empty string in case it's missing or empty
+# Throws:
+# None
+ConfigFile_GetLWOP()
+{
+ echo "$(ConfigFile_GetOptionalString 'LIGHTWAVE|OP')"
+}
+
+# Retrieves Lightware domain password.
+#
+# Args:
+# None
+# Results:
+# string: Lightwave domain password or empty if its missing or empty
+# Throws:
+# None
+ConfigFile_GetLWDomainPwd()
+{
+ echo "$(ConfigFile_GetOptionalString 'LIGHTWAVE|-PASS')"
+}
+
+# Retrieves Lightware domain username.
+#
+# Args:
+# None
+# Results:
+# string: Lightwave domain username or empty if its missing or empty
+# Throws:
+# None
+ConfigFile_GetLWDomainUserName()
+{
+ echo "$(ConfigFile_GetOptionalString 'LIGHTWAVE|USERNAME')"
+}
+
+# Retrieves Service-N file Name.
+#
+# Args:
+# SERVICE-N File Name
+# Results:
+# string: Number of commands to be run for this particular service
+# Throws:
+# None
+ConfigFile_GetServiceFileCommandCount()
+{
+ local service_file=$1
+ local query="${service_file}|COMMANDCNT"
+ echo "$(ConfigFile_GetOptionalString $query)"
+}
+
+# Retrieves Service-N - command N to be executed
+#
+# Args:
+# SERVICE-N File Name
+# Command number
+# Results:
+# string: Command to be run.
+# Throws:
+# None
+ConfigFile_GetServiceFileCommand()
+{
+ local service_file=$1
+ local cmdNo=$2
+ local query="${service_file}|${cmdNo}"
+ echo "$(ConfigFile_GetOptionalString $query)"
+}
+
+# Retrieves Service-N file path
+#
+# Args:
+# SERVICE-N File Name
+#
+# Results:
+# string: Service file path
+# Throws:
+# None
+ConfigFile_GetServiceFilePath()
+{
+ local service_file=$1
+ local query="${service_file}|PATH"
+ echo "$(ConfigFile_GetOptionalString $query)"
+}
+
+
+# Retrieves Number of custom service.
+#
+# Args:
+# None
+# Results:
+# integer: count
+# Throws:
+# Dies in case setting is not present.
+ConfigFile_GetServiceCount()
+{
+ local val='' # has to be declared before assigned
+# Info "Seee Count"
+ val=$(ConfigFile_GetOptionalNonEmptyString "CLOUD-INIT-BLOB|SERVICES") || exit 1
+
+ local myresult=0
+
+ if [[ -n "$val" ]]; then
+ local spl=(${val//,/ })
+ myresult="${#spl[@]}"
+ fi
+# Info "service Count "
+ echo "$myresult"
+}
+
+# Retrieves Service File Name.
+#
+# Args:
+# None
+# Results:
+# string: service file name
+# Throws:
+# Dies in case setting is not present.
+ConfigFile_GetServiceFileName()
+{
+ local service_file=$1
+ # echo "$service_file"
+ local query="${service_file}|NAME"
+ echo "$(ConfigFile_GetOptionalString $query)"
+
+}
+
# Retrieves whether to set time to UTC or Local.
#
# Args:
@@ -1035,3 +1286,4 @@
echo "$primary"
}
+
diff -ru gosc-scripts/imc-shell/imgcust-scripts/CustomizationUtils.sh gosc-scripts-from-RPM/imc-shell/imgcust-scripts/CustomizationUtils.sh
--- gosc-scripts/imc-shell/imgcust-scripts/CustomizationUtils.sh 2015-06-17 23:21:58.000000000 +0000
+++ gosc-scripts-from-RPM/imc-shell/imgcust-scripts/CustomizationUtils.sh 2015-08-14 02:19:13.099688800 +0000
@@ -385,7 +385,7 @@
local oldFQDN=$(GetResolverFqdn)
local res=''
Info "CHF"
- echo $pldHostname
+ echo $oldHostname
echo $oldFQDN
CustomizeHostsFileContent "" "$oldHostname" "$oldFQDN" "res"
@@ -670,6 +670,113 @@
Info "InstallCustomScript has completed"
}
+
+# Execute Photon vm to join lightwave configuration if provided credential in input.
+#
+# Args:
+# None
+# Results:
+# None
+# Throws:
+# None
+LightWaveDomainJoin()
+{
+
+ local result="DNS="
+ local lw_dns1=$(ConfigFile_GetLWDNS1)
+ local lw_dns2=$(ConfigFile_GetLWDNS2)
+ local lw_dns3=$(ConfigFile_GetLWDNS3)
+ local query_string=''
+
+ Debug "DNS1 $lw_dns1"
+ Debug "DNS2 $lw_dns2"
+ Debug "DNS3 $lw_dns3"
+ query_string="$lw_dns1 $lw_dns2 $lw_dns3"
+ Debug "DNS to be set : $query_string"
+
+ if [[ -n "$query_string" ]]; then
+ result=$result$query_string
+ sed -i "s/#DNS/DNS/g" /etc/systemd/resolved.conf
+ sed -i "1,/DNS=/s/DNS=/$result/" /etc/systemd/resolved.conf
+ fi
+
+ local domain_name=$(ConfigFile_GetLWDomain)
+ local user_name=$(ConfigFile_GetLWDomainUserName)
+ local password=$(ConfigFile_GetLWDomainPwd)
+
+ # default username is administrator, we will overwrite it if other username is specified
+
+ if [[ -z "$user_name" ]]; then
+ user_name='administrator'
+ fi
+
+ # optional params
+ local op=$(ConfigFile_GetLWOP)
+ if [[ -n "$op" ]]; then
+ op="--op $op"
+ fi
+
+ local site=$(ConfigFile_GetLWSite)
+ if [[ -n "$site" ]]; then
+ site="--site $site"
+ fi
+ Debug "LIGHTWAVE domain_name $domain_name username : $user_name pwd $password"
+ local optional="$op $site"
+
+ local execute="/opt/vmware/bin/domainjoin join $domain_name --username $user_name --password $password"
+
+ if [[ -n "$domain_name" ]] && [[ -n "$password" ]]; then
+ if [[ -n "$optional" ]]; then
+ execute="$execute $optional"
+ fi
+ Debug "Going to execute $execute"
+ $execute
+ Debug "Light wave domain join procedure completed"
+ else
+ Debug "ERROR :: Either Domain Name or Password Missing: Cannot Join Lighwave domain"
+ fi
+
+}
+
+
+# Execute all blob service file commands if present in the configuration file.
+#
+# Args:
+# None
+# Results:
+# None
+# Throws:
+# Nothing
+#
+ExecuteAllBlobServiceFileCommands()
+{
+ local val=''
+ val=$(ConfigFile_GetOptionalNonEmptyString "CLOUD-INIT-BLOB|SERVICES")
+
+ if [ -z "$val" ]; then
+ Info "No Blob Service file present:: Nothing to do"
+ else
+ Info "Service file found. executing Commands......."
+ local ser_cnt=$(ConfigFile_GetServiceCount)
+ for i in $(seq 1 $ser_cnt); do
+ local service_tag="SERVICE"
+ local command_tag="COMMAND"
+ local ser_query=$service_tag$i
+ local cmd_cnt=$(ConfigFile_GetServiceFileCommandCount $ser_query)
+ if [ "$cmd_cnt" -gt 0 ]; then
+ for j in $(seq 1 $ser_cnt); do
+
+ local cmd_query=$command_tag$j
+ local commd=$(ConfigFile_GetServiceFileCommand $ser_query $cmd_query)
+ Exec '$commd'
+ done
+ fi
+ done
+ fi
+}
+
+
+
# Generates cloud-init configuration files which represents customization.
#
# Args:
@@ -697,30 +804,6 @@
EOF
)
- local scriptName=$(ConfigFile_GetCustomScriptName)
-
- if [[ -n "$scriptName" ]]; then
- export formatResult=$formatResult$(${CAT} <<EOF
-
-
-photon:
- units:
- - name: post-customize-guest.service
- enable: yes
- content: |
- [Unit]
- Description=GOSC
-
- [Service]
- TimeoutStartSec=0
- ExecStart=/etc/systemd/system/post-customize-guest.sh
-
- [Install]
- WantedBy=multi-user.target
-EOF
-)
- fi
-
securitySshRsa=$(GetOvfPropertyValue 'security.ssh-rsa' $tmpOvfEnvFile)
if [[ -n "$securitySshRsa" ]]; then
@@ -749,11 +832,39 @@
users:
- name: root
+ lock-passwd: false
passwd: $adminPwdHash
EOF
)
fi
+ export formatResult=$formatResult$(${CAT} <<EOF
+
+write_files:
+EOF
+)
+
+ local service_cnt=$(ConfigFile_GetServiceCount)
+ if [ "$service_cnt" -gt 0 ]; then
+ for j in $(seq 1 $service_cnt); do
+ Debug "Writing service file '$j'"
+ local ser="SERVICE"
+ queryString=$ser$j
+ local ff_name=$(ConfigFile_GetServiceFileName $queryString)
+ local path=$(ConfigFile_GetServiceFilePath $queryString)
+ local abs_file="$path/$ff_name"
+ local data=$(ConfigFile_WriteFileContent $abs_file)
+ export formatResult=$formatResult$(${CAT} <<EOF
+
+ - path: /etc/systemd/system/$ff_name.service
+ permissions: 0644
+ $data
+EOF
+)
+
+ done
+ fi
+
local nicsCnt=$(ConfigFile_GetNicsCnt)
local i=
@@ -768,8 +879,6 @@
export formatResult=$formatResult$(${CAT} <<EOF
-
-write_files:
- path: /etc/systemd/network/ifcfg-$ifCfg.network
permissions: 0644
content: |
@@ -1013,3 +1122,4 @@
echo ""
fi
}
+
diff -ru gosc-scripts/imc-shell/imgcust-scripts/PhotonCustomization.sh gosc-scripts-from-RPM/imc-shell/imgcust-scripts/PhotonCustomization.sh
--- gosc-scripts/imc-shell/imgcust-scripts/PhotonCustomization.sh 2015-06-17 23:22:17.000000000 +0000
+++ gosc-scripts-from-RPM/imc-shell/imgcust-scripts/PhotonCustomization.sh 2015-08-13 22:56:47.000000000 +0000
@@ -10,7 +10,7 @@
local ciConfigPath="/tmp/cloud-config.ci"
- rm -rf /etc/systemd/network/ifcfg-*
+ rm -rf /etc/systemd/network/*
ConfigFile_LoadConfigFile $configPath
@@ -44,6 +44,9 @@
else
Exec "/usr/bin/timedatectl set-timezone $tz" '' ''
fi
+
+ sleep 2
+ rm -rf /var/lib/cloud/instance*
GenerateCloudInitConfig content "GetInterfaceByMacAddressIPAddrShow" $tmpOvfEnvFile
@@ -65,6 +68,12 @@
echo "${shadow}" > /etc/shadow
fi
+ # Execute all commands present in blob service file
+ ExecuteAllBlobServiceFileCommands
+
+ # Call lightwave domain join
+ LightWaveDomainJoin
+
machineId=$(GetBiosUuid "")
}