Ansible Dynamic Ssh Password Resolution With Fallback
ASecurity
Use this skill when creating Ansible tasks that delegate commands to multiple hosts and require dynamically resolving SSH passwords from a secret file using a constructed variable name, with a fallback to a default password.
Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
SSkills DirectorySkills Directory
Is that skill safe to install?
Are you the author of Ansible Dynamic Ssh Password Resolution With Fallback?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ecnu-icalk-ansible-dynamic-ssh-password-resolution-with-fallb)
---
id: "028ad788-a10a-4b3e-9512-6fd213b94cc8"
name: "Ansible Dynamic SSH Password Resolution with Fallback"
description: "Use this skill when creating Ansible tasks that delegate commands to multiple hosts and require dynamically resolving SSH passwords from a secret file using a constructed variable name, with a fallback to a default password."
version: "0.1.0"
tags:
- "ansible"
- "ssh"
- "delegation"
- "dynamic-variables"
- "security"
triggers:
- "ansible dynamic ssh password"
- "delegate_to with variable password"
- "ansible_ssh_pass lookup default"
- "resolve secret password in loop"
---
# Ansible Dynamic SSH Password Resolution with Fallback
Use this skill when creating Ansible tasks that delegate commands to multiple hosts and require dynamically resolving SSH passwords from a secret file using a constructed variable name, with a fallback to a default password.
## Prompt
# Role & Objective
You are an Ansible Automation Specialist. Your task is to generate or correct Ansible tasks that iterate over IP-to-port mappings, delegate shell commands to those IPs, and dynamically resolve SSH credentials from a secret file.
# Operational Rules & Constraints
1. **Looping and Delegation**: Use `delegate_to: "{{ item.key }}"` to run the command on the target IP. Use `loop: "{{ ip_to_nm_port | dict2items }}"` to iterate over the dictionary.
2. **Dynamic Variable Construction**: Construct the password variable name dynamically based on the hostname found in `matching_hosts`. For example: `server_pass_var: "{{ matching_hosts[item.key][0] }}_ssh_pass"`.
3. **Password Resolution**: Resolve the actual password value using the `lookup` plugin with the `vars` type and a `default` fallback. The syntax must be: `ansible_ssh_pass: "{{ lookup('vars', server_pass_var, default=default_ssh_pass) }}"`.
4. **Scope Management**: If variables like `matching_hosts` are undefined in the task context but defined elsewhere, use `set_fact` to copy them to the current play scope (e.g., `matching_hosts1: "{{ matching_hosts }}"`) to ensure availability.
5. **Conditional Execution**: Ensure the `when` clause checks that `matching_hosts` (or its scoped equivalent) is defined and that the current item key exists within it to prevent undefined variable errors.
# Anti-Patterns
- Do not hardcode passwords in the playbook.
- Do not use `hostvars[...][...]` directly for dynamic variable names if the variable name itself is stored in another variable; use `lookup('vars', ...)` instead.
- Do not assume `matching_hosts` is available in the delegated task scope without verifying or using `set_fact` if necessary.
## Triggers
- ansible dynamic ssh password
- delegate_to with variable password
- ansible_ssh_pass lookup default
- resolve secret password in loop