Customize the aapctl installation

Use the interactive wizard, a configuration file, or --set flags to customize operator namespaces and deployment options.

Overview

Important:

aapctl is a Technology Preview feature. Technology Preview features provide early access to upcoming product innovations, enabling you to test functionality and provide feedback during the development process. Technology Preview features are not fully supported under Red Hat production SLA and may not be functionally complete. Red Hat does not recommend using Technology Preview features in production. For more information on the support scope for Technology Preview features, see Technology Preview Features Support Scope.

Interactive wizard

Use the --interactive flag to configure values through guided prompts. The wizard walks through every configurable setting for the install target:

  • Operator settings: namespace, catalog source, Operator Lifecycle Manager (OLM) channel, and starting ClusterServiceVersion (CSV) for each operator.
  • Instance creation toggles: whether to create each custom resource (AnsibleAutomationPlatform, AutomationOrchestrator, CloudNativePG Cluster).
  • Instance settings (when enabled): PostgreSQL connection, ingress, S3 file storage, database storage, and hub file storage.
  • Optional operators (requires AAPCTL_EXPERIMENTAL=true): OpenTelemetry operator enablement, namespace, catalog source, and channel.
  • OpenTelemetry CR settings (requires AAPCTL_EXPERIMENTAL=true): endpoint, service name, authentication header, API key secret, CA certificate secret, and client certificate secret. To set these values without the experimental flag, use --set or --config with the automation-orchestrator-cr.otel.* keys.

Each prompt displays the current default in brackets. Press Enter to accept the default, or type a new value. The wizard asks you to confirm before applying changes to the cluster.

$ aapctl install ao --interactive

When combined with --config or --set, those values are pre-filled as defaults. You can also combine --interactive with --dry-run -o yaml to preview the resulting manifests before you apply them.

Discover available configuration keys

Use aapctl config show to print the full effective configuration for an install target. The output is valid YAML that you can save directly as a --config file:

$ aapctl config show ao
$ aapctl config show aap-with-ao
$ aapctl config show aap

Preview the effective configuration after applying overrides:

$ aapctl config show aap-with-ao --set cloudnative-pg-operator.enabled=true
$ aapctl config show aap-with-ao --config custom.yaml --set aap-operator.namespace=my-aap

Save the defaults as a starting-point configuration file:

$ aapctl config show aap-with-ao > my-config.yaml
$ aapctl install aap-with-ao --config my-config.yaml

Configuration file

To apply a configuration file, pass it with the --config flag. For the full configuration template and all available keys, see aapctl configuration file reference.

$ aapctl install ao --config my-config.yaml

Inline overrides

Use --set to override individual values without a configuration file. --set takes precedence over --config:

$ aapctl install ao --set cloudnative-pg-operator.enabled=true
$ aapctl install aap-with-ao --set aap-operator.namespace=my-aap
$ aapctl install aap-with-ao --set aap-operator.catalogSource=my-mirror-catalog
$ aapctl install aap-with-ao --set automation-orchestrator-operator.channel=stable
$ aapctl install ao --set automation-orchestrator-cr.otel.enabled=true
$ aapctl install aap-with-ao --set aap-cr.hub.fileStorageStorageClass=gold

Set database storage values inline (requires cloudnative-pg-operator.enabled=true):

$ aapctl install ao --set cloudnative-pg-operator.enabled=true --set cluster-cr.storageSize=20Gi
$ aapctl install ao --set cloudnative-pg-operator.enabled=true --set cluster-cr.storageClass=gp3-csi
$ aapctl install ao --set cloudnative-pg-operator.enabled=true --set cluster-cr.maxConnections=300

Set ingress values inline:

$ aapctl install ao \
    --set automation-orchestrator-cr.ingress.host=my-ao.example.com \
    --set automation-orchestrator-cr.ingress.tlsSecretRef=my-tls-secret

Set S3 file storage values inline:

$ aapctl install ao \
    --set automation-orchestrator-cr.fileStorage.endpointURL=https://s3.example.com \
    --set automation-orchestrator-cr.fileStorage.bucketName=my-bucket \
    --set automation-orchestrator-cr.fileStorage.credentialSecretRef=s3-credentials

