From fbfa8c7204189c026a03e2ccce4bde4a0c72605e Mon Sep 17 00:00:00 2001
From: Alexandre Iooss <erdnaxe@crans.org>
Date: Mon, 22 Apr 2019 13:19:24 +0200
Subject: [PATCH] [backup] Implement rsyncd

---
 backup.yml                                  |  7 +++
 group_vars/all/vault.yml                    | 63 +++++++++++----------
 roles/rsync-client/tasks/main.yml           | 32 +++++++++++
 roles/rsync-client/templates/rsyncd.conf.j2 | 44 ++++++++++++++
 4 files changed, 116 insertions(+), 30 deletions(-)
 create mode 100644 backup.yml
 create mode 100644 roles/rsync-client/tasks/main.yml
 create mode 100644 roles/rsync-client/templates/rsyncd.conf.j2

diff --git a/backup.yml b/backup.yml
new file mode 100644
index 00000000..1b991d86
--- /dev/null
+++ b/backup.yml
@@ -0,0 +1,7 @@
+---
+# Playbook to deploy backup client
+- hosts: all
+  vars:
+    backuppc_rsyncd_passwd: "{{ vault_backuppc_rsyncd_passwd }}"
+  roles:
+    - rsync-client
diff --git a/group_vars/all/vault.yml b/group_vars/all/vault.yml
index 0e007106..a9c81389 100644
--- a/group_vars/all/vault.yml
+++ b/group_vars/all/vault.yml
@@ -1,31 +1,34 @@
 $ANSIBLE_VAULT;1.1;AES256
