homeserver-iac/roles/syncthing/tasks/main.yml

114 lines
2.9 KiB
YAML

- name: Install packages for syncthing
community.general.pacman:
name:
- python-lxml
state: present
- name: Wait for configuration file to be created
wait_for:
path: "{{ syncthing_conf_dir }}/config.xml"
- name: Configure globalannounce
xml:
file: "{{ syncthing_conf_dir }}/config.xml"
xpath: "/configuration/options/globalAnnounceEnabled"
value: "{{ syncthing_globalannounce | lower}}"
notify:
- Restart syncthing
- name: Configure localannounce
xml:
file: "{{ syncthing_conf_dir }}/config.xml"
xpath: "/configuration/options/localAnnounceEnabled"
value: "{{ syncthing_localannounce | lower}}"
notify:
- Restart syncthing
- name: Configure listen address
xml:
file: "{{ syncthing_conf_dir }}/config.xml"
xpath: "/configuration/options/listenAddress"
value: "{{ syncthing_listen }}"
notify:
- Restart syncthing
- name: Configure gui address
xml:
file: "{{ syncthing_conf_dir }}/config.xml"
xpath: "/configuration/gui/address"
value: "{{ syncthing_guiaddress }}"
notify:
- Restart syncthing
- name: Configure gui user
xml:
file: "{{ syncthing_conf_dir }}/config.xml"
xpath: "/configuration/gui/user"
value: "{{ syncthing_gui_user }}"
notify:
- Restart syncthing
- name: Configure gui password
xml:
file: "{{ syncthing_conf_dir }}/config.xml"
xpath: "/configuration/gui/password"
value: "{{ syncthing_gui_pass | password_hash('bcrypt', syncthing_gui_salt) }}"
notify:
- Restart syncthing
- name: Warn if gui password is empty
fail:
msg: "Syncthing has no configured password!"
when: syncthing_gui_pass is not defined or syncthing_gui_pass == ''
- name: Get API key
xml:
file: "{{ syncthing_conf_dir }}/config.xml"
xpath: "/configuration/gui/apikey"
content: text
register: api_key
- meta: flush_handlers
- name: Wait for Syncthing API port
wait_for:
port: 8384
- name: Delete default Syncthing folder
uri:
url: "http://{{ syncthing_guiaddress }}/rest/config/folders/default"
method: DELETE
return_content: yes
headers:
X-API-Key: "{{ api_key.matches[0].apikey }}"
- name: Add known syncthing devices
uri:
url: "http://{{ syncthing_guiaddress }}/rest/config/devices"
method: PUT
return_content: yes
body_format: json
headers:
X-API-Key: "{{ api_key.matches[0].apikey }}"
body: "{{ syncthing_devices }}"
- name: Set default folder settings
uri:
url: "http://{{ syncthing_guiaddress }}/rest/config/defaults/folder"
method: PATCH
return_content: yes
body_format: json
body: "{{ syncthing_defaults.folder }}"
headers:
X-API-Key: "{{ api_key.matches[0].apikey }}"
- name: Add syncthing folders
uri:
url: "http://{{ syncthing_guiaddress }}/rest/config/folders"
method: PUT
return_content: yes
body_format: json
headers:
X-API-Key: "{{ api_key.matches[0].apikey }}"
body: "{{ syncthing_folders }}"