Remove Exoscale support due to CloudStack API deprecation (#14841)

* Remove Exoscale support due to CloudStack API deprecation (fixes #14839)

Exoscale deprecated their CloudStack API on May 1, 2024, migrating to a
proprietary API v2 that is incompatible with CloudStack-based tools.

Changes:
- Remove Exoscale as default CloudStack endpoint
- Add detection and clear error message for Exoscale endpoints
- Update documentation to remove Exoscale references
- Add recommendations for alternative providers
- Maintain generic CloudStack support for other providers

Users attempting to use Exoscale will now receive a helpful error message
explaining the situation and suggesting alternative providers with European
presence (Hetzner, DigitalOcean, Vultr, Scaleway).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Remove remaining Exoscale references from input.yml, README, and prompts

- Removed 'Exoscale optimised' label from CloudStack in input.yml
- Removed Exoscale mention from README.md provider list
- Removed Exoscale URL example from CloudStack API endpoint prompt

* Fix typo: 'API ssecret' -> 'API secret' in CloudStack prompt

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Dan Guido
2025-09-28 13:57:56 -04:00
committed by GitHub
co-authored by Claude
parent 1cd4203c34
commit f55c09243d
6 changed files with 34 additions and 16 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ See our [release announcement](https://blog.trailofbits.com/2016/12/12/meet-algo
The easiest way to get an Algo server running is to run it on your local system or from [Google Cloud Shell](docs/deploy-from-cloudshell.md) and let it set up a _new_ virtual machine in the cloud for you.
1. **Setup an account on a cloud hosting provider.** Algo supports [DigitalOcean](https://m.do.co/c/4d7f4ff9cfe4) (most user friendly), [Amazon Lightsail](https://aws.amazon.com/lightsail/), [Amazon EC2](https://aws.amazon.com/), [Vultr](https://www.vultr.com/), [Microsoft Azure](https://azure.microsoft.com/), [Google Compute Engine](https://cloud.google.com/compute/), [Scaleway](https://www.scaleway.com/), [DreamCompute](https://www.dreamhost.com/cloud/computing/), [Linode](https://www.linode.com) other OpenStack-based cloud hosting, [Exoscale](https://www.exoscale.com) or other CloudStack-based cloud hosting, or [Hetzner Cloud](https://www.hetzner.com/).
1. **Setup an account on a cloud hosting provider.** Algo supports [DigitalOcean](https://m.do.co/c/4d7f4ff9cfe4) (most user friendly), [Amazon Lightsail](https://aws.amazon.com/lightsail/), [Amazon EC2](https://aws.amazon.com/), [Vultr](https://www.vultr.com/), [Microsoft Azure](https://azure.microsoft.com/), [Google Compute Engine](https://cloud.google.com/compute/), [Scaleway](https://www.scaleway.com/), [DreamCompute](https://www.dreamhost.com/cloud/computing/), [Linode](https://www.linode.com), other OpenStack-based cloud hosting, CloudStack-based cloud hosting, or [Hetzner Cloud](https://www.hetzner.com/).
2. **Get a copy of Algo.** The Algo scripts will be run from your local system. There are two ways to get a copy:
+1 -1
View File
@@ -90,7 +90,7 @@ $ ./algo
7. Vultr
8. Scaleway
9. OpenStack (DreamCompute optimised)
10. CloudStack (Exoscale optimised)
10. CloudStack
11. Linode
12. Install to existing Ubuntu server (for more advanced users)
+7 -3
View File
@@ -1,11 +1,15 @@
### Configuration file
Algo scripts will ask you for the API detail. You need to fetch the API credentials and the endpoint from the provider control panel.
> **⚠️ Important Note:** Exoscale is no longer supported as they deprecated their CloudStack API on May 1, 2024. Please use alternative providers like Hetzner, DigitalOcean, Vultr, or Scaleway.
Example for Exoscale (European cloud provider exposing CloudStack API), visit https://portal.exoscale.com/u/<your@account>/account/profile/api to gather the required information: CloudStack api key and secret.
Algo scripts will ask you for the API details. You need to fetch the API credentials and the endpoint from your CloudStack provider's control panel.
For CloudStack providers, you'll need to set:
```bash
export CLOUDSTACK_KEY="<your api key>"
export CLOUDSTACK_SECRET="<your secret>"
export CLOUDSTACK_ENDPOINT="https://api.exoscale.com/compute"
export CLOUDSTACK_ENDPOINT="<your provider's API endpoint>"
```
Make sure your provider supports the CloudStack API. Contact your provider for the correct API endpoint URL.
+4 -2
View File
@@ -291,11 +291,13 @@ You need to source the rc file prior to run Algo. Download it from the OpenStack
### CloudStack
> **Note:** Exoscale is no longer supported as they deprecated their CloudStack API on May 1, 2024.
Required variables:
- [cs_config](https://trailofbits.github.io/algo/cloud-cloudstack.html): /path/to/.cloudstack.ini
- cs_region: e.g. `exoscale`
- cs_zones: e.g. `ch-gva2`
- cs_region: your CloudStack region
- cs_zones: your CloudStack zone
The first two can also be defined in your environment, using the variables `CLOUDSTACK_CONFIG` and `CLOUDSTACK_REGION`.
+1 -1
View File
@@ -20,7 +20,7 @@
- { name: Vultr, alias: vultr }
- { name: Scaleway, alias: scaleway }
- { name: OpenStack (DreamCompute optimised), alias: openstack }
- { name: CloudStack (Exoscale optimised), alias: cloudstack }
- { name: CloudStack, alias: cloudstack }
- { name: Linode, alias: linode }
- { name: Install to existing Ubuntu latest LTS server (for more advanced users), alias: local }
vars_files:
+20 -8
View File
@@ -12,7 +12,7 @@
- pause:
prompt: |
Enter the API ssecret (https://trailofbits.github.io/algo/cloud-cloudstack.html):
Enter the API secret (https://trailofbits.github.io/algo/cloud-cloudstack.html):
echo: false
register: _cs_secret
when:
@@ -23,7 +23,6 @@
- pause:
prompt: |
Enter the API endpoint (https://trailofbits.github.io/algo/cloud-cloudstack.html)
[https://api.exoscale.com/compute]
register: _cs_url
when:
- cs_url is undefined
@@ -34,10 +33,26 @@
algo_cs_token: "{{ cs_secret | default(_cs_secret.user_input | default(None)) | default(lookup('env', 'CLOUDSTACK_SECRET'), true) }}"
algo_cs_url: >-
{{ cs_url | default(_cs_url.user_input|default(None)) |
default(lookup('env', 'CLOUDSTACK_ENDPOINT'), true) |
default('https://api.exoscale.com/compute', true) }}
default(lookup('env', 'CLOUDSTACK_ENDPOINT'), true) }}
no_log: true
- name: Check for Exoscale API endpoint
fail:
msg: |
ERROR: Exoscale CloudStack API has been deprecated as of May 1, 2024.
Exoscale has migrated from CloudStack to their proprietary API v2, which is not compatible
with CloudStack-based tools. Algo no longer supports Exoscale deployments.
Please consider these alternative providers:
- Hetzner (provider: hetzner) - German provider with European coverage
- DigitalOcean (provider: digitalocean) - Has Amsterdam and Frankfurt regions
- Vultr (provider: vultr) - Multiple European locations
- Scaleway (provider: scaleway) - French provider
If you're using a different CloudStack provider, please provide the correct API endpoint.
when: "'exoscale.com' in algo_cs_url or 'exoscale.ch' in algo_cs_url"
- name: Get zones on cloud
cs_zone_info:
register: _cs_zones
@@ -53,10 +68,7 @@
- name: Set the default zone
set_fact:
default_zone: >-
{%- for z in cs_zones -%}
{%- if z['name'] == "ch-gva-2" %}{{ loop.index }}{% endif -%}
{%- endfor %}
default_zone: "1" # Default to first zone in the list
- pause:
prompt: |