Skip to content

Instantly share code, notes, and snippets.

@oneyb
Last active July 24, 2018 09:19
Show Gist options
  • Save oneyb/53d6aca22c34a27a663326189eb27b81 to your computer and use it in GitHub Desktop.
Save oneyb/53d6aca22c34a27a663326189eb27b81 to your computer and use it in GitHub Desktop.
A nice little playbook to get ansible to set up syncthing for oneself on an SSH-accessible computer. Depends on @classicsc's nice python module: https://github.com/classicsc/syncthingmanager. Thanks alot!
---
- hosts: all
# run this: ansible-playbook -i lil_box.local, -u $USER .configure-syncthing.yaml --ask-become-pass
# beforehand you need to:
# ssh-copy-id -i $remoteserver
# as well as:
# ssh-copy-id -i localhost
vars:
sync_dir: "{{ ansible_env.HOME }}/Sync"
tasks:
- name: install necessary packages
apt: pkg={{ item }} update_cache=yes cache_valid_time=3600
become: yes
with_items:
- syncthing
- name: install pip3 packages
pip: name={{ item }} extra_args="--upgrade" executable=pip3
become: yes
with_items:
- syncthingmanager
- name: configure device
command: stman configure
args:
creates: "{{ ansible_env.HOME }}/.config/syncthingmanager/syncthingmanager.conf"
- name: get locally configured devices
shell: stman device list
delegate_to: localhost
register: local_devices
- name: get remotely configured devices
command: stman device list
register: remote_devices
- name: get DEVICEIDs
set_fact:
lil_box_deviceid: "{{ remote_devices.stdout_lines[1].split()[1] }}"
big_box_deviceid: "{{ local_devices.stdout_lines[1].split()[1] }}"
- name: investigate
debug:
var: lil_box_deviceid
# var: local_devices
- name: investigate
debug:
msg: "Already added {{ big_box_deviceid }} remotely"
when: big_box_deviceid in remote_devices.stdout
- name: add {{ big_box_deviceid }}
command: stman device add -i {{ big_box_deviceid }}
register: res_big_box
when: big_box_deviceid not in remote_devices.stdout
- name: add default folder remotely
command: stman folder add {{ sync_dir }} default
args:
creates: "{{ sync_dir }}"
- name: add remote device locally
shell: stman device add {{ lil_box_deviceid }}
delegate_to: localhost
register: res_local
when: lil_box_deviceid not in local_devices.stdout
- name: get shared local folders
shell: stman folder list
delegate_to: localhost
register: local_folders
- name: share local default folder remote device
shell: stman folder share default {{ lil_box_deviceid }}
delegate_to: localhost
when: "ansible_hostname not in local_folders.stdout_lines[1]"
# when: lil_box_deviceid in local_devices.stdout or res_local.failed is defined and not res_local.failed
- name: restart syncthing
systemd: name=syncthing state=restarted enabled=yes user=yes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment