Skip to content

The Big Bastard#746

Open
infraclaw-dash wants to merge 10 commits into
dashpay:v1.0-devfrom
infraclaw-dash:infraclaw/devnet-rescue-deploy-fixes
Open

The Big Bastard#746
infraclaw-dash wants to merge 10 commits into
dashpay:v1.0-devfrom
infraclaw-dash:infraclaw/devnet-rescue-deploy-fixes

Conversation

@infraclaw-dash

@infraclaw-dash infraclaw-dash commented May 29, 2026

Copy link
Copy Markdown

Summary

  • modernize the Ansible deployment path for newer Ansible behavior
  • add reusable pre-baked Dash Network base AMI support with Packer
  • add a scheduled/manual GitHub Actions workflow to refresh base AMIs
  • fix and speed up fast mode by skipping non-critical observability/logging setup
  • harden fast-mode and related boolean conditionals for Ansible 2.19 strict boolean handling

Validation

  • ansible-playbook --syntax-check for regular deploy path
  • ansible-playbook --syntax-check with fast-mode vars
  • local strict-boolean reproduction for CLI string vars
  • packer fmt -check
  • packer validate
  • workflow YAML parse check

Summary by CodeRabbit

  • New Features

    • Support for pre-baked base AMIs with CLI/workflow to build and select amd64/arm64; new deploy flag to skip common setup.
  • Documentation

    • README updated with Packer usage, prebaked AMI workflow, deploy --fast and --prebaked-common-setup guidance and caveats.
  • Chores

    • Added automated AMI build workflow and local build script; added AMI override inputs for Terraform.
  • Improvements

    • Hardened boolean/conditional handling across Ansible playbooks and templates for more predictable fast/skip behaviors.

Review Change Stack

Ubuntu added 5 commits May 28, 2026 19:50
- use ipam_pool_id for AWS EIP allocation from IPAM pools

- make masternode roles compatible with strict boolean conditionals

- handle empty regular masternode lists and HPMN-only networks

- default dashd wallet enablement safely and add start-at-task support

- add required Dashmate Tenderdash p2p allowlistOnly setting

- harden ZeroSSL SSM restore for missing values and suppress key logging
@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@infraclaw-dash, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 3 minutes and 41 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 83884dc8-f63d-45ca-bbc5-05128fdb8e24

📥 Commits

Reviewing files that changed from the base of the PR and between 5d10bb7 and 3d84a73.

📒 Files selected for processing (10)
  • README.md
  • ansible/deploy.yml
  • ansible/group_vars/all
  • ansible/roles/dashd/tasks/main.yml
  • ansible/roles/dashd_generate_miner/tasks/main.yml
  • ansible/roles/dashmate/tasks/main.yml
  • ansible/roles/generate_blocks/tasks/main.yml
  • ansible/roles/mn_fund_collateral/tasks/fund_collateral.yml
  • ansible/roles/mn_init/tasks/main.yml
  • bin/deploy
📝 Walkthrough

Walkthrough

This PR implements end-to-end support for building and deploying pre-baked base AMIs. It adds a GitHub Actions workflow and Packer template to build AMIs with common setup pre-installed, introduces Ansible configuration flags to conditionally skip setup during deployment, refactors the Ansible role suite to support fast mode, and switches Terraform from dynamic AMI lookups to pre-configured AMI IDs.

Changes

Pre-baked AMI Build and Deployment

