Executable objects and services

Prev Next

An executable object is a reusable reference to an executable file on your system. It defines the command path and optional parameters that services can use to run scripts or applications. Executable objects separate the configuration of execution environments from the services that use them, which allows administrators to control how services execute while operators can focus on running services without needing to know system-specific details.

Why use executable objects

Executable objects provide several benefits:

  • Centralized management: Administrators define executable commands once and reuse them across multiple services.
  • Security control: Administrators can restrict which command-line arguments services can use, preventing unauthorized or dangerous commands.
  • Simplified operations: Operators reference pre-configured executable objects by name instead of specifying full file paths and commands.
  • Flexibility: You can use different versions of interpreters or tools for different services (for example, Python 2 for one service and Python 3 for another).
  • Consistency: All services that use the same executable object run with the same configuration, reducing errors from inconsistent setups.

How executable objects work

Executable objects use a two-tier approach that separates system administration from service operation:

Administrators create and manage executable objects:

  • Define executable paths on the system
  • Configure allowed and restricted command-line arguments
  • Enable health checks and path validation
  • Maintain security and integrity of execution environments

Operators use executable objects to create and run services:

  • Select the appropriate executable object for each service
  • Specify runtime arguments within allowed parameters
  • Run services without needing system-level access

When a service runs, IAG uses the executable object configuration to execute the specified file with the correct command and arguments.

How executable objects work with services

Executable objects integrate with IAG services to provide flexible execution environments:

  • Executable services: Generic services that can run any type of script or application (Bash, Terraform, custom tools). These services require you to specify an executable object.
  • Python, Ansible, and OpenTofu services: Can optionally use executable objects to specify custom interpreters or tool versions. If you don't specify an executable object, these services use the system default.

This allows you to run different services with different tool versions. For example, you can configure one Python service to use Python 2 and another to use Python 3, or run Ansible services with different Ansible versions.

Related topics

  • Create an executable object
  • Create an executable service
  • Use executable objects with Python services