WildFly CLI Scripting: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(19 intermediate revisions by the same user not shown)
Line 2: Line 2:


* [[WildFly CLI Operations#Subjects|CLI Operations]]
* [[WildFly CLI Operations#Subjects|CLI Operations]]
=Overview=
This article describes various aspects of using CLI as a command-line execution tool - as opposite to an interactive session tool.


=Connection to a Host Controller=
=Connection to a Host Controller=
Line 13: Line 17:
=Executing a Single Command=
=Executing a Single Command=


Any word or phrase without white spaces in it is assumed to be a command. The <tt>--command</tt> optionally precedes it.
Any word or phrase without white spaces in it is assumed to be a command. The <tt>--command</tt> argument optionally precedes it.


After a command is executed, the CLI will terminate the session.
After a command is executed, the CLI will terminate the session.
Line 31: Line 35:
=Executing Multiple Commands Specified on Command Line=
=Executing Multiple Commands Specified on Command Line=


In order to execute multiple individual commands (individual commands are assumed not to contain spaces),  specify them in a comma separated list. The <tt>--commands</tt> argument optionally precedes it.
In order to execute multiple commands (individual commands are assumed not to contain spaces),  specify them in a comma separated list at the end of the argument list. ''Spaces are  not allowed''. The <tt>--commands</tt> argument optionally precedes it.  


After a command is executed, the CLI will terminate the session.
After the last command in the sequence is executed, the CLI will terminate the session.


Example:
Example:


<pre>
<pre>
jboss-cli.sh -c [--command=]ls
jboss-cli.sh -c [--commands=]ls,pwd
</pre>
</pre>


Line 44: Line 48:


<pre>
<pre>
jboss-cli.sh -c [--command=]'deploy ./test.war --server-groups=web-frontend'
jboss-cli.sh -c [--commands=]ls,'deploy ./test.war --server-groups=web-frontend'
</pre>
 
 
 
 
<pre>
--commands      - specifies a comma-separated list (the list must not contain
                  whitespaces) of commands and operations that should be
                  executed in the CLI session. The CLI session will be
                  automatically terminated as soon as the last command or
                  operation has been executed or after the first error. Note:
                  --commands argument is optional in a sense that any
                  comma-separated list at the end of the argument list will be
                  assumed to be the list of commands and operations.
</pre>
</pre>


Line 67: Line 57:
</pre>
</pre>


where <tt>/commands.cli</tt>'s content is similar to:
where <tt>/commands.cli</tt> may contain multiple commands, one per line. Individual commands may contain spaces. Example:


<pre>
<pre>
deploy ./test.war --server-groups=web-frontend
pwd
ls
deploy servlet-example.war --force
</pre>
</pre>


=Script Example=
=Sending Commands into <tt>jboss-cli.sh</tt>'s <tt>stdin</tt>=
 
<pre>
batch
# Configure the connection from main server to "one" and "two"
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-ejb:add(host=localhost, port=4647)
 
# add security realm
/core-service=management/security-realm=ejb-security-realm:add()
/core-service=management/security-realm=ejb-security-realm/server-identity=secret:add(value=cXVpY2stMTIz)
 
# add the outbound connections to the remoting subsystem
/subsystem=remoting/remote-outbound-connection=remote-ejb-connection:add(outbound-socket-binding-ref=remote-ejb, security-realm=ejb-security-realm, username=quickuser)
/subsystem=remoting/remote-outbound-connection=remote-ejb-connection/property=SASL_POLICY_NOANONYMOUS:add(value=false)
/subsystem=remoting/remote-outbound-connection=remote-ejb-connection/property=SSL_ENABLED:add(value=false)
run-batch
</pre>
 
=Deployment Script=
 
==batch==
 
<font color=red>
 
 
<tt>deploy.sh</tt>:


<pre>
<pre>
#!/bin/bash
#!/bin/bash


reldir=$(dirname $0)
jboss-cli.sh -c <<EOF
 
#
${JBOSS_HOME}/bin/jboss-cli.sh -c --file=${reldir}/deploy.cli
# comments are permitted; they should be prefixed by '#'
</pre>
#
 
<tt>deploy.cli</tt>:
 
<pre>
batch
batch
#deploy target/playground.war --server-groups=main-server-group
#deploy target/playground.war --server-groups=main-server-group
deploy target/playground.war --force
deploy target/playground.war --force
run-batch
run-batch
EOF
</pre>
</pre>
</font>


==Coalesced Scripts==
==Examples==


This is where you can use bash variables.
<blockquote style="background-color: AliceBlue; border: solid thin LightSteelBlue;">
:https://github.com/NovaOrdis/playground/tree/master/jboss/cli/bash-script-examples<br>
</blockquote>


<pre>
=Using Variables=
#!/bin/bash


# ...
<font color=red>TODO:
 
jboss-cli.sh -c <<EOF
batch
#deploy target/playground.war --server-groups=main-server-group
deploy target/playground.war --force
run-batch
EOF
</pre>
 
=Using Variables=


* JBoss EAP 6 : using variables in CLI scripts (jboss-cli.sh) https://access.redhat.com/solutions/321513
* JBoss EAP 6 : using variables in CLI scripts (jboss-cli.sh) https://access.redhat.com/solutions/321513


See [[#Coalesced_Scripts|coalesced scripts]] above.
Also see [[#Sending_Commands_into_jboss-cli.sh.27s_stdin|Sending Commands into <tt>jboss-cli.sh</tt>'s <tt>stdin</tt>]] above.


<font color=red>
I've seen this example, how does it work, how is Host1_Name defined?
I've seen this example, how does it work, how is Host1_Name defined?


Line 151: Line 103:


</font>
</font>
=<tt>batch</tt>/<tt>run-batch</tt>=
<blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;">
:[[WildFly_CLI_Concepts#Batch|WildFly CLI Concepts - Batch]]
</blockquote>

Latest revision as of 14:48, 27 March 2017

Internal

Overview

This article describes various aspects of using CLI as a command-line execution tool - as opposite to an interactive session tool.

Connection to a Host Controller

In order to be able to interact with a host controller, CLI must be connected. For options on how to connect see:

Connect to a Controller

Executing a Single Command

Any word or phrase without white spaces in it is assumed to be a command. The --command argument optionally precedes it.

After a command is executed, the CLI will terminate the session.

Example:

jboss-cli.sh -c [--command=]ls

If a command requires space-separated arguments, command and the arguments should be enclosed is single quotes:

jboss-cli.sh -c [--command=]'deploy ./test.war --server-groups=web-frontend'

Executing Multiple Commands Specified on Command Line

In order to execute multiple commands (individual commands are assumed not to contain spaces), specify them in a comma separated list at the end of the argument list. Spaces are not allowed. The --commands argument optionally precedes it.

After the last command in the sequence is executed, the CLI will terminate the session.

Example:

jboss-cli.sh -c [--commands=]ls,pwd

If a command requires space-separated arguments, command and the arguments should be enclosed is single quotes:

jboss-cli.sh -c [--commands=]ls,'deploy ./test.war --server-groups=web-frontend'

Executing a Sequence of Commands Listed in a File

jboss-cli.sh -c --file=./commands.cli

where /commands.cli may contain multiple commands, one per line. Individual commands may contain spaces. Example:

pwd
ls
deploy servlet-example.war --force

Sending Commands into jboss-cli.sh's stdin

#!/bin/bash

jboss-cli.sh -c <<EOF
#
# comments are permitted; they should be prefixed by '#'
#
batch
#deploy target/playground.war --server-groups=main-server-group
deploy target/playground.war --force
run-batch
EOF

Examples

https://github.com/NovaOrdis/playground/tree/master/jboss/cli/bash-script-examples

Using Variables

TODO:

Also see Sending Commands into jboss-cli.sh's stdin above.

I've seen this example, how does it work, how is Host1_Name defined?

/host=$Host1_Name:write-local-domain-controller
reload --host=$Host1_Name

batch/run-batch

WildFly CLI Concepts - Batch