|
@@ -1,7 +1,7 @@
|
|
|
## ADDED Requirements
|
|
## ADDED Requirements
|
|
|
|
|
|
|
|
### Requirement: Ansible inventory defines relay and landing server groups
|
|
### Requirement: Ansible inventory defines relay and landing server groups
|
|
|
-The inventory SHALL define two host groups: `relay` and `landing`, each containing the respective server's connection details (IP, SSH user, SSH key). The `ansible_user` SHALL be a configurable placeholder supporting both root and non-root users. The repository SHALL ship `inventory/hosts.yml.example` as a template; the actual `inventory/hosts.yml` SHALL be gitignored and created by the user.
|
|
|
|
|
|
|
+The inventory SHALL define two host groups: `relay` and `landing`, each containing the respective server's connection details (IP, SSH user, SSH key). The `ansible_user` SHALL be a configurable placeholder supporting both root and non-root users. The repository SHALL ship `inventory/hosts.yml.example` as a template; the actual `inventory/hosts.yml` SHALL be gitignored and created by the user. The `group_vars/all.yml` SHALL set `ansible_python_interpreter: auto` to enable interpreter auto-discovery on all hosts.
|
|
|
|
|
|
|
|
#### Scenario: Inventory is valid
|
|
#### Scenario: Inventory is valid
|
|
|
- **WHEN** the user copies `hosts.yml.example` to `hosts.yml` and fills in their values
|
|
- **WHEN** the user copies `hosts.yml.example` to `hosts.yml` and fills in their values
|
|
@@ -19,6 +19,10 @@ The inventory SHALL define two host groups: `relay` and `landing`, each containi
|
|
|
- **WHEN** the user has not copied `hosts.yml.example` to `hosts.yml`
|
|
- **WHEN** the user has not copied `hosts.yml.example` to `hosts.yml`
|
|
|
- **THEN** Ansible fails with an error indicating the inventory file is missing
|
|
- **THEN** Ansible fails with an error indicating the inventory file is missing
|
|
|
|
|
|
|
|
|
|
+#### Scenario: Python interpreter auto-discovery
|
|
|
|
|
+- **WHEN** Ansible connects to any managed host
|
|
|
|
|
+- **THEN** it uses auto-discovery to locate the Python interpreter instead of assuming `/usr/bin/python3`
|
|
|
|
|
+
|
|
|
### Requirement: Base packages are installed on all servers
|
|
### Requirement: Base packages are installed on all servers
|
|
|
The base role SHALL install essential packages: `curl`, `wget`, `vim`, `htop`, `unzip`, `ufw`, `fail2ban`, `unattended-upgrades`.
|
|
The base role SHALL install essential packages: `curl`, `wget`, `vim`, `htop`, `unzip`, `ufw`, `fail2ban`, `unattended-upgrades`.
|
|
|
|
|
|