Configure your PostgreSQL connection

By default, aapctl does not provision PostgreSQL. You must provide your own PostgreSQL 15 instance and create the two database Secrets (backend and temporal) before you install. See External dependencies for database requirements.

Configure the automation-orchestrator-cr.postgres settings to point at your PostgreSQL server:

$ aapctl install ao \
    --set automation-orchestrator-cr.postgres.host=my-pg.example.com \
    --set automation-orchestrator-cr.postgres.sslMode=require \
    --set automation-orchestrator-cr.postgres.caCertSecretRef=""

Install operators without creating instances

Use the enabled config keys to install operators without creating custom resources. This is useful for staged installations where you want to prepare operators first, then create instances separately.

Disable the AutomationOrchestrator custom resource with --set:

$ aapctl install ao \
    --set automation-orchestrator-cr.enabled=false

This command installs the automation orchestrator operator but skips creation of the AutomationOrchestrator custom resource.

For Ansible Automation Platform Plus deployments, you can also skip the AnsibleAutomationPlatform custom resource (CR):

$ aapctl install aap-with-ao \
    --set aap-cr.enabled=false \
    --set automation-orchestrator-cr.enabled=false

After the operators are installed, create the custom resources by running the full install command without the enabled=false overrides.

The available CR enabled keys are:

Table 1. CR enabled keys
Key Default Scope Effect whenfalse
aap-cr.enabled true install aap,install aap-with-ao Skips the AnsibleAutomationPlatform CR
automation-orchestrator-cr.enabled true install ao,install aap-with-ao Skips the AutomationOrchestrator CR
cluster-cr.enabled true install ao,install aap-with-ao Skips the CloudNativePG Cluster CR, database Secrets, and Database CRs. Only applies whencloudnative-pg-operator.enabled istrue.

aapctl configuration file reference

Use this reference to look up all configuration keys available in an aapctl configuration file. Pass the file to aapctl install with the --config flag.

Overview

Important:

aapctl is a Technology Preview feature. Technology Preview features provide early access to upcoming product innovations, enabling you to test functionality and provide feedback during the development process. Technology Preview features are not fully supported under Red Hat production SLA and may not be functionally complete. Red Hat does not recommend using Technology Preview features in production. For more information on the support scope for Technology Preview features, see Technology Preview Features Support Scope.

Configuration file template

All fields are optional. Omitted fields use the defaults shown.

aap-operator:
  namespace: aap
  catalogSource: redhat-operators
  # channel: stable-2.7
  # startingCSV: <operator-version>

# Ansible Automation Platform custom resource (aap-with-ao deployments only)
# aap-cr:
#   enabled: true
#   hub:
#     fileStorageStorageClass: ""
#     fileStorageSize: ""

automation-orchestrator-operator:
  namespace: automation-orchestrator
  catalogSource: redhat-operators
  # channel: stable  # Options: early-access, stable
  # startingCSV: <operator-version>

automation-orchestrator-cr:
  enabled: true
  postgres:
    host: ""  # Required. Set to your PostgreSQL server hostname.
    port: 5432
    sslMode: verify-ca
    caCertSecretRef: orchestrator-postgres-ca
    # clientCertSecretRef: ""
  ingress:
    type: Route
    # host: ""
    # tlsSecretRef: ""
    # annotations: {}
  # otel:
  #   enabled: false
  #   endpoint: ""
  #   serviceName: ""
  #   authHeaderName: ""
  #   apiKeySecretRef: ""
  #   caCertSecretRef: ""
  #   clientCertSecretRef: ""
  # fileStorage:
  #   endpointURL: ""
  #   bucketName: ""
  #   region: ""
  #   verifySSL: true
  #   usePathStyle: true
  #   credentialSecretRef: ""
  #   caCertSecretRef: ""

cloudnative-pg-operator:
  namespace: cloudnative-pg
  enabled: false  # Not supported by Red Hat. See cloudnative-pg.io/support/ for support options.
  catalogSource: certified-operators
  # startingCSV: <operator-version>

