環境
Adobe Experience Manager
問題
AEMで ACL 権限を持つユーザーとグループを、あるサーバーから別のサーバーに、またはあるAEMインスタンスから別のサーバーに移行する方法。
ソリューション
手順 1:管理者および匿名ユーザーを見つける
CRXDE Lite アプリ(/crx/de/index.jsp
)に移動し、(ソースシステムの)管理者ユーザーとしてログインします。
に移動します。 ツール =
クエリ.
下 クエリ 」ボックスに入力し、次のクエリを入力して管理者ユーザーを検索します。 /jcr:root/home/users//element(*,rep:User)@rep:principalName="admin"
.
クリック 実行 をクリックし、結果内の admin user ノードのパスをテキストファイルにコピーします。
匿名ユーザーに対してクエリを使用して、手順 3 を繰り返します。 /jcr:root/home/users//element(*,rep:User)@rep:principalName="anonymous"
.
クリック 実行 結果内の匿名ユーザーノードのパスをテキストファイルにコピーします ( これで、2 つのパス(「admin」用と「anonymous」用)が作成されます )。
例:
/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
– ソースシステムの管理者ユーザー
/home/users/K/Kj1406Qo9IDODc_nk5Ib
– ソースシステムの匿名ユーザー
手順 2A:ユーザーとグループの移行(Crx2Oak を使用) または Oak-upgrade)
ユーザーおよびグループは、crx2oak または oak-upgrade ツールを使用して AEM インスタンス間を移行できます。
使用している Oak バージョンと一致する crx2oak または oak-upgrade jar をダウンロードします。
jar ファイルを AEM サーバーにアップロードします。
AEM(ソースおよび宛先インスタンス)を停止します。
下記のコマンドの jar ファイルの名前を置き換えます。
置換 /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
,/home/users/K/Kj1406Qo9IDODc_nk5Ib
内 --exclude-paths
以下のコマンドの part パラメーターに、ソースシステムからの管理者ユーザーと匿名ユーザーのパスを指定します。
行にあるパスをインスタンスに一致するように変更します(必要に応じて、パスの前に segment-old:
を追加します。https://jackrabbit.apache.org/oak/docs/migration.html を参照):/opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository
次に、サーバーのシェルで次のコマンドを実行します。
java -Xms2g -Xmx2g -jar oak-upgrade-1.8.12.jar \
--include-paths=/home \
--merge-paths=/home \
--exclude-paths=/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv,/home/users/K/Kj1406Qo9IDODc_nk5Ib,/home/groups/a/administrators,/home/groups/a/analytics-administrators,/home/groups/c/community-moderators,/home/groups/c/content-authors,/home/groups/c/contributor,/home/groups/community/community-groupadmin,/home/groups/community/community-sitecontentmanager,/home/groups/community/community-sitemembers,/home/groups/d/dam-users,/home/groups/default/order-administrators,/home/groups/e/everyone,/home/groups/f/forms-users,/home/groups/forms/fd-administrators,/home/groups/forms/forms-users,/home/groups/geometrixx,/home/groups/media,/home/groups/o/operators,/home/groups/projects,/home/groups/t/tag-administrators,/home/groups/t/target-activity-authors,/home/groups/u/user-administrators,/home/groups/w/workflow-editors,/home/groups/w/workflow-users,/home/users/a/admin,/home/users/a/anonymous,/home/users/mac,/home/users/media,/home/users/projects,/home/users/system,/home/rep:policy,/home/users/rep:policy,/home/groups/rep:policy \
segment-old:/opt/aem-source/crx-quickstart/repository /opt/aem-destination/crx-quickstart/repository upgradeusers.log &
完了したら、手順 3 に進んで、ACL を移行します。 Crx2Oak を使用して移行できない場合は、代わりに以下のパッケージ移行手順に従ってください。
手順 2B:ユーザーおよびグループを移行する(パッケージを使用)
LDAP/SAML 認証または Crx2Oak(上記の手順 2A)を使用してユーザーが自動的に読み込まれなかった場合は、ユーザーとグループをパッケージ化できます。
この場合、古いシステムに 2 つの個別のパッケージを作成します(管理者ユーザーと匿名の標準ユーザーを除く)。
次の手順に従います。
手順 1 の結果 (手順 1:管理者ユーザーと匿名ユーザーの検索) を参照してください。
例: /home/users/Q/QY5FIMXeQIbGpwZtQ3Dv
— パッケージを作成するシステム上の管理者ユーザー、または /home/users/K/Kj1406Qo9IDODc_nk5Ib
— パッケージを作成するシステム上の匿名ユーザー
次に移動: パッケージマネージャー, http://host:port/crx/packmgr/index.jspをクリックし、管理者としてログインします。
パッケージを作成 ユーザー.
/home/users
のパッケージ設定フィルターに次の除外ルールを追加します(/home/users
フィルター上)。
パッケージをビルドします。
パッケージをダウンロードします。
パッケージ zip ファイルをコンピューターに解凍します:jar -xvf users.zip META-INF/vault/filter.xml
META-INF/vault/filter.xml
ファイルをテキストエディターで開きます。
追加モード= 結合 から filter ...
タグの例:
?xml version="1.0" encoding="UTF-8"?
workspaceFilter version="1.0"
filter root="/home/users" mode="merge"
exclude pattern="/home/users/.*/.tokens"/
exclude pattern="/home/users/Q/QY5FIMXeQIbGpwZtQ3Dv"/
exclude pattern="/home/users/K/Kj1406Qo9IDODc_nk5Ib"/
exclude pattern="/home/users/a/admin"/
exclude pattern="/home/users/a/anonymous"/
exclude pattern="/home/users/system"/
exclude pattern="/home/users/geometrixx"/
exclude pattern="/home/users/media"/
exclude pattern="/home/users/projects"/
exclude pattern="/home/users/mac"/
/filter
/workspaceFilter
変更したパッケージコンテンツを再圧縮して、変更内容を含めるようにします。
jar -uvf users.zip META-INF/vault/filter.xml
の作成 グループ フィルタールールを含むパッケージ /home/groups
.
groups パッケージに対して、手順 11 ~ 14 を繰り返します。
(アップグレードのみ)新しい AEM バージョンへの移行を行う場合、古いバージョンの未使用のローカル AEM インスタンス(サンプルコンテンツなし)をインストールし、そこに users パッケージをインストールしてから、groups パッケージをインストールします。その後、そのインスタンスで新しいバージョンへのインプレースアップグレードを実行します。 これにより、ユーザーが新しい Oak 表現に変換されます。インプレースアップグレードの後、ユーザーを再パッケージ化して、アップグレード対象のインスタンスに移植します。ユーザーグループについても、同じようにします。
新しいシステムに users パッケージをインストールします。
新しいシステムに groups パッケージをインストールします。
古いAEMから 6.3 に移行する場合は、 /useradmin
UI を開き、レプリケーションレシーバーを 管理者 グループ化します。
手順 3. ACL を移行する
AEM にツール(ACS Commons)をインストールできる場合は、次の手順に従います。
ACS Commons をダウンロードしてインストールします。
ここで説明した手順に従って、ACL パッケージを作成します。
に移動します。 http://aem-host:port/crx/packmgr/index.jsp 管理者としてログインします。
ACL パッケージをクリックします。
「編集」をクリックします。
「詳細」タブを選択します(下のスクリーンショットを参照)。
AC の処理ドロップダウンメニューで、結合を選択して、宛先システム上の既存の ACL が削除されるのを回避します。
これは、AEM の異なるバージョン間で ACL を移行する際に、(デフォルトの ACL の削除を回避できるので)特に重要です。
AEM にツール(ACS Commons)をインストールできない場合は、次の手順に従います。これらのコマンドを実行するマシンは、curl、python、Java SDK がインストールされたMac OS、Linux または Windows(Cygwin を使用)である必要があります。
に移動します。 http://src-aem-host:port/crx/packmgr/index.jsp 管理者としてログインします。
という名前のパッケージを作成します。 ACL-migration.
次をクリック: 編集 」ボタンをクリックします。
を選択します。 詳細 タブと設定 AC 処理モード から 結合.
保存します。
パッケージをビルドしてダウンロードします。
ファイルシステムで、パッケージに対して次のコマンドを実行し、 META-INF/vault/filter.xml
ファイル:
jar -xvf ACL-migration-1.0.zip META-INF/vault/filter.xml
同じディレクトリで、次のコマンドを実行して、の ACL パスの json ファイルをダウンロードします。 /content
ソースインスタンス(ユーザー名、パスワード、正しいホストを設定)から、次の操作を実行します。
curl -u admin:admin 'http://aemhost/crx/de/query.jsp?' -G --data-urlencode '_dc=1507011481908&_charset_=utf-8&type=xpath&stmt=/jcr:root/content//element(*,rep:ACL)&showResults=true' data.json
ファイルの作成 generate-package-filter.py
その中に python コードを貼り付けます。
import json
from pprint import pprint
with open ('data.json') as data_file:
data = json.load(data_file)
print("?xml version=\"1.0\" encoding=\"UTF-8\"?")
print("workspaceFilter version=\"1.0\"")
form item in data"results":
print("filter root=\"{path}\" /" . format(path=item "path"))
print("/workspaceFilter")
同じフォルダーから Python スクリプトを実行します。 data.json
が作成され、出力が次の場所に保存されました: META-INF/vault/filter.xml
( filter.xml
):
python generate-packge-filter.py META-INF/vault/filter.xml
次のコマンドを使用して、zip ファイル内の filter.xml
を更新します。
jar -uvf ACL-migration-1.0.zip META-INF/vault/filter.xml
zip ファイルをソースインスタンスパッケージマネージャーにアップロードします。 http://src-aem-host:port/crx/packmgr/index.jsp
「ビルド」または「再構築」をクリックして、パッケージをビルドします。
ソース AEM サーバーからパッケージをダウンロードします。
パッケージを宛先のAEMサーバーのパッケージマネージャーにアップロードします。 http://dst-aem-host:port/crx/packmgr/index.jsp
「インストール」をクリックして、インストールします。
パス curl コマンドを変更する他のすべてのパスに対して、手順 8 ~ 16 を繰り返します。例えば、次の場合、ACL は /etc
の代わりに /content
の下に取得されます。
curl -u admin:admin 'http://aemhost/crx/de/query.jsp?' -G --data-urlencode '_dc=1507011481908&_charset_=utf-8&type=xpath&stmt=/jcr:root/etc//element(*,rep:ACL)&showResults=true' data.json