csw-host-config
This is just a helper to create a host configuration application. A component/subsystem developer can create a custom host configuration application using this helper. To be more precise, every Github repository should have one host configuration application. The reason for having one application per repo is that it will have all the required dependencies and can be deployed independently on any machine.
This application will start multiple containers on a given host machine and each container will have single/multiple components.
How to create
- Scala
-
source
object HostConfigApp extends App { HostConfig.start("HostConfigApp", CSW, args) }
- Java
-
source
public class JHostConfigApp { public static void main(String[] args) { JHostConfig.start("JHost-Config-App", JSubsystem.CSW, args); } }
It is not necessary to have the name of the application be HostConfigApp/ or JHostConfigApp: The user can choose the name.
Command line parameter options
--local
is an optional parameter. When supplied, get the host configuration file from local machine located athostConfigPath
, otherwise, fetch it from the Config Service<file>
is a mandatory parameter. It specifies Host configuration file path-s, --container-script <script-path>
specifies the path of the generated shell script for the container command app from taskuniversal:packageBin
(sbt-native-packager task)--help
prints the help of the application.--version
prints the version of the application.
Examples
Pre-requisites
- Run
sbt project/universal:packageBin
command. Here, the project contains HostConfigApp and ContainerCmdApp and it depends on the required components. Ex. Hcd’s, Assembly’s etc. - Navigate to
project/target/universal
directory - Unzip the file created with the project’s name
- Navigate to the
bin
directory from the unzipped contents
The sbt task: sbt project/universal:packageBin
creates the following four scripts in the bin
directory:
trombone-host-config-app
: Responsible for starting multiple containers. It takes ahostconfig.conf
file as an argument which contains the list of container specifications.trombone-container-cmd-app
: Responsible for starting a single container or component in standalone mode. It takes acontainerConfig.conf
file as an argument which contains single container specifications.trombone-host-config-app.bat
: For Windows machine.trombone-container-cmd-app.bat
: For Windows machine.
Examples:
-
Fetch./trombone-host-config-app hostconfig.conf -s ./trombone-container-cmd-app
hostconfig.conf
from the Configuration Service which contains a multiple container configuration, then invoke the trombone-container-cmd-app script per the container configuration which spawns the container -
./trombone-host-config-app --local hostconfig.conf -s ./trombone-container-cmd-app
Fetch and parse
hostconfig.conf
from the current directory which contains a multiple container configuration, then invoke the trombone-container-cmd-app script per the container configuration which spawns the container
In above examples, we are passing argument: -s ./trombone-container-cmd-app
to ./trombone-host-config-app
. here -s
stands for script and following that is the script name, in our case its trombone-container-cmd-app
. If you notice, trombone-container-cmd-app
does not take a container configuration file. The hostconfig.conf
file passed to trombone-host-config-app
contains the location of the container configuration files. The Host Config App internally parses hostconfig.conf
and passes the container configuration file location to trombone-container-cmd-app
.
Find more details of ContainerCmd application here.
Where does it fit in overall deployment strategy (may change)
Custom Host Configuration
- hostconfig.conf
-
source
# This is a host configuration file which contains list of containers to be spawned by host configuration app containers: [ { # path of individual container configuration file configFilePath: "/Users/salonivithalani/Desktop/tw_tmt/csw/examples/src/main/resources/assemblyContainer.conf" # provide 'Remote' if file needs to fetched from config service else # provide 'Local' to fetch file from local machine configFileLocation: "Local" }, { configFilePath: "/Users/salonivithalani/Desktop/tw_tmt/csw/examples/src/main/resources/hcdStandalone.conf" configFileLocation: "Local" } ]
Help
Use the following command to get help on the options available with this app
./bin/trombone-host-config-app --help
Version
Use the following command to get version information for this app
./bin/trombone-host-config-app --version
Before running host-config
app, make sure that csw-location-server
is running on the local machine at localhost:7654
. The host config application internally executes the container-cmd
application, which uses a local HTTP location client that expects a Location Server to be running locally.
Systemd configuration
Using systemd, you can configure a host configuration application to spawn containers on a machine to be run automatically on system startup.
For detailed information on systemd configuration, please refer to readme.md