95 lines
3.2 KiB
YAML
95 lines
3.2 KiB
YAML
|
- name: Install Storage Box mount dependencies
|
||
|
apt:
|
||
|
name: "{{ storage_box_package }}"
|
||
|
state: present
|
||
|
loop: "{{ storage_box_packages }}"
|
||
|
loop_control:
|
||
|
loop_var: storage_box_package
|
||
|
|
||
|
- name: Generate SSH key pair for storage box {{ storage_box_host }}
|
||
|
openssh_keypair:
|
||
|
path: "{{ ssh_config_dir }}/{{ storage_box_prefix }}"
|
||
|
type: ed25519
|
||
|
|
||
|
- name: Update SSH config file for storage box {{ storage_box_host }}
|
||
|
blockinfile:
|
||
|
path: "{{ ssh_config_dir }}/config"
|
||
|
block: |
|
||
|
Host {{ storage_box_host }}
|
||
|
{% if storage_box_username is defined %}
|
||
|
User {{ storage_box_username }}
|
||
|
{% endif %}
|
||
|
Port {{ storage_box_port }}
|
||
|
IdentityFile {{ ssh_config_dir }}/{{ storage_box_prefix }}
|
||
|
PreferredAuthentications publickey,password
|
||
|
marker: "# {mark} ANSIBLE MANAGED BLOCK {{ storage_box_host }}"
|
||
|
|
||
|
- name: Copy script to add OpenSSH public key through SFTP
|
||
|
copy:
|
||
|
src: sftp/push_public_key.sh
|
||
|
dest: /usr/local/bin/sftp_push_public_key
|
||
|
owner: root
|
||
|
group: root
|
||
|
mode: "755"
|
||
|
|
||
|
- name: Scan public keys for storage box {{ storage_box_host }}:{{ storage_box_port }}
|
||
|
command: ssh-keyscan -p {{ storage_box_port }} {{ storage_box_host }}
|
||
|
changed_when: no
|
||
|
register: _ssh_known_host
|
||
|
|
||
|
- name: Add backup host {{ storage_box_host }} in known hosts list
|
||
|
known_hosts:
|
||
|
name: |-
|
||
|
{%- if storage_box_port == 22 -%}
|
||
|
{{ storage_box_host }}
|
||
|
{%- else -%}
|
||
|
[{{ storage_box_host }}]:{{ storage_box_port }}
|
||
|
{%- endif -%}
|
||
|
key: "{{ _ssh_known_host.stdout }}"
|
||
|
state: present
|
||
|
|
||
|
- name: Push SSH public key to storage box {{ storage_box_host }}
|
||
|
when: storage_box_password is defined
|
||
|
command: sftp_push_public_key "{{ storage_box_host }}" "{{ ssh_config_dir }}/{{ storage_box_prefix }}.pub"
|
||
|
environment:
|
||
|
SSHPASS: "{{ storage_box_password }}"
|
||
|
changed_when:
|
||
|
- _storage_box_authorized.stdout is defined
|
||
|
- "'Public key added!' in _storage_box_authorized.stdout"
|
||
|
register: _storage_box_authorized
|
||
|
|
||
|
- name: Create backup endpoint {{ storage_box_path }} on {{ storage_box_host }}
|
||
|
shell: |
|
||
|
sftp {{ storage_box_host }} <<-EOF
|
||
|
mkdir "{{ storage_box_path }}"
|
||
|
EOF
|
||
|
changed_when: "'Couldn\\'t create directory' not in _backup_endpoint_created.stderr"
|
||
|
register: _backup_endpoint_created
|
||
|
|
||
|
- name: Create AutoFS config file for storage box {{ storage_box_host }} (SSHFS)
|
||
|
lineinfile:
|
||
|
path: /etc/auto.backup.{{ storage_box_prefix }}
|
||
|
regex: "^{{ storage_box_mount.path }} "
|
||
|
line: |
|
||
|
{{ storage_box_mount.path }} -fstype=fuse,{{ storage_box_mount.options | join(',') }},uid={{ storage_box_mount.owner }},gid={{ storage_box_mount.group }} :sshfs\#{{ storage_box_host }}\:{{ storage_box_path }}
|
||
|
state: present
|
||
|
create: yes
|
||
|
notify: reload autofs
|
||
|
|
||
|
- name: Add AutoFS config file into main AutoFS config
|
||
|
lineinfile:
|
||
|
path: /etc/auto.master
|
||
|
regexp: '^/- /etc/auto.backup'
|
||
|
line: /- /etc/auto.backup.{{ storage_box_prefix }} --timeout=90,--ghost
|
||
|
state: present
|
||
|
notify: reload autofs
|
||
|
|
||
|
- name: Start AutoFS service
|
||
|
service:
|
||
|
name: autofs
|
||
|
state: started
|
||
|
enabled: yes
|
||
|
register: autofs_started
|
||
|
|
||
|
- name: Trigger AutoFS handlers
|
||
|
meta: flush_handlers
|