Table of contents


Define Hosts

A host is defined with the following rules:

/**
 * Description of a machine
 */
my-machine-1 = INTERNET.HOST {

  # Name of the component 'my-machine-m1' on the network
  hostname = INTERNET.HOSTNAME(IP or name);

  # User that perform the deployment on 'my-machine-1'
  user     = INTERNET.USER(login,[password],[privateKey]);

  # Transfer protocol used to download files on the machine
  transfer = TRANSFER.JSCP;

  # Protocol used to send command to the shell of the machine
  protocol = PROTOCOL.OpenSSH;

  # Kind of shell exposed when log on 'my-machine-1'
  shell    = SHELL.SH;
}

But your can also describe a host and a software inside: add the software component inside the host and put software in it (here the software is java):

my-machine-2 = INTERNET.HOST {
  hostname = INTERNET.HOSTNAME(IP or name);
  user     = INTERNET.USER(login,[password],[privateKey]);
  transfer = TRANSFER.Apache_FTP;
  protocol = PROTOCOL.ApacheTelnet;
  shell    = SHELL.WinCommand;
  software {
    java = JAVA.JRE {
      archive = JAVA.ARCHIVE(Archive_File_URI);
      home    = JAVA.HOME(Java_Home_URI);
    }
  }
}

Note: this machine is a windows host (that's why the shell component is PROTOCOL.WinCommand), you can also note that the transfer and protocol components are not the same that on 'my-machine-1'.

Deploy Java

In order to deploy Java, you just have to fill in the archive, home and host components:

java-on-machine-1 = JAVA.JRE {
  archive = JAVA.ARCHIVE(Archive_File_URI);
  home    = JAVA.HOME(Java_Home_URI);
  host    = my-machine-1;
}

Note that when described in the host component in previous example (inside host/software), the host sub-component of Java wasn't expressed.

The archive to give to FDF must not be the default installer archive, with licence agreement. As an example, if you have a $JAVA_HOME directory on your system, just compress and give this archive to FDF. If not, download an installer, run it, then accept the licence and compress the created $JAVA_HOME directory.

This description is just information given by the administrator about where the archive is and where to install it, but the way to deploy Java is described with the same syntax in the Java Personality: JAVA.JRE

Deploy JOnAS

The description to write for deploying the JOnAS JEE server is given below:

jonas-on-machine-1 = JOnAS.SERVER {
  archive    = JOnAS.ARCHIVE(Archive_File_URI);
  root       = JOnAS.ROOT(JOnAS_Root_Directory_URI);
  host       = my-machine-1;
  properties {
    http-port = HTTP.PORT(9000);
    name = JOnAS.NAME(JOnAS);
    domain = JOnAS.DOMAIN(my-domain);
  }
}

Once the JOnAS description is written, you can describe your business components to install on it. Next example shows all business components that FDF can deploy.

sample-ear = JOnAS.EAR(Archive_File_URI) {
  jonas = jonas-on-machine-1;
}

sample-war = JOnAS.WAR(Archive_File_URI) {
  jonas = jonas-on-machine-1;
}

sample-ejb = JOnAS.EJB(Archive_File_URI) {
  jonas = jonas-on-machine-1;
}

sample-rar = JOnAS.RAR(Archive_File_URI) {
  jonas = jonas-on-machine-1;
}

Deploy JBoss

JBoss is another JEE server deployable with FDF. The description to write is the following:

jboss-on-machine-1 = JBoss.SERVER {
  archive = JBoss.ARCHIVE(Archive_File_URI);
  home = JBoss.HOME(JBoss_Home_URI);
  properties {
    configuration = JBoss.CONFIGURATION(default);
    http-port = HTTP.PORT(8080);
  }
  host = my-machine-1;
}

Deploy PEtALS

PEtALS is a free Enterprise Service Bus. Next example shows how to describe PEtALS for deploying it with FDF. All properties are optional (the given values are the default parameters and can be omited).

petals-on-machine-1 = PEtALS.SERVER {
  archive    = PEtALS.ARCHIVE(Archive_File_URI);
  home       = PEtALS.HOME(Petals_Home_URI);
  host       = my-machine-1;
  properties  {
    html-port        = HTTP.PORT(7700);
    jmx-user         = JMX.USER('');
    jmx-password     = JMX.PASSWORD('');
    jmx-port         = JMX.PORT(8081);
    joram-domain     = JORAM.DOMAIN('');
    joram-id         = JORAM.ID(0);
    joram-user       = JORAM.USER('');
    joram-domainport = JORAM.DOMAINPORT(7740);
    joram-tcpport    = JORAM.TCPPORT(7760);
  }
}

Then, JBI components (including Binding Components and Service Engines) or Service Assemblies (SA) can be described as following:

JBI-on-petals-1 = PEtALS.JBI {
  archive = PEtALS.ARCHIVE(Archive_File_URI);
  name    = PEtALS.JBIName(JBIName);
  petals  = petals-on-machine-1;
}

SA-on-petals-1 = PEtALS.SA {
  archive = PEtALS.ARCHIVE(Archive_File_URI);
  name    = PEtALS.SAName(SAName);
  petals  = petals-on-machine-1;
}

Deploy OpenCCM

Deploy Jade