mirror of
https://github.com/trailofbits/algo.git
synced 2026-09-06 17:57:46 +02:00
* Fix Ansible 12 double-templating and Jinja2 spacing issues This PR fixes critical deployment issues and improves code consistency for Ansible 12 compatibility. ## Fixed Issues ### 1. Double-templating bug (Issue #14835) Fixed 7 instances of invalid double-templating that breaks deployments: - Changed `{{ lookup('file', '{{ var }}') }}` to `{{ lookup('file', var) }}` - Affects Azure, DigitalOcean, GCE, Linode, and IPsec configurations - Added comprehensive test to prevent regression ### 2. Jinja2 spacing inconsistencies Fixed 33+ spacing issues for better code quality: - Removed spaces between Jinja2 blocks: `}} {%` → `}}{%` - Fixed operator spacing: `int -1` → `int - 1` - Fixed filter spacing: `|b64encode` → `| b64encode` - Consolidated multiline expressions to single lines ### 3. Test suite improvements Enhanced boolean type checking test to be more targeted: - Excludes external dependencies and CloudFormation templates - Only tests Algo's actual codebase - Verified with mutation testing - Added comprehensive documentation ## Testing - All 87 unit tests pass - 0 Jinja2 spacing issues remaining (verified by ansible-lint) - Ansible syntax checks pass for all playbooks - Mutation testing confirms tests catch real issues 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Fix Python linting issue - Remove unnecessary f-string prefix where no placeholders are used - Fixes ruff F541 error * Fix line length linting issues - Break long lines to stay within 120 character limit - Extract variables for better readability - Fixes ruff E501 errors --------- Co-authored-by: Claude <noreply@anthropic.com>
72 lines
2.3 KiB
YAML
72 lines
2.3 KiB
YAML
---
|
|
- block:
|
|
- pause:
|
|
prompt: |
|
|
Enter the API key (https://trailofbits.github.io/algo/cloud-cloudstack.html):
|
|
echo: false
|
|
register: _cs_key
|
|
when:
|
|
- cs_key is undefined
|
|
- lookup('env', 'CLOUDSTACK_KEY')|length <= 0
|
|
no_log: true
|
|
|
|
- pause:
|
|
prompt: |
|
|
Enter the API ssecret (https://trailofbits.github.io/algo/cloud-cloudstack.html):
|
|
echo: false
|
|
register: _cs_secret
|
|
when:
|
|
- cs_secret is undefined
|
|
- lookup('env', 'CLOUDSTACK_SECRET')|length <= 0
|
|
no_log: true
|
|
|
|
- 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
|
|
- lookup('env', 'CLOUDSTACK_ENDPOINT') | length <= 0
|
|
|
|
- set_fact:
|
|
algo_cs_key: "{{ cs_key | default(_cs_key.user_input | default(None)) | default(lookup('env', 'CLOUDSTACK_KEY'), true) }}"
|
|
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) }}
|
|
no_log: true
|
|
|
|
- name: Get zones on cloud
|
|
cs_zone_info:
|
|
register: _cs_zones
|
|
environment:
|
|
CLOUDSTACK_KEY: "{{ algo_cs_key }}"
|
|
CLOUDSTACK_SECRET: "{{ algo_cs_token }}"
|
|
CLOUDSTACK_ENDPOINT: "{{ algo_cs_url }}"
|
|
no_log: true
|
|
|
|
- name: Extract zones from output
|
|
set_fact:
|
|
cs_zones: "{{ _cs_zones['zones'] | sort(attribute='name') }}"
|
|
|
|
- name: Set the default zone
|
|
set_fact:
|
|
default_zone: >-
|
|
{%- for z in cs_zones -%}
|
|
{%- if z['name'] == "ch-gva-2" %}{{ loop.index }}{% endif -%}
|
|
{%- endfor %}
|
|
|
|
- pause:
|
|
prompt: |
|
|
What zone should the server be located in?
|
|
{% for z in cs_zones %}
|
|
{{ loop.index }}. {{ z['name'] }}
|
|
{% endfor %}
|
|
|
|
Enter the number of your desired zone
|
|
[{{ default_zone }}]
|
|
register: _algo_region
|
|
when: region is undefined
|