Jboss cli条件列表添加
Posted
技术标签:
【中文标题】Jboss cli条件列表添加【英文标题】:Jboss cli conditional list-add 【发布时间】:2021-09-12 06:16:50 【问题描述】:通过以下脚本,我可以将提供程序添加到我的 keycloak 实例中。
embed-server --server-config=standalone.xml
/subsystem=keycloak-server:list-add(name=providers, value=module:com.example.InviteUserRequiredAction)
stop-embedded-server
但是,当应用程序重新启动时,它会添加两次(或者服务器重新启动的多次)。我只想有条件地添加提供程序,但我找不到如何查询我正在添加的提供程序是否存在的方法。
所以最后它可能看起来像:
if (outcome != success) of /subsystem=keycloak-server:here-should-be-the-query
...
end-if
谁能告诉我如何查询名称为module:com.example.InviteUserRequiredAction
的providers
?
谢谢
【问题讨论】:
list.get操作呢? 确切的语法是什么?我正在尝试/subsystem=keycloak-server:list-get(name=providers)
,似乎有一些问题。
我没有安装 keycloak,但是如果您将提供程序安装在特定索引处,则可以改为读取该索引
嗯,但我不知道安装时的索引。并且可能会有一些变化。因此,我试图找出是否有可能以某种方式查询提供程序并查找指定的名称是否已经存在。
你可以 /subsystem=keycloak-server:list-add(name=providers, value=module:com.example.InviteUserRequiredAction, index=0)
【参考方案1】:
最后我完成了自定义脚本,因为我无法仅使用 cli 找到方法。
#!/bin/bash
REQUIREDACTION=module:com.example.InviteUserRequiredAction
ADDREQUIREDACTION=$(cat <<EOF
embed-server --server-config=standalone.xml
/subsystem=keycloak-server:list-add(name=providers, value=$REQUIREDACTION)
stop-embedded-server
EOF
);
cat <<EOF > script.cli
embed-server --server-config=standalone.xml
/subsystem=keycloak-server:read-attribute(name=providers)
stop-embedded-server
EOF
OUTPUT=`/opt/jboss/keycloak/bin/jboss-cli.sh --file=script.cli`
echo $OUTPUT | grep -q "$REQUIREDACTION"
if [ $? -ne 0 ] ; then
echo going to add provider $REQUIREDACTION
echo "$ADDREQUIREDACTION" > script.cli
/opt/jboss/keycloak/bin/jboss-cli.sh --file=script.cli
else
echo provider $REQUIREDACTION already exists
fi
【讨论】:
以上是关于Jboss cli条件列表添加的主要内容,如果未能解决你的问题,请参考以下文章
WildFly jboss-cli.sh 添加数据源 Mysql 与 useSSL=false
JBoss CLI:在没有名称属性的元素中添加嵌套元素(在“jwt”中添加“key”元素)