Create an executable service

Prev Next

You can create an executable service to run scripts or applications stored in a Git repository. Executable services use a pre-defined executable object to determine how to run your script.

Prerequisites

  • An executable object that defines the command to run your script
  • A Git repository that contains your script or application
  • Operator role permissions
  • Repository authentication configured (if using a private repository)

Create a basic executable service

Use the iagctl create service executable command to create a new executable service.

Syntax:

iagctl create service executable <service-name> \
  --executable-object <object-name> \
  --repository <repository-name> \
  --working-dir <directory-path> \
  --filename <script-filename>

Parameters:

  • <service-name>: A unique name for the executable service
  • --executable-object: The name of the executable object that runs your script
  • --repository: The name of the Git repository that contains your script
  • --working-dir: The path within the repository where your script is located
  • --filename: The name of the script file to execute

Example:
Create an executable service that runs a Bash script:

iagctl create service executable simple-bash \
  --executable-object my-obj \
  --repository gateway-resources \
  --working-dir executable_services/simple-script \
  --filename test.sh

This example uses the executable object named my-obj (which would be configured to use /usr/bin/bash) to run the test.sh script.

Create an executable service with argument formatting

Add the --arg-format parameter to define how IAG passes arguments to your script at runtime.

Syntax:

iagctl create service executable <service-name> \
  --executable-object <object-name> \
  --repository <repository-name> \
  --working-dir <directory-path> \
  --filename <script-filename> \
  --arg-format "<format-template>"

Example:
Create an executable service with custom argument formatting:

iagctl create service executable simple-executable \
  --executable-object my-obj \
  --arg-format "{{.Key}} {{.Value}}" \
  --repository gateway-resources \
  --working-dir executable_services/simple-script \
  --filename test.sh

Additional examples

Create an executable service for a Terraform script

iagctl create service executable terraform-deploy \
  --executable-object terraform-latest \
  --repository infrastructure-repo \
  --working-dir terraform/production \
  --filename main.tf \
  --description "Deploy production infrastructure"

Create an executable service for a Python script

iagctl create service executable python-util \
  --executable-object python311-standard \
  --repository utility-scripts \
  --working-dir python \
  --filename data-processor.py \
  --description "Process daily data files"

Create an executable service with complex argument formatting

iagctl create service executable advanced-script \
  --executable-object bash-standard \
  --repository gateway-resources \
  --working-dir scripts \
  --filename process.sh \
  --arg-format "--{{.Key}}={{.Value}}" \
  --description "Process data with custom flags"