Running a private instance of JBoss AS7 in Fedora

Oved Ourfalli ovedo at redhat.com
Mon Apr 23 11:14:56 UTC 2012



----- Original Message -----
> From: "Juan Hernandez" <juan.hernandez at redhat.com>
> To: "arch" <arch at ovirt.org>
> Sent: Monday, April 23, 2012 1:25:07 PM
> Subject: Running a private instance of JBoss AS7 in Fedora
> 
> Hello,
> 
> It has been discussed before how to run ovirt-engine side by side
> with
> other JBoss AS7 applications. This is my suggestion:

Sound like this is the right way to go.

I think we should try to make this the directory structure both when installing the engine, and when building it from scratch through maven.
The latter is a bit more problematic, although I think we can generate this directory structure using the maven "setup" profile (as we do today to copy the JDBC module, override the standalone.xml configuration, etc...), and that way the build environment will be as close to an installed one as possible.

That will help in developing/testing, especially in the different utilities we provide (some utilities are very hard to run in development environment, due to missing configuration and dependencies).

We somehow need to unify the infrastructure for the "setup" using maven, and the RPM setup, to avoid code duplications.
 
> 
> 1. Create an ovirt user and ovirt group to run the application server
> (we already do that for the notification service, so this is not
> new).
> 
> 2. Replicate the directories used by JBoss AS7 putting them in the
> locations suggested by the file system standards:
> 
> /usr/share/ovirt-engine/deployments root:ovirt rwxrwxr-t
>   engine.ear root:root rw-rw-r--
>   engine.ear.dodeploy ovirt:ovirt rw-rw-r--
>   engine.ear.deployed ovirt:ovirt rw-rw-r--
>   ROOT.war root:root rw-rw-r--
>   ROOT.war.dodeploy ovirt:ovirt rw-rw-r--
>   ROOT.war.deployed ovirt:ovirt rw-rw-r--
> 
> (I would suggest to move ROOT.war to the .ear to reduce the number of
> files in this directory)
> 
> Note that the deployments should be owned by root:root so that the
> ovirt:ovirt user can't write them. Also the directory needs write
> permission for the ovirt:ovirt user because that user it is going to
> create/remove the .dodeploy and .deployed files. The sticky bit can
> be
> used to avoid that user removing the deployment units (it would be
> better to have the .dodeploy and .deployed files in a different
> directory, but that is not possible at the moment).
> 
> /usr/share/ovirt-engine/modules root:root rwxr-xr-x
> 
> We should use this directory to place the jboss modules that are
> missing
> in JBoss AS itself (the PostgreSQL JDBC driver, for example) or that
> need to be overridden. Later we should start the engine using
> /usr/share/ovirt-engine/modules:/usr/share/jboss-as/modules as the
> module path.
> 
> /etc/ovirt-engine root:root rwxr-xr-x
>   ovirt-engine-users.properties root:root rw-r--r--
>   ovirt-engine-logging.properties root:root rw-r--r--
>   ovirt-engine.xml ovirt:ovirt rw-r--r--
> 
> These files should be based on the mngt-users.properties,
> logging.properties and standalone-web.xml files provided by the
> application server.
> 
> (I think it can be easier to maintain those files than to maintain
> the
> python code that adjusts them during setup)
> 
> /var/lib/ovirt-engine ovirt:ovirt rwxr-xr-x
> 
> This is the directory where the application server will place the
> content of the additional deployments. Will not be used by the
> engine,
> but is needed anyway.
> 
> /var/cache/ovirt-engine ovirt:ovirt rwxr-xr-x
> 
> The application server will create here temporary auth, vfs and work
> directories.
> 
> 3. Start the application server using the ovirt:ovirt user with the
> following system properties (in addition to the typical jboss-as
> ones):
> 
> -Djboss.server.default.config=ovirt-engine.xml
> -Dlogging.configuration=file:///etc/ovirt-engine/ovirt-engine-logging.properties
> -mp /usr/share/ovirt-engine/modules:/usr/share/jboss-as/modules
> -Djboss.home.dir=/usr/share/jboss-as
> -Djboss.server.base.dir=/usr/share/ovirt-engine
> -Djboss.server.config.dir=/etc/ovirt-engine
> -Djboss.server.temp.dir=/var/cache/ovirt-engine
> -Djboss.controller.temp.dir=/var/cache/ovirt-engine
> -c ovirt-engine.xml
> 
> These options should go in a
> /usr/share/ovirt-engine/bin/ovirt-engine.sh
> script.
> 
> 4. Create a systemd unit file to start the application server using
> the
> ovirt-engine.sh script:
> 
> [Unit]
> Description=oVirt Engine
> After=network.service
> 
> [Service]
> ExecStart=/usr/share/ovirt-engine/bin/ovirt-engine.sh
> User=ovirt
> 
> [Install]
> WantedBy=multi-user.target
> 
> With this the engine will run independently of the application server
> from the filesystem point of view.
> 
> 5 In order to make it independent also from the ports point of view I
> would suggest to add a /etc/sysconfig/ovirt-engine containing
> variables
> like these:
> 
> ENGINE_HOST=host.example.com
> ENGINE_HTTP_PORT=8080
> ENGINE_HTTP_PORT=8443
> 
> These options can then be used in the start script to generate
> corresponding system properties:
> 
> -Dengine.host=${ENGINE_HOST}
> -Dhttp.port=${ENGINE_HTTP_PORT}
> -Dhttps.port=${ENGINE_HTTPS_PORT}
> 
> And these system properties can then be used in the ovirt-engine.xml
> configuration file:
> 
> <interfaces>
>   <interface name="public">
>      <inet-address value=${ovirt.host}/>
>   </interface>
> </interfaces>
> 
> <socket-binding-group name="standard-sockets"
> default-interface="public">
>   <socket-binding name="http" port="${ovirt.http.port}"/>
>   <socket-binding name="https" port="${ovirt.https.port}"/>
>   ...
> </socket-binding-group>
> 
> Let me know what you think.
> 
> Regards,
> Juan Hernandez
> _______________________________________________
> Arch mailing list
> Arch at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/arch
> 



More information about the Arch mailing list