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.InviteUserRequiredActionproviders

谢谢

【问题讨论】:

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”元素)

如何使用 jboss-cli 在 WildFly 17 中创建 JMS 队列

怎么加“。”作为使用 jboss-cli 的模块的资源根?

如何在 Eclipse 中添加 JBoss 服务器?

System::Collections::Generic::自定义类对象列表 c++/cli