Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Ascender Installer

[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](./LICENSE.md)
[![Ascender](https://img.shields.io/badge/ascender-25.6.1-blue.svg)](https://github.com/ctrliq/ascender)
[![Ascender](https://img.shields.io/badge/ascender-25.6.2-blue.svg)](https://github.com/ctrliq/ascender)
[![Platforms](https://img.shields.io/badge/platforms-8-blue.svg)](./docs/README.md)

An Ansible-driven installer that deploys [Ascender](https://github.com/ctrliq/ascender), [Ledger](https://github.com/ctrliq/ascender-ledger), and the [Galaxy Proxy](https://github.com/ctrliq/ascender-galaxy-proxy) onto Kubernetes. You do not need an existing cluster or Kubernetes expertise. For every supported platform the installer can provision the cluster on your behalf and write the access file to `~/.kube/config`.
Expand Down
2 changes: 1 addition & 1 deletion collections/requirements.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ collections:
- name: ansible.posix
version: ">=1.5.4"
- name: ctrliq.ascender
version: "25.6.1"
version: "25.6.2"
- name: community.docker
version: ">=3.7.0"
- name: community.general
Expand Down
39 changes: 39 additions & 0 deletions config_vars.sh
Original file line number Diff line number Diff line change
@@ -1,2 +1,41 @@
#!/bin/bash

# Copyright (c) 2026, Ctrl IQ, Inc. All rights reserved.

# Determine the OS family so we know which package manager to use
OS_FAMILY=$(grep -oP '(?<=^ID_LIKE=).+' /etc/os-release | tr -d '"')
if [ "$OS_FAMILY" == "" ]; then
OS_FAMILY=$(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '"')
fi
OS=""

if [[ "$OS_FAMILY" == *"rhel"* || "$OS_FAMILY" == *"fedora"* || "$OS_FAMILY" == *"centos"* ]]; then
OS="rhel"
elif [[ "$OS_FAMILY" == *"debian"* || "$OS_FAMILY" == *"ubuntu"* ]]; then
OS="debian"
fi
Comment thread
cigamit marked this conversation as resolved.

check_ansible() {
type -p ansible-playbook > /dev/null
}

check_ansible
if [ $? -ne 0 ]; then
echo "#### INSTALLING ANSIBLE ####"
if [[ "$OS" == "debian" ]]; then
sudo apt-get update -y && sudo apt-get install -y ansible-core
elif [[ "$OS" == "rhel" ]]; then
sudo dnf install -y ansible-core
else
echo "Error: Unsupported OS family $OS_FAMILY. Unable to install Ansible automatically."
exit 1
fi
Comment thread
cigamit marked this conversation as resolved.

check_ansible
if [ $? -ne 0 ]; then
echo "Error: Ansible installation failed. Please install ansible-core and re-run this script."
exit 1
fi
fi

ANSIBLE_STDOUT_CALLBACK=minimum_text ansible-playbook -i 'localhost,' playbooks/config_vars.yml
4 changes: 2 additions & 2 deletions default.config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -213,10 +213,10 @@ ASCENDER_ADMIN_PASSWORD: "myadminpassword"
ASCENDER_IMAGE: ghcr.io/ctrliq/ascender

# The image tag indicating the version of Ascender you wish to install
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2

# The version of the AWX Operator used to install Ascender and its components
#ASCENDER_OPERATOR_VERSION: 25.6.1
#ASCENDER_OPERATOR_VERSION: 25.6.2

# DNS resolvable hostname for Ascender Mesh service. This is used by Execution Nodes to access Ascender.
# Mesh will not be setup unless this is configured
Expand Down
6 changes: 3 additions & 3 deletions docs/configuration/upgrading.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ download_kubeconfig: false
You already have a working kubeconfig and don't need to re-download it.

```yaml
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2
```

Replace `25.6.1` with the version you want to upgrade to. The list of available versions is here:
Replace `25.6.2` with the version you want to upgrade to. The list of available versions is here:

[Ascender Releases](https://github.com/ctrliq/ascender/releases)

Expand Down Expand Up @@ -104,6 +104,6 @@ kubectl rollout restart deployment/ascender-app-task -n ascender
```bash
kube_install: false
download_kubeconfig: false
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2
image_pull_policy: Always
```
4 changes: 2 additions & 2 deletions docs/installation/aks/aks.custom.config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ ASCENDER_ADMIN_USER: admin
# Administrator password for Ascender
ASCENDER_ADMIN_PASSWORD: "myadminpassword"
# The image tag indicating the version of Ascender you wish to install
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2
# The version of the AWX Operator used to install Ascender and its components
ASCENDER_OPERATOR_VERSION: 25.6.1
ASCENDER_OPERATOR_VERSION: 25.6.2
# Determines whether to keep the secrets required to encrypt within Ascender (important when backing up)
ascender_garbage_collect_secrets: false
# External PostgreSQL database name used for Ascender (this DB must exist)
Expand Down
4 changes: 2 additions & 2 deletions docs/installation/dkp/dkp.default.config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ ASCENDER_ADMIN_PASSWORD: "myadminpassword"
ASCENDER_IMAGE: ghcr.io/ctrliq/ascender

# The image tag indicating the version of Ascender you wish to install
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2

# The version of the AWX Operator used to install Ascender and its components
ASCENDER_OPERATOR_VERSION: 25.6.1
ASCENDER_OPERATOR_VERSION: 25.6.2

# Determines whether to keep the secrets required to encrypt within Ascender (important when backing up)
ascender_garbage_collect_secrets: true
Expand Down
4 changes: 2 additions & 2 deletions docs/installation/eks/eks.custom.config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -142,10 +142,10 @@ ASCENDER_ADMIN_PASSWORD: "myadminpassword"
ASCENDER_IMAGE: ghcr.io/ctrliq/ascender

# The image tag indicating the version of Ascender you wish to install
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2

# The version of the AWX Operator used to install Ascender and its components
ASCENDER_OPERATOR_VERSION: 25.6.1
ASCENDER_OPERATOR_VERSION: 25.6.2

# Determines whether to keep the secrets required to encrypt within Ascender (important when backing up)
ascender_garbage_collect_secrets: true
Expand Down
4 changes: 2 additions & 2 deletions docs/installation/gke/gke.custom.config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ ASCENDER_ADMIN_USER: admin
# Administrator password for Ascender
ASCENDER_ADMIN_PASSWORD: "myadminpassword"
# The image tag indicating the version of Ascender you wish to install
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2
# The version of the AWX Operator used to install Ascender and its components
ASCENDER_OPERATOR_VERSION: 25.6.1
ASCENDER_OPERATOR_VERSION: 25.6.2
# Determines whether to keep the secrets required to encrypt within Ascender (important when backing up)
ascender_garbage_collect_secrets: false
# External PostgreSQL database name used for Ascender (this DB must exist)
Expand Down
4 changes: 2 additions & 2 deletions docs/installation/k3s/k3s.default.config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,10 @@ ASCENDER_ADMIN_PASSWORD: "myadminpassword"
ASCENDER_IMAGE: ghcr.io/ctrliq/ascender

# The image tag indicating the version of Ascender you wish to install
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2

# The version of the AWX Operator used to install Ascender and its components
ASCENDER_OPERATOR_VERSION: 25.6.1
ASCENDER_OPERATOR_VERSION: 25.6.2

# Determines whether to keep the secrets required to encrypt within Ascender (important when backing up)
ascender_garbage_collect_secrets: true
Expand Down
4 changes: 2 additions & 2 deletions docs/installation/k3s/k3s.offline.default.config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,10 @@ ASCENDER_ADMIN_PASSWORD: "myadminpassword"
ASCENDER_IMAGE: ghcr.io/ctrliq/ascender

# The image tag indicating the version of Ascender you wish to install
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2

# The version of the AWX Operator used to install Ascender and its components
ASCENDER_OPERATOR_VERSION: 25.6.1
ASCENDER_OPERATOR_VERSION: 25.6.2

# Determines whether to keep the secrets required to encrypt within Ascender (important when backing up)
ascender_garbage_collect_secrets: true
Expand Down
4 changes: 2 additions & 2 deletions docs/installation/rke2/rke2.default.config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ ASCENDER_ADMIN_PASSWORD: "myadminpassword"
# The OCI container image for Ascender
ASCENDER_IMAGE: ghcr.io/ctrliq/ascender
# The image tag indicating the version of Ascender you wish to install
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2
# The version of the AWX Operator used to install Ascender and its components
ASCENDER_OPERATOR_VERSION: 25.6.1
ASCENDER_OPERATOR_VERSION: 25.6.2
# Determines whether to keep the secrets required to encrypt within Ascender (important when backing up)
ascender_garbage_collect_secrets: false
# External PostgreSQL database name used for Ascender (this DB must exist)
Expand Down
6 changes: 3 additions & 3 deletions playbooks/group_vars/all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -216,10 +216,10 @@ ASCENDER_ADMIN_PASSWORD: "myadminpassword"
ASCENDER_IMAGE: ghcr.io/ctrliq/ascender

# The image tag indicating the version of Ascender you wish to install
ASCENDER_VERSION: 25.6.1
ASCENDER_VERSION: 25.6.2

# The version of the AWX Operator used to install Ascender and its components
ASCENDER_OPERATOR_VERSION: 25.6.1
ASCENDER_OPERATOR_VERSION: 25.6.2

# DNS resolvable hostname for Ascender Mesh service. This is used by Execution Nodes to access Ascender.
# Mesh will not be setup unless this is configured
Expand Down Expand Up @@ -346,7 +346,7 @@ required_collections:
version_type: semver
platform: ["azure", "dkp", "eks", "gcp", "k3s", "rke2"]
- name: ctrliq.ascender
version: "25.6.1"
version: "25.6.2"
compare: ">="
version_type: semver
platform: ["azure", "dkp", "eks", "gcp", "k3s", "rke2"]
Expand Down
2 changes: 1 addition & 1 deletion playbooks/roles/ascender_install/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,6 @@ ASCENDER_IMAGE: ghcr.io/ctrliq/ascender
ASCENDER_VERSION: latest

# The version of the AWX Operator used to install Ascender and its components
ASCENDER_OPERATOR_VERSION: 25.6.1
ASCENDER_OPERATOR_VERSION: 25.6.2

k8s_container_registry: ghcr.io/ctrliq
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
{% else %}
image: {{ ASCENDER_IMAGE }}
{% endif %}
image_version: {{ ASCENDER_VERSION | default("25.6.1") }}
image_version: {{ ASCENDER_VERSION | default("25.6.2") }}
{% if k8s_platform == "k3s" and k8s_offline | default(false) | bool %}
image_pull_policy: Never
{% else %}
Expand Down
4 changes: 2 additions & 2 deletions playbooks/roles/awx_migrate_ascender/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -769,13 +769,13 @@ These fields cause the operator to mount volumes, register execution environment
| Field | AWX source value | Ascender CR value | Why keep Ascender's |
|---|---|---|---|
| `image` | Source AWX image | `ghcr.io/ctrliq/ascender` | Different product, different image repo. |
| `image_version` | not in backup | `25.6.1` | Ascender-specific. |
| `image_version` | not in backup | `25.6.2` | Ascender-specific. |
| `redis_image` | Source redis image | `ghcr.io/valkey-io/valkey` | Ascender uses valkey, not redis. |
| `route_host` | Source AWX hostname | Destination Ascender hostname | DNS-specific. Source hostname would break routing. |
| `hostname` | not in backup | Destination Ascender hostname | Matches route_host. |
| `extra_settings` (CSRF) | not in backup | CSRF trusted origins for destination hostname | Tied to hostname. |
| `admin_user` | `admin` | `admin` | Same. Set by Ascender install. |
| `control_plane_ee_image` | not in backup | `ghcr.io/ctrliq/ascender-ee:25.6.1` | Ascender-specific. |
| `control_plane_ee_image` | not in backup | `ghcr.io/ctrliq/ascender-ee:25.6.2` | Ascender-specific. |
| `init_container_image` | not in backup | `ghcr.io/ctrliq/ascender-ee` | Ascender-specific. |
| `postgres_image` | not in backup | `quay.io/sclorg/postgresql-15-c9s` | Ascender-specific. |
| `garbage_collect_secrets` | `false` | `true` | Ascender install set this. Keep. |
Expand Down
8 changes: 4 additions & 4 deletions playbooks/roles/config_vars/tasks/ascender.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,24 +85,24 @@

- name: "The image tag indicating the version of Ascender you wish to install"
prompt:
prompt: "Enter your selection [{{ config_data.ASCENDER_VERSION | default('25.6.1') }}]: "
prompt: "Enter your selection [{{ config_data.ASCENDER_VERSION | default('25.6.2') }}]: "
register: config_vars_ascender_version

- name: Save the Ascender version
vars:
ascender_version_default: "{{ config_data.ASCENDER_VERSION | default('25.6.1') }}"
ascender_version_default: "{{ config_data.ASCENDER_VERSION | default('25.6.2') }}"
ascender_version_value: "{{ config_vars_ascender_version.user_input | trim | default(ascender_version_default, true) }}"
ansible.builtin.set_fact:
config_data: "{{ config_data | combine({'ASCENDER_VERSION': ascender_version_value}, recursive=True) }}"

- name: "The version of the AWX Operator used to install Ascender"
prompt:
prompt: "Enter your selection [{{ config_data.ASCENDER_OPERATOR_VERSION | default('25.6.1') }}]: "
prompt: "Enter your selection [{{ config_data.ASCENDER_OPERATOR_VERSION | default('25.6.2') }}]: "
register: config_vars_ascender_operator_version

- name: Save the Ascender operator version
vars:
ascender_operator_version_default: "{{ config_data.ASCENDER_OPERATOR_VERSION | default('25.6.1') }}"
ascender_operator_version_default: "{{ config_data.ASCENDER_OPERATOR_VERSION | default('25.6.2') }}"
ascender_operator_version_value: "{{ config_vars_ascender_operator_version.user_input | trim | default(ascender_operator_version_default, true) }}"
ansible.builtin.set_fact:
config_data: "{{ config_data | combine({'ASCENDER_OPERATOR_VERSION': ascender_operator_version_value}, recursive=True) }}"
Expand Down
16 changes: 8 additions & 8 deletions setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,10 @@ if [ -t "0" ]; then
ANSIBLE_FORCE_COLORS=True
fi

if [ -f "$(dirname $0)/inventory.yml" ]; then
INVENTORY_FILE="$(dirname $0)/inventory.yml"
if [ -f "$(dirname "$0")/inventory.yml" ]; then
INVENTORY_FILE="$(dirname "$0")/inventory.yml"
else
INVENTORY_FILE="$(dirname $0)/inventory"
INVENTORY_FILE="$(dirname "$0")/inventory"
fi

echo "Using Inventory File: ${INVENTORY_FILE}"
Expand Down Expand Up @@ -132,11 +132,11 @@ fi
check_collections
if [ $? -ne 1 ]; then
echo "#### INSTALLING COLLECTIONS ####"
if [ -f "$(dirname $0)/offline/collections/ansible-posix-1.5.4.tar.gz" ]; then
ansible-galaxy collection install $(dirname $0)/offline/collections/ansible-posix-1.5.4.tar.gz
ansible-galaxy collection install $(dirname $0)/offline/collections/ctrliq-ascender-25.6.1.tar.gz
ansible-galaxy collection install $(dirname $0)/offline/collections/community-general-8.3.0.tar.gz
ansible-galaxy collection install $(dirname $0)/offline/collections/kubernetes-core-2.4.0.tar.gz
if [ -f "$(dirname "$0")/offline/collections/ansible-posix-1.5.4.tar.gz" ]; then
ansible-galaxy collection install "$(dirname "$0")/offline/collections/ansible-posix-1.5.4.tar.gz"
ansible-galaxy collection install "$(dirname "$0")/offline/collections/ctrliq-ascender-25.6.2.tar.gz"
ansible-galaxy collection install "$(dirname "$0")/offline/collections/community-general-8.3.0.tar.gz"
ansible-galaxy collection install "$(dirname "$0")/offline/collections/kubernetes-core-2.4.0.tar.gz"
else
ansible-galaxy install -r collections/requirements.yml
fi
Expand Down