diff --git a/README.md b/README.md index d5aeea81..93ed5164 100644 --- a/README.md +++ b/README.md @@ -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: diff --git a/docs/cloud-amazon-ec2.md b/docs/cloud-amazon-ec2.md index 798d4b52..1701cdb3 100644 --- a/docs/cloud-amazon-ec2.md +++ b/docs/cloud-amazon-ec2.md @@ -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) diff --git a/docs/cloud-cloudstack.md b/docs/cloud-cloudstack.md index 672778ec..b89cc7fb 100644 --- a/docs/cloud-cloudstack.md +++ b/docs/cloud-cloudstack.md @@ -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//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="" export CLOUDSTACK_SECRET="" -export CLOUDSTACK_ENDPOINT="https://api.exoscale.com/compute" +export CLOUDSTACK_ENDPOINT="" ``` + +Make sure your provider supports the CloudStack API. Contact your provider for the correct API endpoint URL. diff --git a/docs/deploy-from-ansible.md b/docs/deploy-from-ansible.md index 4ab51a5f..60f9292f 100644 --- a/docs/deploy-from-ansible.md +++ b/docs/deploy-from-ansible.md @@ -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`. diff --git a/input.yml b/input.yml index 921de0ba..8dbf3daa 100644 --- a/input.yml +++ b/input.yml @@ -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: diff --git a/roles/cloud-cloudstack/tasks/prompts.yml b/roles/cloud-cloudstack/tasks/prompts.yml index 520bc799..0fda88ce 100644 --- a/roles/cloud-cloudstack/tasks/prompts.yml +++ b/roles/cloud-cloudstack/tasks/prompts.yml @@ -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: |