You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The deployer currently accepts a custom SSH port configuration in the environment JSON file (ssh_credentials.port), and this value is correctly propagated to firewall rules, Ansible inventory, and all connection attempts. However, the SSH service (sshd) on the remote instance is never reconfigured to listen on the custom port - it continues listening only on the default port 22.
This creates a critical configuration mismatch where the provision command fails immediately after VM creation because Ansible cannot connect to the instance on the configured custom port.
Overview
The deployer currently accepts a custom SSH port configuration in the environment JSON file (
ssh_credentials.port), and this value is correctly propagated to firewall rules, Ansible inventory, and all connection attempts. However, the SSH service (sshd) on the remote instance is never reconfigured to listen on the custom port - it continues listening only on the default port 22.This creates a critical configuration mismatch where the
provisioncommand fails immediately after VM creation because Ansible cannot connect to the instance on the configured custom port.Specification
See detailed specification: docs/issues/configure-ssh-service-port.md
(Link will be updated after file rename with issue number)
Reproduction Evidence
Manual testing confirmed:
ss -tlnp)WaitSshConnectivitywith "Connection refused"Full reproduction details in specification document.
🏗️ Architecture Requirements
DDD Layer: Application Layer (Steps) + Infrastructure Layer (Ansible playbook template)
Module Path:
src/application/steps/system/configure_ssh_port.rstemplates/ansible/configure-ssh-port.ymlPattern: Step (Application) + Ansible Playbook (Infrastructure)
Module Structure Requirements
src/application/steps/system/templates/ansible/(static, no.teraextension)AnsibleClientto execute the playbookArchitectural Constraints
tracingcrateImplementation Plan
Phase 1: Create Ansible Playbook (1-2 hours)
templates/ansible/configure-ssh-port.ymlansible_port: 22to connect initiallyPhase 2: Register Playbook (15 minutes)
src/infrastructure/external_tools/ansible/template/renderer/project_generator.rscopy_static_templatesmethodPhase 3: Create Application Step (1 hour)
src/application/steps/system/configure_ssh_port.rsconfigure_firewall.rsPhase 4: Update Domain State (30 minutes)
ConfigureSshPorttoConfigureStepenumPhase 5: Integrate into Configure Command (1 hour)
execute_configuration_with_trackingin configure handlerPhase 6: Testing (2-3 hours)
Phase 7: Documentation (1 hour)
Estimated Total Time: 8-10 hours
Acceptance Criteria
Quality Checks:
./scripts/pre-commit.shFunctional Requirements:
configure-ssh-port.ymlexists and is registered/etc/ssh/sshd_configwith correct portConfigureSshPortStepexists and is integratedConfigureStepenum includesConfigureSshPortvariantConditional Execution:
Testing Requirements:
Error Handling:
Documentation:
Related