Réplication des affectations de rôle d'application d'un environnement dans un autre

Utilisez les scripts de cette section pour cloner les affectations de rôle d'application d'un environnement dans un autre. Pour exécuter ces scripts, l'utilisateur doit posséder le rôle Administrateur de service dans les deux environnements.

Remarque :

Si vous utilisez la version PDF de ce document : pour éviter les retours à la ligne et les informations de pied de page qui rendent ces scripts inutilisables, copiez-les à partir de la version HTML de cette rubrique.

Windows

  1. Créez replicatepredefinedroles.ps1 en copiant le script suivant.
    # 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"
    
  2. Créez le fichier input.properties en copiant le script suivant.
    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
  3. Mettez à jour input.properties, si nécessaire. Reportez-vous au tableau suivant afin d'obtenir des informations sur les valeurs à définir pour les propriétés de ce fichier.

    Mise à jour du fichier input.properties

    Paramètre  Description
    epmusersource Nom de l'utilisateur doté des rôles Administrateur de domaine d'identité et Administrateur de service dans l'environnement source.

    Exemples :

    Windows : set epmusersource="jDoe"

    Linux/UNIX : epmusersource="jDoe"

    epmpwdsource Mot de passe de l'utilisateur ou chemin absolu du fichier de mots de passe crypté.

    Exemples :

    Windows : set epmpwdsource="Example"

    Linux/UNIX : epmpwdsource="Example"

    epmurlsource URL de l'environnement à partir duquel les utilisateurs doivent être copiés.

    Exemples :

    Windows : set epmurlsource="https://example.oraclecloud.com"

    Linux/UNIX : epmurlsource="https://example.oraclecloud.com"

    epmidentitydomainsource Nom du domaine d'identité utilisé par l'environnement source.

    Exemples :

    Windows : set epmidentitydomainsource="example_source_dom"

    Linux/UNIX : epmidentitydomainsource="example_source_dom"

    epmusertarget Nom de l'utilisateur doté des rôles Administrateur de domaine d'identité et Administrateur de service dans l'environnement cible.

    Exemples :

    Windows : set epmusertarget="John.Doe"

    Linux/UNIX : set epmusertarget="John.Doe"

    epmpwdtarget Mot de passe de l'utilisateur ou chemin absolu du fichier de mots de passe crypté.

    Exemples :

    Windows : set epmpwdtarget="Example1"

    Linux/UNIX : epmpwdtarget="Example1"

    epmurltarget URL de l'environnement dans lequel les utilisateurs doivent être créés.

    Exemples :

    Windows : set epmurltarget="https://example.oraclecloud.com"

    Linux/UNIX : epmurltarget="https://example.oraclecloud.com"

    epmidentitydomaintarget Nom du domaine d'identité utilisé par l'environnement cible.

    Exemples :

    Windows : set epmidentitydomaintarget="example_target_dom"

    Linux/UNIX : epmidentitydomaintarget="example_target_dom"

    proxyserverusername Nom d'utilisateur permettant d'authentifier une session sécurisée avec le serveur proxy qui contrôle l'accès à Internet. Supprime toutes les occurrences de cette propriété si elle n'est pas utilisée.

    Exemples :

    Windows : set proxyserverusername="Example"

    Linux/UNIX : proxyserverusername="Example"

    proxyserverpassword Mot de passe pour l'authentification de l'utilisateur auprès du serveur proxy. Supprime toutes les occurrences de cette propriété si elle n'est pas utilisée.

    Exemples :

    Windows : set proxyserverpassword="examplePwd"

    Linux/UNIX : proxyserverpassword="examplePwd"

    proxyserverdomain Nom du domaine défini pour le serveur proxy. Supprime toutes les occurrences de cette propriété si elle n'est pas utilisée.

    Exemples :

    Windows : set proxyserverdomain="exampleDom"

    Linux/UNIX : proxyserverdomain="exampleDom"

    emailtoaddress (Facultatif) Adresse électronique à laquelle le rapport sur l'affectation de rôle doit être envoyé. Le rapport n'est envoyé par courriel que si cette valeur est indiquée.

    Exemple : emailtoaddress=john.doe@example.com

Linux/UNIX

  1. Créez le fichier input.properties en copiant le script suivant :
    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
  2. Mettez à jour le fichier input.properties. Reportez-vous au Tableau 3-* pour obtenir plus d'informations sur les valeurs à indiquer. Vous pouvez également indiquer les valeurs pour ces propriétés :
    • javahome : chemin absolu du répertoire dans lequel Java est installé.
    • epmautomatescript : emplacement d'epmautomatescript.sh. Par exemple : epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"
  3. Créez replicatepredefinedroles.sh en copiant le script suivant.
    #!/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"
    
  4. Mettez à jour replicatepredefineroles.sh. Reportez-vous au tableau précédent pour obtenir plus d'informations sur les valeurs à indiquer. Vous pouvez également indiquer les valeurs pour ces propriétés :
    • javahome : chemin absolu du répertoire dans lequel Java est installé.
    • epmautomatescript : emplacement d'epmautomatescript.sh. Par exemple : epmautomatescript="/home/user1/epmautomate/bin/epmautomate.sh"