Remotely Installing Applications Using Commands

By Greg Keller Posted June 24, 2016

Summary

JumpCloud lets you run commands across any number of systems (Windows, Mac OS X or Linux) or tags in parallel.  Once you have a good understanding as an Administrator of Using the Commands Tab, you may determine further ways that you can orchestrate your IT activities using JumpCloud.

This article will help to provide you requirements, examples as well as configuration information for installing third-party applications to your JumpCloud managed systems using the Commands Tab.

Prerequisites

Before getting started with installing any applications on Windows or Mac OS X using the Commands tab, there are several considerations that will need to be evaluated.  You will need to refer to your software vendor’s documentation or support resources to ensure that the package will be supported with JumpCloud per the prerequisites listed:

Command-line Installation Support

While this requirement may seem like an unspoken one, in order to successfully install the application to a JumpCloud-managed system it will need to support execution from the command-line.  This is important being that not all packages support non-UI installations.

Windows

In many cases EXE as well as MSI installation packages (Refer to Windows Installer wikipedia article for more information) will be supported.  MSI packages in particular are provided for system administrators who would need to deploy the software to several terminals over a network connection.  There shouldn’t be any major differences when comparing an MSI and EXE from a functionality standpoint, however there may be additional options available for MSI packages such as performing “silent” installs or having additional pre-configuration options.  Because of this, MSI packages may in some cases be more compatible with the JumpCloud Commands tab.  Please refer to your software vendor’s documentation and support for further information on the best options and supported methods.

Mac OS X

As with Windows, application vendors will distribute different application package types when working with a Mac OS X application.  This may include DMG files, PKG files, compressed archives (.zip, .tgz, etc.) or even flat application files.  A DMG file is a disk image, which will require the image to be mounted to the system in order to view it’s contents.  Because of this, you may find that application deployment will be more preferred using either PKG files, compressed archives or application files but your vendor documentation and support can provide you direct advisement.

Unattended or Silent Installation

The Commands tab works in such a way that commands are sent to the system for execution and a pass/fail results along with any command result details are displayed within JumpCloud.  Because the Commands tab does not present the administrator with an interactive session when performing execution, it is required that all application installations have “silent” or “unattended” installation options.  The functionality and terminology can differ from software vendor to software vendor so this may require discretion on your part.  By definition a “silent” install should be one that does not display any indication of progress, while an unattended installation is once which does not require user interaction.  Explicitly, JumpCloud requires an “unattended” installation which does not require user interaction, but note that some vendors will in fact refer to this as “silent”.

As an example, our very own (Windows) Command Line Installation KB article is a great example that outlines command-line install to a Windows system where a unattended/silent option is available.  There are three flags available for our EXE to aid in unattended installations in the form of /SILENT, /VERYSILENT and/SUPPRESSMSGBOXES:

JumpCloudInstaller.exe -k CONNECT_KEY /VERYSILENT /NORESTART

Setup & Execution

Using Upload File with the Commands Tab

You can upload one or more files to be pushed to the server prior to executing the command, including an installation package. The file push occurs immediately before the command is executed, so you can update the files anytime, and know that the next time your command runs, it will have the latest update. You can include any data you like, such as a tarball, that your script can untar and utilize for any purpose.

Note that the Upload File functionality within JumpCloud only supports files of 1MB or smaller size.  If your installation package is larger than this, you may want to refer to the next section for downloading a file from a web-hosted source or placing in a centralized network destination external to JumpCloud.

  1. From the JumpCloud Administrative Console, click on the Commands tab on the left-hand navigation
  2. Click the + button at the top-left to create a new command
  3. At the top of the Execute Command window choose either Linux, Windows orMac depending on your target system(s)
  4. Before populating your installation command into the main pane, click Upload File under the Files section to attach the installation package
  5. Once selected, take note of the File Destination field and it’s default value.  Feel free to specify a different local directory on the target machine as needed
  6. Populate your installation command, and take note that you will need to specify the full package path was was specified in Step 5
  7. Choose the target Systems and or Tags that you would like to execute to from the right-hand side
  8. Choose to either Save & Run Now, or click Save for later usage
uploadfile

Downloading Installation Packages

While planning your deployment strategy, you may find that you want to look at other alternatives than the native Upload File functionality provided.  This could be due to considerations ranging from the 1MB file limitation that is discussed above, to trying to have a more streamlined method of package acquisition that allows for management external to JumpCloud.

One option that is available to you is to use Windows PowerShell or Bash Shell (Mac OS X) to download a file from a web server for subsequent install.

Windows PowerShell

The following PowerShell command will download a file from a web server to the local machine, and allow you to specify the directory it lives:

(New-Object System.Net.WebClient).DownloadFile("<FILE_DOWNLOAD_WEB_PATH>", "<LOCAL_FILE_DOWNLOAD_PATH>")

Below is an example of the command which is downloading the Windows JumpCloud Agent, and placing the file into the C:\Windows\Temp directory.  This is purely an example being that the JumpCloud agent must be installed prior to the ability to send commands to the system:

(New-Object System.Net.WebClient).DownloadFile(“https://s3.amazonaws.com/jumpcloud-windows-agent/production/JumpCloudInstaller.exe”, “$env:TEMP/JumpCloudInstaller.exe”)

Mac OS X

The following Bash Shell command will download a file from a web server to the local machine, and allow you to specify the directory it lives:

curl -o <LOCAL_FILE_DOWNLOAD_PATH "<FILE_DOWNLOAD_WEB_PATH>"

Below is an example of the command which is downloading the Mac OS X JumpCloud Agent, and placing the file into the /tmp/ directory.  This is purely an example being that the JumpCloud agent must be installed prior to the ability to send commands to the system:

curl -o /tmp/jumpcloud-agent.pkg "https://s3.amazonaws.com/jumpcloud-windows-agent/production/jumpcloud-agent.pkg"

Executing the Command

At this point you should now have a good understanding on what is required prior to command execution for an application installation.  Once you have confirmed that your package supports command-line installation, allows for unattended options and have determined how you will upload/download the installation to the target system you are ready for install.

For more information on the options available with Commands, please refer to Using the Commands Tab.

If you require have any questions or concerns, please contact support@jumpcloud.comfor further assistance.

Greg Keller

Greg is JumpCloud's Chief Product Officer, overseeing the product management team, product vision and go-to-market execution for the company's Directory-as-a-Service offering. The SaaS-based platform re-imagines Active Directory and LDAP for the cloud era, securely connecting and managing employees, their devices and IT applications.

Recent Posts