cluster-cr:
  enabled: true
  imageName: ghcr.io/cloudnative-pg/postgresql:15
  storageSize: 5Gi
  maxConnections: 200
  # storageClass: ""

opentelemetry-operator:
  namespace: openshift-opentelemetry-operator
  enabled: false
  catalogSource: redhat-operators
  # startingCSV: <operator-version>

Configuration key descriptions

  • channel sets the Operator Lifecycle Manager (OLM) channel for the operator Subscription. Override this to install from a different release stream, for example, when you need to match a specific Ansible Automation Platform version. When omitted, the default channel is used (stable-2.7 for the Ansible Automation Platform operator, stable for the automation orchestrator operator). The automation orchestrator operator supports two channels: early-access and stable. See Understand release channels for guidance on which channel to use.
  • catalogSource sets the OLM CatalogSource name for each operator Subscription. Override this to point to a mirrored catalog in disconnected environments.
  • startingCSV pins the Subscription to a specific ClusterServiceVersion. When omitted, OLM resolves the latest available version in the channel.
  • aap-cr.enabled controls whether the AnsibleAutomationPlatform custom resource is created. Set to false to install the Ansible Automation Platform operator without creating an instance. Default: true. Available on install aap and install aap-with-ao.
  • aap-cr.hub applies only to integrated deployments that include Ansible Automation Platform (install aap or install aap-with-ao). Set fileStorageStorageClass to choose a StorageClass for automation hub content storage. Set fileStorageSize to set the storage volume size. When empty, the Ansible Automation Platform operator uses its own defaults.
  • automation-orchestrator-cr.enabled controls whether the AutomationOrchestrator custom resource is created. Set to false to install the automation orchestrator operator without creating an instance. Default: true. Available on install ao and install aap-with-ao.
  • automation-orchestrator-cr.postgres configures the PostgreSQL connection settings written into the AutomationOrchestrator custom resource. Override these values when you bring your own PostgreSQL instance.
  • automation-orchestrator-cr.ingress controls the ingress settings in the AutomationOrchestrator custom resource. The type field is always written; host, tlsSecretRef, and annotations are omitted from the custom resource when empty.
  • automation-orchestrator-cr.fileStorage configures S3-compatible object storage for file uploads. Set endpointURL to your S3 endpoint to enable file storage. When endpointURL is empty (the default), the entire spec.fileStorage section is omitted and file uploads return HTTP 503. The remaining fields (bucketName, region, verifySSL, usePathStyle, credentialSecretRef, caCertSecretRef) are optional. When omitted, the operator applies its own defaults (bucketName: orchestrator-files, region: us-east-1, verifySSL: true, usePathStyle: true). If your S3 endpoint requires authentication, create the credential Secret before you install. See File storage (S3) for the full field reference.
  • cluster-cr.enabled controls whether the CloudNativePG Cluster custom resource (CR), database Secrets, and Database CRs are created. Set to false to install the CloudNativePG operator without provisioning databases. You must create the two database Secrets (backend and temporal) manually before the installation can proceed. Default: true. This setting only applies when cloudnative-pg-operator.enabled is true.
  • cluster-cr configures the CloudNativePG database cluster. imageName sets the PostgreSQL container image. storageSize sets the persistent volume size for database storage (default: 5Gi). storageClass selects a StorageClass for the database volumes. When storageClass is empty, the cluster default StorageClass applies. maxConnections sets the PostgreSQL max_connections parameter (default: 200). See Automation orchestrator system requirements for sizing guidance.
  • automation-orchestrator-cr.otel configures OpenTelemetry export in the AutomationOrchestrator custom resource. Set otel.enabled to true and otel.endpoint to an OpenTelemetry Protocol (OTLP) HTTP endpoint to forward audit events. The remaining fields (serviceName, authHeaderName, apiKeySecretRef, caCertSecretRef, clientCertSecretRef) are optional and control authentication and TLS. These keys work on all installations without any additional requirements. See Enable OpenTelemetry collection with aapctl.
  • opentelemetry-operator.enabled installs the Red Hat build of the OpenTelemetry operator and deploys an OpenTelemetryCollector custom resource. This option is a Technology Preview feature. See Enable OpenTelemetry collection with aapctl.