-31333537633064326436386262343965626135306366386437666635613839333364336366356535
-3862663966643462663662616166656366366266326539380a303932616262336461653832363163
-31393964376632623462333964666533333639393631393865343062393135653937663063616135
-3763666336383136300a636662616534323639623663303730653230323330343366616235393239
-37666335393532623732336135633331306136323766323866313138643830386461303839623234
-37623031346638323061346666396632663036643964666130633131393632306165646438633030
-62383064643963643539353039373131336333343230663863653433653466643734313566383566
-66653664303031626562366430623336613363343130373063313463386631616235316663613664
-63353836626231376230356237313036373934663563326131613866323932663464633133316565
-64376261313435306265336666326264663933333138346437343063313932626633306533303135
-64336531313864656234396232373437626132333932336337643562313730323865343433326138
-39376438363132396439656532616161376639363663636264646366646530663139666334343637
-66313161363661623636336165356139333966396138336465643264323261363236353631316562
-36343135393062336633626439666332653462343438656566323236616131653463333738396530
-61633439663661386635373437343564303231363862356439343839393037393961643866666130
-37646435373966373662666263333561326365333530373333373633653539643334323762393533
-63393537643138376465623230613530393235616566663534333033643430643263323464616133
-38626333306263313139396635323732646561366334313639366162656435393230333664646330
-33333137373538666136643363636366333730313033356561366564383563393837396266306264
-33383966663132376235333037653861353265346338396633376363393062633033653065343539
-36663561393365623336653036633039316235396134303137353565653365613831333364663961
-33336134666662336162386635393432346138313137386561373731393033323733663663373639
-32656636646361303833313835323032356633333861636533333061646461366632633037333863
-64353638613236363063363136393338646361303066333837356664333834336465343565633461
-30316164333133306166366534643962303766626663326366376234376138353837353263646437
-32643734343530643035393938643663633537323134316263666362333564303234316535383936
-39633237643061656230633837356230323263343265643162323536633432633936633330323830
-32663932313431353837356139306631376466633861313663376237336438366637333862366134
-61303136643536363535376262346639346361366161323934336230633861376433366138343937
-3366396137633132316239623437633131323765383239653031
+63636535353833663737346463323366633264356662383235363231613431363038646435343830
+3836363934663864356666366161353231343033353665610a636230343963386538336635376361
+38333931393362353463383939666230393361613466666236666532613161323839633838383132
+3638356236663536300a373833303062653534346161613634393661363638363963316463626539
+30393564633462363831623234313961656661646635303435316338336566623962353539656631
+35623465313036653832613565656161303633376531346337316436366435633461383733316530
+61333262353935323732646239366161346634616233613166306430386537346632333030626335
+34326239666461613530663466303239373466373631643962313731653136393361633963383566
+32363532323437333862623466373734663561383637326537323464383334303337323861333862
+63366631346461393732633038383438383039353763306365313666393730633836653965643537
+65373362303631646630366439633464356635616533366563633764356564333538373638363964
+31613230643138313738383661376363313739336463353838653162306336343534343464396330
+39353336633430373361356366323330393739303234383935616530326264393464336433363865
+39306666636137343764333466343063373263326239303139666362373332393934303235613366
+32373331333232376332613931333133363536313163366536633539306464616137666561313863
+35656430663461353464376335396465303634393835303935393062373366303664663838373734
+36623435636535393561323735366564306464646532323139616237656530353436356635373366
+61396464626432653731323138643462306432353932313263346561663336313066396162323230
+30623561393665336634353364376138666533666235316137353238383235313261303235663534
+64623963653633306339643866646638633465663433336239383264393463373739393235636337
+61313838666466373561363065636635623835623239316132623565613532333364313863363234
+63616465633966336164306566646265613563643631363038343231373861643737323533646432
+62316631333763393463353963383761356333326231616131353063653064306264623235616534
+34626266313737363161653039663832613336626465333566616266366536613532623935323933
+66396437326561663564633261646538613733623632336234656663633935376562346237373732
+32643764313966333130316137346566396636343836623266333231383336393564326663343530
+39333961333639346437623030313930333062646265363737613632333537636632396164613132
+36623039313663643962663963643231396235656536373835386264336161633738633863656132
+38386538336439316230646531653064366535616536643264316634616265346638666333633661
+65303531643133323464616661656134346337643135313833623763363466653965356664363332
+30316563613739363834306236363162623562343237303737333964353632653062343634643234
+61306336343832393866353136303837613766636335663033616437636531393363636261323566
+6562
diff --git a/roles/rsync-client/tasks/main.yml b/roles/rsync-client/tasks/main.yml
new file mode 100644
index 00000000..618be2e7
--- /dev/null
+++ b/roles/rsync-client/tasks/main.yml
@@ -0,0 +1,32 @@
+---
+- name: Install rsync
+  apt:
+    update_cache: true
+    name: rsync
+  register: apt_result
+  retries: 3
+  until: apt_result is succeeded
+
+- name: Enable rsync daemon
+  lineinfile:
+    path: /etc/default/rsync
+    regexp: '^RSYNC_ENABLE'
+    line: RSYNC_ENABLE=true
+
+- name: Configure rsyncd
+  template:
+    src: rsyncd.conf.j2
+    dest: /etc/rsyncd.conf
+    mode: 0644
+
+- name: Copy rsyncd secrets
+  copy:
+    content: "backupcrans:{{ backuppc_rsyncd_passwd }}"
+    dest: /etc/rsyncd.secrets
+    mode: 0600
+
+- name: Start rsync service
+  systemd:
+    name: rsync
+    enabled: true
+    state: started
diff --git a/roles/rsync-client/templates/rsyncd.conf.j2 b/roles/rsync-client/templates/rsyncd.conf.j2
new file mode 100644
index 00000000..a734c54e
--- /dev/null
+++ b/roles/rsync-client/templates/rsyncd.conf.j2
@@ -0,0 +1,44 @@
+# {{ ansible_managed }}
+
+# GLOBAL OPTIONS
+log file=/var/log/rsyncd
+# for pid file, dont' use /var/run/rsync.pid unless you're not going to run
+# rsync out of the init.d script. The /var/run/rsyncd.pid below is OK.
+pid file=/var/run/rsyncd.pid
+syslog facility=daemon
+
+uid = root
+gid = root
+use chroot = no
+read only = yes
+# On ne liste pas les modules
+list = no
+#max connections=2
+ignore errors = no
+ignore nonreadable = yes
+# ne loggue pas tous les fichiers
+transfer logging = no 
+dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
+# verifie les droits de /etc/rsyncd.secrets
+strict modes = yes
+# personne n'accede aux modules par defaut
+hosts deny = *
+
+# MODULE OPTIONS
+
+{# Liste des dossiers a sauvegarder par serveur, en plus de la racine. #}
+[var]
+path = /var
+auth users = backupcrans
+secrets file = /etc/rsyncd.secrets
+hosts allow = zephir.adm.crans.org 10.231.136.6
+
+[slash]
+path = /
+auth users = backupcrans
+secrets file = /etc/rsyncd.secrets
+hosts allow = zephir.adm.crans.org 10.231.136.6
+
+{# TODO: implémenter le vrai système comme dans BCFG2 #}
+{# TODO: implémenter le cas particulier de main-ftp-server, cpasswords-main et wiki #}
+
-- 
GitLab