56 lines
1.7 KiB
YAML
56 lines
1.7 KiB
YAML
|
---
|
||
|
|
||
|
- name: Ensure ssh config dir exists
|
||
|
delegate_to: localhost
|
||
|
become: false
|
||
|
ansible.builtin.file:
|
||
|
path: "{{ lookup('env', 'HOME') }}/.ssh/conf.d/{{ sshd.config_path }}"
|
||
|
state: directory
|
||
|
owner: "{{ lookup('env', 'USER') }}"
|
||
|
group: "{{ lookup('env', 'USER') }}"
|
||
|
mode: '0700'
|
||
|
|
||
|
- name: Generate local SSH key pair
|
||
|
delegate_to: localhost
|
||
|
become: false
|
||
|
community.crypto.openssh_keypair:
|
||
|
backend: opensshbin
|
||
|
comment: "{{ ansible_user }}@{{ static_fqdn }}"
|
||
|
mode: '0600'
|
||
|
passphrase: "{{ ssh_keygen_passphrase }}"
|
||
|
path: "{{ lookup('env', 'HOME') }}/.ssh/conf.d/{{ sshd.config_path }}/{{ static_fqdn }}"
|
||
|
regenerate: full_idempotence
|
||
|
size: 521
|
||
|
state: present
|
||
|
type: ecdsa
|
||
|
register: ssh_keygen
|
||
|
|
||
|
- name: Copy SSH pubkey to target
|
||
|
ansible.posix.authorized_key:
|
||
|
key: "{{ ssh_keygen.public_key }}"
|
||
|
user: "{{ ansible_user }}"
|
||
|
state: present
|
||
|
|
||
|
- name: Add local ssh client config
|
||
|
delegate_to: localhost
|
||
|
become: false
|
||
|
community.general.ssh_config:
|
||
|
host: "{{ sshd.nickname | default(omit) }} {{ static_fqdn }}"
|
||
|
hostname: "{{ static_fqdn }}"
|
||
|
identity_file: "{{ ssh_keygen.filename }}"
|
||
|
port: "{{ sshd.listen.port | default('22') }}"
|
||
|
remote_user: "{{ ansible_user }}"
|
||
|
ssh_config_file: "{{ lookup('env', 'HOME') }}/.ssh/conf.d/{{ sshd.config_path }}/{{ static_fqdn }}.conf"
|
||
|
state: present
|
||
|
|
||
|
- name: Include generated ssh config in default config file
|
||
|
delegate_to: localhost
|
||
|
become: false
|
||
|
ansible.builtin.lineinfile:
|
||
|
path: "{{ lookup('env', 'HOME') }}/.ssh/config"
|
||
|
line: "Include {{ lookup('env', 'HOME') }}/.ssh/conf.d/{{ sshd.config_path }}/{{ static_fqdn }}.conf"
|
||
|
mode: '0600'
|
||
|
state: present
|
||
|
create: true
|
||
|
insertafter: ^Include\s.*$
|