Utilizzare gli script descritti in questa sezione per clonare le assegnazioni dei ruoli applicazione da un ambiente a un altro. L'utente che esegue questi script deve disporre del ruolo Amministratore servizi in entrambi gli ambienti.
Nota:
In caso di utilizzo della versione in formato PDF di questo documento: per evitare le interruzioni di riga e le informazioni dei piè di pagina che renderebbero inutilizzabili questi script, copiare gli script dalla Versione HTML di questo argomento.Windows
replicatepredefinedroles.ps1 copiando lo script riportato di seguito.
# Replicate application roles script
$inputproperties = ConvertFrom-StringData(Get-Content ./input.properties -raw)
$epmusersource="$($inputproperties.epmusersource)"
$epmpwdsource="$($inputproperties.epmpwdsource)"
$epmurlsource="$($inputproperties.epmurlsource)"
$epmidentitydomainsource="$($inputproperties.epmidentitydomainsource)"
$epmusertarget="$($inputproperties.epmusertarget)"
$epmpwdtarget="$($inputproperties.epmpwdtarget)"
$epmurltarget="$($inputproperties.epmurltarget)"
$epmidentitydomaintarget="$($inputproperties.epmidentitydomaintarget)"
$proxyserverusername="$($inputproperties.proxyserverusername)"
$proxyserverpassword="$($inputproperties.proxyserverpassword)"
$proxyserverdomain="$($inputproperties.proxyserverdomain)"
$emailtoaddress="$($inputproperties.emailtoaddress)"
$roleassignmentreport="roleassignmentreport.csv"
function replicateroles
{
# epmautomate login Source App as an IDM Admin
echo "Logging into source application at ${epmurlsource}"
epmautomate login ${epmusersource} ${epmpwdsource} ${epmurlsource} ${epmidentitydomainsource} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
echo "Creating role assignment report: ${roleassignmentreport}"
epmautomate roleAssignmentReport ${roleassignmentreport}
if (${emailtoaddress} -match "@") {
epmautomate.bat sendMail $emailtoaddress "Role assignment report" Body="Role assignment report is attached." Attachments=$roleassignmentreport
}
echo "Downloading role assignment report"
epmautomate downloadfile ${roleassignmentreport}
epmautomate deletefile ${roleassignmentreport}
epmautomate logout
echo "Creating files to use with epmautomate assignRoles"
Get-Content ${roleassignmentreport} | ForEach-Object {
$user=$_.split(',')[0]
$rolename=$_.split(',')[4]
if ($rolename -like '*User' -And $rolename -notlike '*Power User') {
$rolenamearray=$rolename.split(" ")
$arraysize=$rolenamearray.count
$rolename="User"
if ($arraysize.count -le 2) {
echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv"
}
}
elseif ($rolename -like '*Viewer') {
$rolenamearray=$rolename.split(" ")
$arraysize=$rolenamearray.count
$rolename="Viewer"
if ($arraysize -le 2) {
echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv"
}
}
elseif ($rolename -like '*Power User') {
$rolenamearray=$rolename.split(" ")
$arraysize=$rolenamearray.count
$rolename="Power User"
if ($arraysize -le 3) {
echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv"
}
}
elseif ($rolename -like '*Service Administrator') {
$rolenamearray=$rolename.split(" ")
$arraysize=$rolenamearray.count
$rolename="Service Administrator"
if ($arraysize -le 3) {
echo "${user}" | Out-File -Append -Encoding "UTF8" "role-${rolename}.csv"
}
}
elseif ($rolename -like 'Planner') {
echo "${user}" | Out-File -Append -Encoding "UTF8" "role-User.csv"
}
}
# Add header and format
$rolefiles = Get-ChildItem "role-*.csv"
foreach ($rolefile in $rolefiles) {
$rolefilecontent = Get-Content "$rolefile"
$headerline='User Login'
Set-Content $rolefile -value $headerline,$rolefilecontent
$txt = [io.file]::ReadAllText("$rolefile") -replace "`r`n","`n"
[io.file]::WriteAllText("$rolefile", $txt)
}
# epmautomate login Target App as an IDM Admin
echo "Logging into target application at ${epmurltarget}"
epmautomate login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${epmidentitydomaintarget} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
$rolefiles = Get-ChildItem "role-*.csv"
foreach ($rolefile in $rolefiles) {
$rolenamecsv=$rolefile.BaseName.split('-')[1]
$rolename=$rolenamecsv.split('.')[0]
epmautomate deletefile "${rolefile}" | Out-Null
echo "Uploading file ${rolefile}"
epmautomate uploadfile "${rolefile}"
echo "Assigning ${rolename} roles"
epmautomate assignRole "role-${rolename}.csv" "${rolename}"
epmautomate deletefile "role-${rolename}.csv"
}
epmautomate logout
rm deletefile*.log | Out-Null
}
function init
{
# delete ${role}.csv files
$rolefiles = Get-ChildItem "role-*.csv"
foreach ($rolefile in $rolefiles) {
$rolefileexists=Test-Path $rolefile
if ($rolefileexists) {
rm "${rolefile}"
}
}
}
echo "Replicate application roles script started"
init
replicateroles
echo "Replicate application roles script completed"
input.properties copiando lo script riportato di seguito.
epmusersource=EPM USER FOR SOURCE ENVIRONMENT epmpwdsource=EPM PASSWORD FILE FOR SOURCE ENVIRONMENT epmurlsource=EPM URL FOR SOURCE ENVIRONMENT epmidentitydomainsource=EPM IDENTITY DOMAIN FOR SOURCE ENVIRONMENT epmusertarget=EPM USER FOR TARGET ENVIRONMENT epmpwdtarget=EPM PASSWORD FILE FOR TARGET ENVIRONMENT epmurltarget=EPM URL FOR TARGET ENVIRONMENT epmidentitydomaintarget=EPM IDENTITY DOMAIN FOR TARGET ENVIRONMENT proxyserverusername=PROXY SERVER USER NAME proxyserverpassword=PROXY SERVER PASSWORD FILE proxyserverdomain=PROXY SERVER DOMAIN emailtoaddress=EMAIL_TO_ADDRESS
input.properties in base alle esigenze. Fare riferimento alla tabella che segue per le informazioni sui valori da impostare per le proprietà in questo file.
Aggiornamento di input.properties
| Parametro | Descrizione |
|---|---|
epmusersource |
Nome utente di un utente con i ruoli Amministratore dominio di Identity e Amministratore servizi nell'ambiente di origine.
Esempi: Windows: Linux/UNIX: |
epmpwdsource |
La password dell'utente o il percorso assoluto del file delle password cifrate.
Esempi: Windows: Linux/UNIX: |
epmurlsource |
URL dell'ambiente da cui devono essere copiati gli utenti.
Esempi: Windows: Linux/UNIX: |
epmidentitydomainsource |
Nome del dominio di Identity utilizzato dall'ambiente di origine.
Esempi: Windows: Linux/UNIX: |
epmusertarget |
Nome utente di un utente con i ruoli Amministratore dominio di Identity e Amministratore servizi nell'ambiente target.
Esempi: Windows: Linux/UNIX: |
epmpwdtarget |
La password dell'utente o il percorso assoluto del file delle password cifrate.
Esempi: Windows: Linux/UNIX: |
epmurltarget |
URL dell'ambiente in cui devono essere creati gli utenti.
Esempi: Windows: Linux/UNIX: |
epmidentitydomaintarget |
Nome del dominio di Identity utilizzato dall'ambiente target.
Esempi: Windows: Linux/UNIX: |
proxyserverusername |
Il nome utente per l'autenticazione di una sessione sicura con il server proxy che controlla l'accesso a Internet. Eliminare tutte le occorrenze di questa proprietà, se non utilizzate.
Esempi: Windows: Linux/UNIX: |
proxyserverpassword |
La password per autenticare l'utente con il server proxy. Eliminare tutte le occorrenze di questa proprietà, se non utilizzate.
Esempi: Windows: Linux/UNIX: |
proxyserverdomain |
Il nome del dominio definito per il server proxy. Eliminare tutte le occorrenze di questa proprietà, se non utilizzate.
Esempi: Windows: Linux/UNIX: |
emailtoaddress |
(Facoltativo) Indirizzo e-mail a cui deve essere inviato il report assegnazioni ruoli. Il report viene inviato via e-mail solo se viene specificato questo valore.
Esempio: |
Linux/UNIX
input.properties copiando lo script riportato di seguito.
javahome=JAVA HOME epmautomatescript=EPM AUTOMATE SCRIPT LOCATION epmusersource=EPM USER FOR SOURCE ENVIRONMENT epmpwdsource=EPM PASSWORD FILE FOR SOURCE ENVIRONMENT epmurlsource=EPM URL FOR SOURCE ENVIRONMENT epmidentitydomainsource=EPM IDENTITY DOMAIN FOR SOURCE ENVIRONMENT epmusertarget=EPM USER FOR TARGET ENVIRONMENT epmpwdtarget=EPM PASSWORD FILE FOR TARGET ENVIRONMENT epmurltarget=EPM URL FOR TARGET ENVIRONMENT epmidentitydomaintarget=EPM IDENTITY DOMAIN FOR TARGET ENVIRONMENT proxyserverusername=PROXY SERVER USER NAME proxyserverpassword=PROXY SERVER PASSWORD FILE proxyserverdomain=PROXY SERVER DOMAIN emailtoaddress=EMAIL_TO_ADDRESS
input.properties. Fare riferimento alla Tabella 3-* per informazioni sui valori da specificare. Inoltre, è necessario specificare i valori per le proprietà riportate di seguito.
javahome: il percorso assoluto alla directory dove è installato Java.epmautomatescript: posizione di epmautomatescript.sh; ad esempio, epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"replicatepredefinedroles.sh copiando lo script riportato di seguito.
#!/bin/sh
. ./input.properties
roleassignmentreport="roleassignmentreport.csv"
export JAVA_HOME=${javahome}
replicateroles()
{
# epmautomate login Source App as an DM Admin
echo "Logging into source application at ${epmurlsource}"
${epmautomatescript} login ${epmusersource} ${epmpwdsource} ${epmurlsource} ${epmidentitydomainsource} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
echo "Creating role assignment report: ${roleassignmentreport}"
${epmautomatescript} roleAssignmentReport ${roleassignmentreport}
if [[ "${emailtoaddress}" == *"@"* ]]
then
${epmautomatescript} sendMail $emailtoaddress "Role assignment report" Body="Role assignment report is attached." Attachments=$roleassignmentreport
fi
echo "Downloading role assignment report"
${epmautomatescript} downloadfile ${roleassignmentreport}
${epmautomatescript} deletefile ${roleassignmentreport}
${epmautomatescript} logout
echo "Creating files to use with epmautomate assignRoles"
while read line
do
user=$(echo "${line}" | cut -d',' -f1)
rolename=$(echo "${line}" | cut -d',' -f5)
if [[ "$rolename" == *"User" ]] && [[ "$rolename" != "*Power User" ]]
then
count=$(echo "${rolename}" | wc -w);
rolename="User"
if [[ $count -le 2 ]]
then
echo "${user}" >> "role-${rolename}.csv"
fi
elif [[ "$rolename" == *"Viewer" ]]
then
count=$(echo "${rolename}" | wc -w);
rolename="Viewer"
if [[ $count -le 2 ]]
then
echo "${user}" >> "role-${rolename}.csv"
fi
elif [[ "$rolename" == *"Power User" ]]
then
count=$(echo "${rolename}" | wc -w);
rolename="Power User"
if [[ $count -le 3 ]]
then
echo "${user}" >> "role-${rolename}.csv"
fi
elif [[ "$rolename" == *"Service Administrator" ]]
then
count=$(echo "${rolename}" | wc -w);
rolename="Service Administrator"
if [[ $count -le 3 ]]
then
echo "${user}" >> "role-${rolename}.csv"
fi
elif [[ "$rolename" == "Planner" ]]
then
echo "${user}" >> "role-User.csv"
fi
done < ${roleassignmentreport}
# write header line
for f in role-*.csv
do
sed -i '1iUser Login' "$f"
done
# epmautomate login Target App as an IDM Admin
echo "Logging into target application at ${epmurltarget}"
${epmautomatescript} login ${epmusertarget} ${epmpwdtarget} ${epmurltarget} ${epmidentitydomaintarget} ${proxyserverusername} ${proxyserverpassword} ${proxyserverdomain}
for rolefile in role-*.csv
do
rolenamecsv=$(echo "$rolefile" | cut -d'-' -f2)
rolename=$(echo "$rolenamecsv" | cut -d'.' -f1)
${epmautomatescript} deletefile "${rolefile}" > /dev/null 2>&1
echo "Uploading file ${rolefile}"
${epmautomatescript} uploadfile "${rolefile}"
echo "Assigning roles"
${epmautomatescript} assignrole "${rolefile}" "${rolename}"
${epmautomatescript} deletefile "${rolefile}"
done
${epmautomatescript} logout
rm deletefile*.log > /dev/null 2>&1
}
init()
{
# delete role-${role}.csv files
for f in role-*.csv
do
rm "$f" > /dev/null 2>&1
done
}
echo "Replicate application roles script started"
init
replicateroles
echo "Replicate application roles script completed"
replicatepredefineroles.sh. Fare riferimento alla tabella precedente per le informazioni sui valori da specificare. Inoltre, è necessario specificare i valori per le proprietà riportate di seguito.
javahome: il percorso assoluto alla directory dove è installato Java.epmautomatescript: posizione di epmautomatescript.sh; ad esempio, epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"