Docs : ssh-config-export
SSH Config Export
RackPeek can generate a ready-to-use ~/.ssh/config file from your modeled infrastructure.
That means:
- No manually editing SSH config
- No memorizing IP addresses
- Just
ssh vm-nameand go - RackPeek stays your single source of truth
Works natively on macOS and Linux.
1. Make a Resource SSH-Ready
A resource will be included in the SSH export if it has an address.
At minimum, define one of:
labels:
ip: 192.168.1.20
or
labels:
hostname: server01.local
If you already use Ansible:
labels:
ansible_host: 192.168.1.20
If no address is found, the resource is skipped.
2. Optional SSH Settings
You can control how SSH connects using labels:
labels:
ip: 192.168.1.20
ssh_user: ubuntu
ssh_port: 2222
ssh_identity_file: ~/.ssh/id_rsa
If ssh_user or ssh_port are missing, RackPeek falls back to:
ansible_useransible_port- CLI defaults (if provided)
3. Example Resource
- kind: System
type: vm
name: vm-web01
tags:
- prod
- linux
labels:
ip: 192.168.1.20
ssh_user: ubuntu
4. What Gets Generated
Host vm-web01
HostName 192.168.1.20
User ubuntu
IdentityFile ~/.ssh/id_rsa
Now you can connect with:
ssh vm-web01
No IP address needed.
5. Filtering by Tags
You can export only specific systems:
rpk export ssh --include-tags prod
Only resources tagged prod will be included.
6. CLI Example
rpk export ssh \
--include-tags prod,linux \
--default-user ubuntu \
--default-port 22 \
--default-identity ~/.ssh/id_rsa \
--output ssh_config
7. Apply the Config
Append to your existing SSH config:
cat ssh_config >> ~/.ssh/config
Or replace it:
mv ssh_config ~/.ssh/config
chmod 600 ~/.ssh/config
Permissions must be 600, or SSH will ignore the file.
8. How Naming Works
By default, each host alias is the resource name:
Host vm-web01
RackPeek automatically:
- Lowercases names
- Replaces spaces with
- - Removes unsupported characters
Example:
vm web 01
Becomes:
vm-web-01
9. Fallback Logic (Simple Version)
RackPeek resolves values in this order:
Address
iphostnameansible_host
User
ssh_useransible_user- CLI default
Port
ssh_portansible_port- CLI default
Identity
ssh_identity_file- CLI default
10. Best Practices
- Always define an
iporhostname - Prefer
ssh_userover reusing unrelated labels - Use tags like
prod,staging,linuxfor filtering - Keep resource names clean and predictable
11. Example Final Output
Host vm-db01
HostName 192.168.1.30
User postgres
Port 2222
IdentityFile ~/.ssh/id_rsa
Host vm-web01
HostName 192.168.1.20
User ubuntu
IdentityFile ~/.ssh/id_rsa
And that’s it:
ssh vm-db01
ssh vm-web01