Layer / File(s) Summary
Ignore rules and README updates
.gitignore, README.md
Adds ignore patterns for pre-deploy artifacts and local logs; documents Packer as optional prerequisite, --fast deploy option, and “Pre-baked base AMIs” usage.
GitHub Actions and Packer AMI Build Pipeline
.github/workflows/build-base-images.yml, bin/build-base-image, packer/dash-network-base.pkr.hcl
Adds workflow for scheduled/manual AMI builds with architecture selection, Packer initialization/validation, a build script, and post-build AMI ID reporting for tfvars.
Ansible group vars and prebake playbook
ansible/group_vars/all, ansible/prebake-common.yml, ansible/roles/dashmate/defaults/main.yml
Introduces prebaked_common_setup, fast_mode, and skip_observability_setup flags and a prebake playbook installing baseline packages, user, swap, Docker, and pinned Python packages for AMIs.
Main deploy playbook conditional gating
ansible/deploy.yml
Skips common package/Docker/swap setup when prebaked_common_setup is true, gates observability roles on skip_observability_setup, and switches HP masternode conditions to use fast_mode.
Dashmate role: fast-mode, config, restart orchestration
ansible/roles/dashmate/tasks/main.yml
Refactors dashmate tasks for fast vs regular flows, robust boolean checks, user/group facts, config rendering/writes, SSL handling, and restart orchestration.
Dashmate templates, ZeroSSL, build and logs tasks
ansible/roles/dashmate/templates/dashmate.json.j2, ansible/roles/dashmate/tasks/ssl/zerossl.yml, ansible/roles/dashmate/tasks/build.yml, ansible/roles/dashmate/tasks/logs.yml, ansible/roles/dashmate/tasks/rolling_restart.yml
Normalizes boolean rendering in templates, adds Tenderdash allowlistOnly, hardens ZeroSSL SSM lookups and gating, and boolean-coerces build/log related when conditions.
Other Ansible roles: boolean hardening and guards
ansible/roles/dashd/*, ansible/roles/load_tool/*, ansible/roles/metricbeat/*, ansible/roles/mn_*, ansible/roles/status_dashboard/*
Applies boolean coercion, explicit length checks, and safer changed/when predicates across multiple roles and tasks.
Terraform AMI selection and infrastructure updates
terraform/aws/variables.tf, terraform/aws/main.tf, terraform/aws/instances.tf, terraform/aws/.terraform.lock.hcl
Adds base_ami_amd64_id/base_ami_arm64_id variables with validation, conditionally uses data source lookups when overrides absent, computes locals for AMI IDs, replaces instance AMI references with locals, updates BYOIP EIPs to ipam_pool_id, and updates provider lockfile versions.
Documentation, deploy CLI and tooling
bin/deploy, flake.nix, lib/configGenerator/generateTerraformConfig.js, lib/cli/ansible.sh
Adds --prebaked-common-setup flag to deploy, includes Packer in the dev environment, emits tfvars placeholders for base AMI IDs, and conditionally supports ANSIBLE_START_AT_TASK.

Sequence Diagram

sequenceDiagram
  participant Developer
  participant GitHub
  participant Packer
  participant AWS_EC2 as AWS EC2
  participant Ansible as Ansible Provisioner
  participant Terraform
  Developer->>GitHub: trigger manual AMI build or schedule
  GitHub->>Packer: packer build with region/architecture
  Packer->>AWS_EC2: launch temporary EC2 instance
  Packer->>Ansible: run ansible/prebake-common.yml
  Ansible->>AWS_EC2: install docker, packages, utilities
  Packer->>AWS_EC2: snapshot instance as AMI
  GitHub->>GitHub: append summary with AMI IDs to step
  Developer->>Terraform: configure base_ami_amd64_id, base_ami_arm64_id
  Terraform->>AWS_EC2: launch instances using pre-configured AMI IDs
  Developer->>Terraform: deploy with -p --prebaked-common-setup
  Terraform->>Ansible: skip common setup phases
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested reviewers

  • ktechmidas

Poem

🐰 With Packer's paws I stitch and bake,
Images primed for dawn's first wake,
Fast mode hops, skips heavy chore,
Terraform wakes instances with AMI lore,
A rabbit cheers — deploy, and soar!

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'The Big Bastard' is vague and generic, using non-descriptive language that does not convey meaningful information about the changeset. Replace with a descriptive title that summarizes the main change, such as 'Add pre-baked AMI support and Ansible hardening for strict boolean handling' or 'Modernize Ansible deployment with Packer-based base AMIs'.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
ansible/deploy.yml (1)

378-399: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Keep the dashmate_deploy play fact-free.

This play still opts into gather_facts: true, which keeps extra setup on the hot path of the fast parallel deploy flow this PR is adding. Please align it with the deploy playbook contract and fetch only explicit facts if a role here truly needs them.

As per coding guidelines, "Add dashmate_deploy tag, set gather_facts: false, and use strategy: free in ansible/deploy.yml to enable fast, parallel deployments".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ansible/deploy.yml` around lines 378 - 399, The play "Set up core and
platform on HP masternodes" currently has gather_facts: true; change it to
gather_facts: false and add the dashmate_deploy tag to the play declaration so
it follows the deploy playbook contract; keep strategy: free as-is and, if any
role (e.g., dash_cli, dashmate, mn_status_report, metricbeat) truly needs
specific facts, call ansible.builtin.setup with an explicit gather_subset or
invoke targeted ansible.builtin.set_fact in those roles rather than enabling
global gather_facts for the play.
ansible/roles/dashmate/tasks/ssl/zerossl.yml (1)

45-63: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Check both ZeroSSL artifacts before skipping the restore path.

This only stats private.key, so a host with private.key present but csr.pem missing will skip the SSM restore even though the certificate state is incomplete.

Proposed fix
-- name: Check that ZeroSSL CSR and private key files exist
+- name: Check that ZeroSSL private key file exists
   ansible.builtin.stat:
     path: '{{ dashmate_zerossl_keys_path }}/{{ dashmate_zerossl_private_key_file_name }}'
-  register: zero_ssl_files
+  register: zero_ssl_private_key_file
+
+- name: Check that ZeroSSL CSR file exists
+  ansible.builtin.stat:
+    path: '{{ dashmate_zerossl_keys_path }}/{{ dashmate_zerossl_csr_file_name }}'
+  register: zero_ssl_csr_file
 
 - name: Get ZeroSSL CSR and private key from SSM
   no_log: true
   ansible.builtin.copy:
     dest: '{{ dashmate_zerossl_keys_path }}/{{ item }}'
@@
   loop:
     - '{{ dashmate_zerossl_private_key_file_name }}'
     - '{{ dashmate_zerossl_csr_file_name }}'
   when: >
-    not zero_ssl_files.stat.exists and
+    (not zero_ssl_private_key_file.stat.exists or not zero_ssl_csr_file.stat.exists) and
     (dashmate_zerossl_ssm_certificate_id | default('', true) | length) > 0
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ansible/roles/dashmate/tasks/ssl/zerossl.yml` around lines 45 - 63, The
current check only stats the private key file (task "Check that ZeroSSL CSR and
private key files exist" registering zero_ssl_files) so a host with the private
key but missing the CSR will skip the SSM restore; update the task to verify
existence of both dashmate_zerossl_private_key_file_name and
dashmate_zerossl_csr_file_name (e.g. stat both files or loop the stat and
register a combined result) and change the when condition (used by the "Get
ZeroSSL CSR and private key from SSM" task) to only skip restore when both files
exist, referencing the same registered variable(s) (zero_ssl_files or new
registration) and the same variable names dashmate_zerossl_private_key_file_name
and dashmate_zerossl_csr_file_name so the SSM copy runs when either artifact is
missing.
🧹 Nitpick comments (2)
packer/dash-network-base.pkr.hcl (1)

2-10: ⚡ Quick win

Pin tested Packer plugin versions instead of using open-ended lower bounds.

>= lets future amazon/ansible plugin releases change this build pipeline under your feet. For a scheduled AMI bake job, that makes failures and behavior changes hard to reproduce. Please pin to the tested version or at least a bounded compatible range.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packer/dash-network-base.pkr.hcl` around lines 2 - 10, The required_plugins
block currently uses open-ended lower-bound constraints for the amazon and
ansible plugins (symbols: required_plugins, amazon, ansible, version), which
risks unexpected changes; update the version values to either a pinned tested
version (e.g., "1.3.0") or a bounded compatible range (e.g., ">= 1.3.0, < 2.0.0"
or "~> 1.3.0") for both amazon and ansible to ensure reproducible builds and
stable behavior.
ansible/prebake-common.yml (1)

7-17: ⚡ Quick win

Extract the shared pip package pins.

This list is duplicated in ansible/deploy.yml Lines 61-68. Keeping the prebake and regular deploy paths in sync by hand will drift on the next version bump, leaving AMI-based hosts and fresh installs on different Python dependencies.

♻️ One way to centralize the shared package pins
+# ansible/vars/common_python_packages.yml
+pip_package: python3-pip
+pip_install_packages:
+  - name: docker
+    version: "6.0.1"
+  - name: docker-compose
+    version: "1.29.2"
+  - name: requests
+    version: "2.31.0"
 - name: Build Dash Network common base image
   hosts: all
   become: true
   gather_facts: true
-  vars:
-    swap_space: 2G
-    pip_package: python3-pip
-    pip_install_packages:
-      - name: docker
-        version: "6.0.1"
-      - name: docker-compose
-        version: "1.29.2"
-      - name: requests
-        version: "2.31.0"
+  vars_files:
+    - vars/common_python_packages.yml
+  vars:
+    swap_space: 2G
# Apply the same vars_files entry in ansible/deploy.yml for the matching play.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ansible/prebake-common.yml` around lines 7 - 17, The pip package pin list
(pip_install_packages) is duplicated between prebake and deploy; extract the
shared pins into a single vars file (e.g., create a vars file holding
pip_package and pip_install_packages) and update both prebake and the matching
play in deploy to load that file via vars_files so both paths use the same
source of truth; ensure you update references to pip_package and
pip_install_packages in the playbooks to use the centralized vars file.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/build-base-images.yml:
- Around line 52-56: Update the GitHub Actions steps that currently use tag
pins: change the "Checkout dash-network-deploy" step (uses: actions/checkout@v4)
to pin to the specific commit SHA and add a with: persist-credentials: false key
to prevent the workflow from retaining the repo token, and change the "Set up
Packer" step (uses: hashicorp/setup-packer@v3) to pin to a specific commit SHA
instead of the tag; keep the step names ("Checkout dash-network-deploy" and "Set
up Packer") and only modify the uses values to SHAs and add the
persist-credentials: false under the checkout step.

In `@ansible/roles/dashmate/tasks/main.yml`:
- Around line 234-239: The "Configure logs" task (import_tasks: ./logs.yml)
currently only checks skip_observability_setup and related flags, so logs.yml
still runs during fast deploys; modify its when clause to also skip when fast
mode is enabled by adding a check such as "and not (fast_deploy | default(false)
| bool)" (or your project’s fast-mode variable name) so the full when becomes:
not (skip_observability_setup | default(false) | bool) and not (fast_deploy |
default(false) | bool) and not (logrotate_config_stat.stat.exists |
default(false)) or force_logs_config | default(false) | bool and
dashmate_user_exists | bool, ensuring the import_tasks "./logs.yml" is bypassed
in fast mode.

In `@ansible/roles/dashmate/tasks/ssl/zerossl.yml`:
- Around line 50-57: The task "Get ZeroSSL CSR and private key from SSM" writes
keys with mode "0644" making the private key world-readable; change the mode so
private.key is created with tighter permissions (e.g. "0600") while keeping
CSR/public files at "0644". Update the ansible.builtin.copy invocation that uses
dest '{{ dashmate_zerossl_keys_path }}/{{ item }}' and owner/group '{{
dashmate_user }}'/'{{ dashmate_group }}' to set mode conditionally (for example
using a Jinja2 conditional on item == 'private.key' such as mode: "{{ '0600' if
item == 'private.key' else '0644' }}") so only the private key is restricted.
Ensure no other parts of the task change.

In `@bin/build-base-image`:
- Around line 48-57: The script currently fails fast for missing packer but not
for Ansible; add a similar check for the ansible-playbook binary before running
packer init so builds that use the Ansible provisioner fail early. Specifically,
after the existing packer check (the command -v packer block) add a check using
command -v ansible-playbook >/dev/null 2>&1 and if it is missing, print an error
like "Error: ansible-playbook is required to build base AMIs" to stderr and exit
1; keep the rest of the flow (PROFILE -> AWS_PROFILE export and packer init
packer/dash-network-base.pkr.hcl) unchanged.

In `@terraform/aws/main.tf`:
- Around line 46-50: The locals currently reference data.aws_ami.ubuntu_amd and
ubuntu_arm unconditionally which forces those Canonical lookups into the graph
even when overrides are supplied; change the data "aws_ami" resources to be
conditional (use count = var.base_ami_amd64_id == "" ? 1 : 0 and count =
var.base_ami_arm64_id == "" ? 1 : 0) and update the locals (ubuntu_amd_ami_id,
ubuntu_arm_ami_id, main_host_ami_id) to index the conditional data (e.g.
data.aws_ami.ubuntu_amd[0].id) only in the fallback path so the ternary uses
var.base_ami_*_id when provided and only references data.aws_ami.*[0].id when
count == 1, preventing unnecessary Canonical lookups from being added to the
dependency graph.

In `@terraform/aws/variables.tf`:
- Around line 4-14: The variables base_ami_amd64_id and base_ami_arm64_id accept
any string today; add a Terraform validation block for each variable that allows
either an empty string or a valid AMI identifier (match e.g. regex
^ami-[0-9a-fA-F]+$ or startswith "ami-") so mistakes fail at plan time; update
the variable blocks for base_ami_amd64_id and base_ami_arm64_id to include a
validation { condition = ... error_message = "..." } enforcing "" or an ami-...
value.

---

Outside diff comments:
In `@ansible/deploy.yml`:
- Around line 378-399: The play "Set up core and platform on HP masternodes"
currently has gather_facts: true; change it to gather_facts: false and add the
dashmate_deploy tag to the play declaration so it follows the deploy playbook
contract; keep strategy: free as-is and, if any role (e.g., dash_cli, dashmate,
mn_status_report, metricbeat) truly needs specific facts, call
ansible.builtin.setup with an explicit gather_subset or invoke targeted
ansible.builtin.set_fact in those roles rather than enabling global gather_facts
for the play.

In `@ansible/roles/dashmate/tasks/ssl/zerossl.yml`:
- Around line 45-63: The current check only stats the private key file (task
"Check that ZeroSSL CSR and private key files exist" registering zero_ssl_files)
so a host with the private key but missing the CSR will skip the SSM restore;
update the task to verify existence of both
dashmate_zerossl_private_key_file_name and dashmate_zerossl_csr_file_name (e.g.
stat both files or loop the stat and register a combined result) and change the
when condition (used by the "Get ZeroSSL CSR and private key from SSM" task) to
only skip restore when both files exist, referencing the same registered
variable(s) (zero_ssl_files or new registration) and the same variable names
dashmate_zerossl_private_key_file_name and dashmate_zerossl_csr_file_name so the
SSM copy runs when either artifact is missing.

---

Nitpick comments:
In `@ansible/prebake-common.yml`:
- Around line 7-17: The pip package pin list (pip_install_packages) is
duplicated between prebake and deploy; extract the shared pins into a single
vars file (e.g., create a vars file holding pip_package and
pip_install_packages) and update both prebake and the matching play in deploy to
load that file via vars_files so both paths use the same source of truth; ensure
you update references to pip_package and pip_install_packages in the playbooks
to use the centralized vars file.

In `@packer/dash-network-base.pkr.hcl`:
- Around line 2-10: The required_plugins block currently uses open-ended
lower-bound constraints for the amazon and ansible plugins (symbols:
required_plugins, amazon, ansible, version), which risks unexpected changes;
update the version values to either a pinned tested version (e.g., "1.3.0") or a
bounded compatible range (e.g., ">= 1.3.0, < 2.0.0" or "~> 1.3.0") for both
amazon and ansible to ensure reproducible builds and stable behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ae25224d-0a6f-42f0-bb89-17cb620a87eb

📥 Commits

Reviewing files that changed from the base of the PR and between e46550c and f4639ac.

📒 Files selected for processing (32)
  • .github/workflows/build-base-images.yml
  • .gitignore
  • README.md
  • ansible/deploy.yml
  • ansible/group_vars/all
  • ansible/prebake-common.yml
  • ansible/roles/dashd/tasks/main.yml
  • ansible/roles/dashmate/defaults/main.yml
  • ansible/roles/dashmate/tasks/build.yml
  • ansible/roles/dashmate/tasks/logs.yml
  • ansible/roles/dashmate/tasks/main.yml
  • ansible/roles/dashmate/tasks/rolling_restart.yml
  • ansible/roles/dashmate/tasks/ssl/zerossl.yml
  • ansible/roles/dashmate/templates/dashmate.json.j2
  • ansible/roles/load_tool/tasks/main.yml
  • ansible/roles/metricbeat/tasks/main.yml
  • ansible/roles/mn_createprotx/tasks/main.yml
  • ansible/roles/mn_find_collateral/tasks/main.yml
  • ansible/roles/mn_init/tasks/main.yml
  • ansible/roles/mn_protx_config/tasks/main.yml
  • ansible/roles/mn_unban/tasks/main.yml
  • ansible/roles/status_dashboard/tasks/main.yml
  • bin/build-base-image
  • bin/deploy
  • flake.nix
  • lib/cli/ansible.sh
  • lib/configGenerator/generateTerraformConfig.js
  • packer/dash-network-base.pkr.hcl
  • terraform/aws/.terraform.lock.hcl
  • terraform/aws/instances.tf
  • terraform/aws/main.tf
  • terraform/aws/variables.tf

Comment thread .github/workflows/build-base-images.yml Outdated
Comment thread ansible/roles/dashmate/tasks/main.yml
Comment thread ansible/roles/dashmate/tasks/ssl/zerossl.yml Outdated
Comment thread bin/build-base-image
Comment thread terraform/aws/main.tf
Comment thread terraform/aws/variables.tf
@ktechmidas

Copy link
Copy Markdown
Contributor

@CodeRabbit review

@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants