Ship Your Own Application Using orcharhino

This blog article is a high-level overview of shipping your own application using orcharhino.
Refer to the „Deploying an Internal Application Guide“ for step-by-step instructions.

Shipping your own application means deploying software that is not part of the default operating system repositories. No matter whether the software is self-developed or available on a platform such as GitHub, orcharhino automates the installation and distribution to make it as easy as installing packages from official sources. If you have a product set out to run on Ubuntu, orcharhino can deploy it. The same goes for any other .rpm or .deb package that runs on CentOS, Debian, Oracle Linux, Red Hat Enterprise Linux, or SUSE Linux Enterprise Server.

We can ship any packaged application using orcharhino. In this example, we deploy hosts running Ubuntu 20.04 which are configured using Ansible. For this showcase, we’ve forked an Ansible role to deploy Prosody to use synchronized content from orcharhino. Prosody is an open-source XMPP server used as an example for „your own application“.

We start by setting up our infrastructure in orcharhino. This familiarises orcharhino with our existing infrastructure, for example, domains, subnets, and compute resources.

In the next step, we prepare the operating system entry for Ubuntu 20.04. We associate a partition table, provisioning templates, and an installation media to Ubuntu 20.04. Then, we also extract the installation media for Ubuntu 20.04 onto orcharhino to perform offline installations.

Afterward, we begin adding content to orcharhino: we synchronize the Ubuntu 20.04 base repositories, the orcharhino client for Ubuntu 20.04, and custom content. We choose Prosody, an open-source XMPP server, which is merely an example of a .deb package that is not available in the base repositories.

In the final step, we use host groups to simplify provisioning and configuring hosts. A host group is a blueprint of a host; so basically, only the hostname changes, whereas all the other settings are inherited from the host group.

To demonstrate the complete lifecycle of a managed host, we also update our application. After synchronizing content to orcharhino, we have full control over which content goes to which hosts in which lifecycle.

Now, we can deploy multiple versions of the synchronized packages simultaneously. We achieve this by using a lifecycle path with multiple sequential lifecycle environments.

How do you store your internally developed software packages? We encourage you to share your experiences with deploying internally packaged applications! Maybe our content management guide inspires you on how to manage your software packages with orcharhino.