Add autossh role

This commit is contained in:
2019-12-01 20:40:12 -06:00
parent f99c956212
commit e13a935f80
6 changed files with 172 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
---
- set_fact:
key_path: "{{ autossh_user_home }}/.ssh/{{ item }}"
- name: "install private key ({{ item }})"
copy:
dest: "{{ autossh_user_home }}/.ssh/{{ item }}"
content: "{{ lookup('vars', 'autossh_private_key_' + item) }}"
owner: "{{ autossh_user }}"
group: "{{ autossh_group }}"
mode: 0600
when: lookup('vars', 'autossh_private_key_' + item, default='') | length
- name: "determine if private key exists ({{ item }})"
stat:
path: "{{ key_path }}"
register: priv_key
- name: "determine if public key exists ({{ item }}.pub)"
stat:
path: "{{ key_path }}.pub"
register: pub_key
- name: "derive public key ({{ item }})"
shell: "ssh-keygen -y -f {{ key_path }} > {{ key_path }}.pub"
when:
- not pub_key.stat.exists
- priv_key.stat.exists

View File

@@ -0,0 +1,80 @@
---
- name: "create {{ autossh_user }} user"
user:
name: "{{ autossh_user }}"
comment: "{{ autossh_user_comment }}"
password: "{{ autossh_user_password }}"
#password_lock: yes
shell: "{{ autossh_user_shell }}"
generate_ssh_key: yes
state: "{{ autossh_user_state }}"
system: yes
skeleton: /dev/null
- name: "manage keys {{ item }}"
include: keys.yaml
loop:
- id_dsa
- id_ecdsa
- id_ed25519
- id_rsa
- name: create directories
file:
path: "{{ item }}"
owner: root
group: root
mode: 0755
state: directory
loop:
- "{{ autossh_etc_path }}"
- "{{ autossh_run_path }}"
- name: install package
package:
name: "{{ autossh_package_name }}"
state: "{{ autossh_package_state }}"
- name: manage keys "{{ item }}"
include: keys.yaml
loop:
- id_dsa
- id_ecdsa
- id_ed25519
- id_rsa
- name: manage authorized keys
authorized_key:
user: "{{ autossh_user }}"
key: "{{ item.key }}"
comment: "{{ item.comment | default(omit) }}"
state: "{{ item.state | default('present') }}"
loop: "{{ autossh_authorized_keys | default([]) }}"
- name: configure systemd unit
template:
src: autossh.service.j2
dest: "{{ autossh_systemd_unit_path }}"
owner: root
group: root
mode: 0644
notify:
- reload autossh instances
- autossh daemon-reload
when: ansible_service_mgr == 'systemd'
- name: configure autossh tunnels
template:
src: autossh.j2
dest: "{{ autossh_etc_path }}/{{ item.name }}"
owner: root
group: root
mode: 0644
loop: "{{ autossh_config | default([]) }}"
notify: reload autossh instances
- name: manage services
service:
name: "autossh@{{ item.name }}.service"
state: "{{ item.state | default('started') }}"
enabled: "{{ item.enabled | default(true) }}"
loop: "{{ autossh_config | default([]) }}"