Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to deploy a module/provider/spi via scripting?

Is there a way to deploy modules to Wildfly via scripting (as in, without manually modifying XML files)? I know about the jboss-cli.sh command to add module but is there a way to either directly modify my standalone.xml/domain.xml or do some equivalent thing that will tell Wildfly to load the module?


Said another way...

I've discovered two ways to deploy modules:

1) Hot deploy a jar directly by copying it into $KEYCLOAK_HOME/standalone/deployments (Per the README in that directory, this method is not recommended for production deployments but it works without any manual work afterward.)

2) run jboss-cli.sh --command="module add --name=com.example.MySpi" then manually edit standalone.xml (or domain.xml) to have your module in the "providers" list, like so:

<subsystem xmlns="urn:jboss:domain:keycloak-server:1.1">
  <web-context>auth</web-context>
  <providers>
    ...
    <provider>module:com.example.MySpi</provider>
  </providers>
  ...
</subsystem>

... and finally restart the server.

I'd like to use the recommended way, but without manually editing an XML file. Is there a recommended path for this?

like image 386
inanutshellus Avatar asked Sep 27 '19 15:09

inanutshellus


2 Answers

You can do something like

jboss-cli.sh --command="/subsystem=keycloak-server:list-add(name=providers, value=module:com.example.MySpi)"

Basically you can script everything that is in standalone.xml with jboss-cli. To find out more how your configuration looks internally, you may try /subsystem=keycloak-server:read-resource(recursive=true) within jboss-cli.

like image 161
Erhard Siegl Avatar answered Nov 12 '22 20:11

Erhard Siegl


Sorry, cannot add comments yet, so I'm adding this here.

I had to add the --connect option to the command above, otherwise it was complaining with no connection to the controller.

The whole command then would be:

jboss-cli.sh --connect --command="/subsystem=keycloak-server:list-add(name=providers, value=module:com.example.MySpi)"

like image 22
ieggel Avatar answered Nov 12 '22 20:11

ieggel