This is the Cloud Elements Ground2Cloud Remote Connector (a.k.a. 'Petit', after Phillipe Petit, a.k.a. 'Tightrope', a.k.a. 'Elements Connect'), which is used to allow a private backend service to expose itself to the Cloud Elements product.
Documentation on the Ground2Cloud configuration file, by default
~/.petit/config.toml can be found here. You can use
petit-client init or
petit-server init (see below) to create
Most CE elements connect to "backend services" to operate. These customer-run services are either publically available via the internet, or co-located on the same private cloud deployment. However, some customers rightly wish to allow CE to access their services, while they want or need more stringent restrictions on everyone else. This is especially true when the services in question are located on end-user personal or business computers, and are generally not hosted environments.
In the past, the options for these customers were limited to:
The Cloud Elements On-Prem Connector was created to solve this problem; it allows individual service providers to quickly and easily expose their service (and only their service) to elements that are located on the public cloud.
The Cloud Elements On-Prem Connector comes in two parts: a server that runs on the CE public cloud, and a client that runs on the backend service machine or subnet. The client application registers itself with the server, and then opens a reverse proxy tunnel from the server machine to its host environment. As long as the client is running, public elements on the server environment will be able to access the target service on the client machine as if they were co-located.
Communication along the tunnel is protected by a TLS layer, so all chatter between the endpoints is secured. The connector implements a robust protocol for registration and selection, so all clients connect to all elements--and only those elements--which are destined for that customer.
The Cloud Elements On-Prem Connector is executed and distributed using the Node.js runtime environment. To expose a customer service, you will need to download and install Node on the client machine. Once Node is installed, you can use the "Node Package Manager" (npm) to install the On-Prep Connector package. Run the following command with root or administrator privilege:
# npm install -g cloudelements-petit
You can keep the client up-to-date at any time using npm as well:
# npm update -g cloudelements-petit
You can use docker to create a node-based container, without having node installed on the host.
$ docker-compose build && docker-compose up
Currently, when using Ctrl-C to exit docker-compose, it does not
shutdown cleanly, leaving a lock file in the container. If this happens,
you need to run
$ docker-compose up --force-recreate to start up the
To avoid this issue entirely, don't use Ctrl-C to exit docker-compose; instead, issue a STOP command to the server:
$ echo -ne "STOP\x03" | nc <host> 3016
host is the actual host machine (i.e.
running on a MacOS, the host is the VirtualBox machine on which the
Docker service runs. It's usually something like
docker-machine ls to find the actual IP.
Once installed, you can run
petit-client commands to control the
client process. For example, you can initialize the client like this
(you don't need administrator privilege to run petit-client commands):
$ petit-client init
This command creates a default
~/.petit/config.toml configuration file
in your home directory. You can edit the config file at this point to
suit your needs: read more about the config file here.
Once the configuration is to your liking, you can register with the server:
$ petit-client register
And then start:
$ petit-client start
start will open the connection between your service and the public
elements that use it. If you need to restart the machine where the
Connector is running, be sure to start the Connector again.
Some other commands that you may find useful:
$ petit-client stop # shutdown the connector $ petit-client status # output the connector status $ petit-client unregister # unregister from the server $ petit-client config # show the current configuration $ petit-client sping # to test server communication