98 lines
2.6 KiB
YAML
98 lines
2.6 KiB
YAML
- name: Hetzner
|
|
hosts: beepi
|
|
become: true
|
|
vars:
|
|
user: hetzner
|
|
user_home: /home/hetzner
|
|
|
|
hetzner_raid_mount: /home/beeshare/raid
|
|
hetzner_port: 23
|
|
|
|
hetzner_paths:
|
|
- src: /home/beeshare/raid/serverBackup
|
|
dest: ./beepi
|
|
- src: /home/beeshare/raid/foundry/backup
|
|
dest: ./foundry
|
|
|
|
# Fill in after creating the storage box sub-account, then re-run
|
|
hetzner_host: "u651287.your-storagebox.de"
|
|
hetzner_user: "u651287"
|
|
|
|
tasks:
|
|
- name: Install rsync
|
|
ansible.builtin.apt:
|
|
name: rsync
|
|
state: present
|
|
|
|
- name: Create user
|
|
ansible.builtin.user:
|
|
name: "{{ user }}"
|
|
home: "{{ user_home }}"
|
|
shell: /usr/sbin/nologin
|
|
create_home: true
|
|
|
|
- name: Create ssh directory
|
|
ansible.builtin.file:
|
|
path: "{{ user_home }}/.ssh"
|
|
state: directory
|
|
owner: "{{ user }}"
|
|
group: "{{ user }}"
|
|
mode: '0700'
|
|
|
|
- name: Generate ssh key
|
|
ansible.builtin.command:
|
|
cmd: "ssh-keygen -t ed25519 -N '' -C beepi-hetzner -f {{ user_home }}/.ssh/id_ed25519"
|
|
creates: "{{ user_home }}/.ssh/id_ed25519"
|
|
|
|
- name: Set key ownership
|
|
ansible.builtin.file:
|
|
path: "{{ user_home }}/.ssh/{{ item.name }}"
|
|
owner: "{{ user }}"
|
|
group: "{{ user }}"
|
|
mode: "{{ item.mode }}"
|
|
loop:
|
|
- name: id_ed25519
|
|
mode: '0600'
|
|
- name: id_ed25519.pub
|
|
mode: '0644'
|
|
|
|
- name: Scan storage box host key
|
|
ansible.builtin.command:
|
|
cmd: "ssh-keyscan -p {{ hetzner_port }} {{ hetzner_host }}"
|
|
register: hetzner_hostkey
|
|
changed_when: false
|
|
when: hetzner_host | length > 0
|
|
|
|
- name: Pin known hosts
|
|
ansible.builtin.copy:
|
|
dest: "{{ user_home }}/.ssh/known_hosts"
|
|
content: "{{ hetzner_hostkey.stdout }}\n"
|
|
owner: "{{ user }}"
|
|
group: "{{ user }}"
|
|
mode: '0600'
|
|
when: hetzner_host | length > 0
|
|
|
|
- name: Copy sync script
|
|
ansible.builtin.template:
|
|
src: hetznerSync.sh.j2
|
|
dest: /opt/backup/hetznerSync.sh
|
|
mode: '0700'
|
|
when: hetzner_host | length > 0
|
|
|
|
- name: Schedule daily sync
|
|
ansible.builtin.cron:
|
|
name: beepi hetzner sync
|
|
user: root
|
|
minute: '0'
|
|
hour: '7'
|
|
job: /opt/backup/hetznerSync.sh >> /var/log/beepi-backup.log 2>&1
|
|
when: hetzner_host | length > 0
|
|
|
|
- name: Debug
|
|
ansible.builtin.debug:
|
|
msg:
|
|
- "Test manually: sudo /opt/backup/hetznerSync.sh"
|
|
- "Read logs: sudo tail -50 /var/log/beepi-backup.log"
|
|
tags:
|
|
- always
|