blob: 77dce1d1681e1629cc8aa73b99912dcb28125bc4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
---
- name: install rsync
apt:
name: rsync
state: present
- name: make sure sync client config directory exists
file:
path: "/etc/whawty/auth/.store-{{ whawty_auth_store.name }}-sync"
state: directory
- name: generate ssh config for whawty-auth store sync client
copy:
content: |
Host whawty-auth-server
Hostname {{ whawty_auth_store.sync.hostname }}
{% if 'port' in whawty_auth_store.sync %}
Port {{ whawty_auth_store.sync.port }}
{% endif %}
User {{ whawty_auth_store.sync.user }}
IdentityFile /etc/whawty/auth/.store-{{ whawty_auth_store.name }}-sync/id_ed25519
IdentitiesOnly yes
UserKnownHostsFile /etc/whawty/auth/.store-{{ whawty_auth_store.name }}-sync/known_hosts
ControlMaster auto
ControlPath /run/ssh-master.whawty-auth-store-sync-{{ whawty_auth_store.name }}
ControlPersist 300
dest: "/etc/whawty/auth/.store-{{ whawty_auth_store.name }}-sync/ssh_config"
- name: generate ssh keypair for sync client
openssh_keypair:
path: /etc/whawty/auth/.store-{{ whawty_auth_store.name }}-sync/id_ed25519
type: ed25519
comment: "whawty-auth-sync-{{ whawty_auth_store.name }}@{{ inventory_hostname }}"
- name: generate sync script
copy:
content: |
#!/bin/bash
{% set rsync_args = [] %}
{% if 'permissions' in whawty_auth_store %}
{% if 'file-mode' in whawty_auth_store.permissions %}
{% set _dummy = rsync_args.append(" --chmod=F"~whawty_auth_store.permissions['file-mode']) %}
{% endif %}
{% if 'owner' in whawty_auth_store.permissions %}
{% set _dummy = rsync_args.append(" --chown="~whawty_auth_store.permissions.owner~":"~whawty_auth_store.permissions.group) %}
{% endif %}
{% endif %}
while true; do
/usr/bin/rsync -rtW --delete --delete-delay --delay-updates --partial-dir=.tmp{{ rsync_args | join('') }} -e 'ssh -F "/etc/whawty/auth/.store-{{ whawty_auth_store.name }}-sync/ssh_config"' 'rsync://whawty-auth-server/store' '{{ whawty_auth_store.config.basedir }}'
sleep 60
done
dest: /etc/whawty/auth/.store-{{ whawty_auth_store.name }}-sync/run.sh
mode: 0755
- name: generate known_hosts file
shell: "ssh-keyscan{% if 'port' in whawty_auth_store.sync %} -p {{ whawty_auth_store.sync.port }}{% endif %} {{ whawty_auth_store.sync.hostname }} > /etc/whawty/auth/.store-{{ whawty_auth_store.name }}-sync/known_hosts"
args:
creates: "/etc/whawty/auth/.store-{{ whawty_auth_store.name }}-sync/known_hosts"
- name: install systemd units for whawty-auth store sync client
template:
src: "systemd.service.j2"
dest: "/etc/systemd/system/whawty-auth-store-sync-{{ whawty_auth_store.name }}.service"
- name: make sure whawty-auth store sync client is enabled and started
systemd:
daemon_reload: yes
name: "whawty-auth-store-sync-{{ whawty_auth_store.name }}.service"
state: started
enabled: yes
|