From 5ac35429e64b93adf3207f2e60d13e60e13de7a8 Mon Sep 17 00:00:00 2001 From: Rustem Bapin Date: Tue, 25 Feb 2020 23:05:36 +0400 Subject: [PATCH 1/2] Add syncing sysvol with osync --- defaults/main.yml | 8 +++++ tasks/main.yml | 4 +++ tasks/sysvol_sync.yml | 56 +++++++++++++++++++++++++++++++++++ templates/osync.conf | 68 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 136 insertions(+) create mode 100644 tasks/sysvol_sync.yml create mode 100644 templates/osync.conf diff --git a/defaults/main.yml b/defaults/main.yml index 1e40df1..5d14458 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -34,3 +34,11 @@ samba_cl_packages: - sssd-ad - task-auth-ad-sssd - sshpass + +samba_sysvol_replica_required_vars: + - samba_sysvol_sync_source + - samba_sysvol_sync_targets + - samba_sysvol_sync_timeout + +samba_sysvol_replica_packages: + - osync diff --git a/tasks/main.yml b/tasks/main.yml index 2bb6689..f621b5f 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -73,6 +73,10 @@ include_tasks: client.yml when: samba_flavor == 'client' +- name: configure sysvol sync + include_tasks: sysvol_sync.yml + when: samba_sysvol_sync is defined and samba_sysvol_sync and (samba_flavor == 'master' or samba_flavor == 'replica') + - name: refresh kerberos key shell: echo {{samba_admin_pass}} | kinit administrator@{{samba_realm|upper}} changed_when: false diff --git a/tasks/sysvol_sync.yml b/tasks/sysvol_sync.yml new file mode 100644 index 0000000..93550a9 --- /dev/null +++ b/tasks/sysvol_sync.yml @@ -0,0 +1,56 @@ +--- +- name: check required variables + fail: msg="{{ item }} is not defined" + when: item not in vars + with_items: "{{ samba_sysvol_replica_required_vars }}" + +- name: install samba sysvol replica + apt_rpm: + pkg: "{{samba_sysvol_replica_packages | join(',')}}" + state: installed + when: samba_sysvol_replica_packages | length > 0 + +- name: generate ssh key for osync connections + shell: ssh-keygen -t ed25519 -f .tmp/osync_sysvol -C "" -N "" + args: + creates: .tmp/osync_sysvol + delegate_to: localhost + become: false + +- block: + - name: generate config for osync + template: + src: osync.conf + dest: "/etc/osync/sync-{{item}}.conf" + with_items: "{{samba_sysvol_sync_targets}}" + + - name: register target hosts fingerprints + shell: + "ssh-keyscan {{item}} >> ~{{samba_sysvol_sync_target_user}}/.ssh/known_hosts" + with_items: "{{samba_sysvol_sync_targets}}" + + - name: put private key to the node + copy: + src: .tmp/osync_sysvol + dest: "{{samba_sysvol_sync_ssh_key}}" + owner: "{{samba_sysvol_sync_target_user}}" + mode: 0400 + + - name: register osync in crontab + cron: + name: "OSync for {{item}}'s sysvol" + minute: "*/{{samba_sysvol_sync_timeout}}" + job: "/usr/bin/osync.sh /etc/osync/sync-{{item}}.conf --silent" + with_items: "{{samba_sysvol_sync_targets}}" + + - name: enable and start crond service + service: + name: crond + enabled: true + state: started + + when: inventory_hostname_short == samba_sysvol_sync_source + +- name: register public key for osync + shell: echo "{{ lookup('file', '.tmp/osync_sysvol.pub') }}" >> /root/.ssh/authorized_keys + when: inventory_hostname_short in samba_sysvol_sync_targets diff --git a/templates/osync.conf b/templates/osync.conf new file mode 100644 index 0000000..9924a10 --- /dev/null +++ b/templates/osync.conf @@ -0,0 +1,68 @@ +INSTANCE_ID="sysvol_sync" +INITIATOR_SYNC_DIR="/var/lib/samba/sysvol" +TARGET_SYNC_DIR="ssh://{{samba_sysvol_sync_target_user}}@{{item}}//var/lib/samba/sysvol" +SSH_RSA_PRIVATE_KEY="{{samba_sysvol_sync_ssh_key}}" +SSH_PASSWORD_FILE="" +#_REMOTE_TOKEN=SomeAlphaNumericToken9 +CREATE_DIRS=yes +LOGFILE="" +MINIMUM_SPACE=10240 +BANDWIDTH=0 +SUDO_EXEC=no +RSYNC_EXECUTABLE=rsync +RSYNC_REMOTE_PATH="" +RSYNC_PATTERN_FIRST=include +RSYNC_INCLUDE_PATTERN="" +RSYNC_EXCLUDE_PATTERN="" +RSYNC_INCLUDE_FROM="" +RSYNC_EXCLUDE_FROM="" +PATH_SEPARATOR_CHAR=";" +SSH_COMPRESSION=yes +SSH_IGNORE_KNOWN_HOSTS=no +REMOTE_HOST_PING=no +REMOTE_3RD_PARTY_HOSTS="" +RSYNC_OPTIONAL_ARGS="" +PRESERVE_PERMISSIONS=yes +PRESERVE_OWNER=yes +PRESERVE_GROUP=yes +PRESERVE_EXECUTABILITY=yes +PRESERVE_ACL=yes +PRESERVE_XATTR=yes +COPY_SYMLINKS=no +KEEP_DIRLINKS=no +PRESERVE_HARDLINKS=no +CHECKSUM=no +RSYNC_COMPRESS=yes +SOFT_MAX_EXEC_TIME=7200 +HARD_MAX_EXEC_TIME=10600 +KEEP_LOGGING=1801 +MIN_WAIT=60 +MAX_WAIT=7200 +CONFLICT_BACKUP=yes +CONFLICT_BACKUP_MULTIPLE=no +CONFLICT_BACKUP_DAYS=30 +CONFLICT_PREVALANCE=initiator +SOFT_DELETE=yes +SOFT_DELETE_DAYS=30 +SKIP_DELETION=initiator +RESUME_SYNC=yes +RESUME_TRY=2 +FORCE_STRANGER_LOCK_RESUME=no +PARTIAL=no +DELTA_COPIES=yes +DESTINATION_MAILS="your@alert.tld" +MAIL_BODY_CHARSET="" +SENDER_MAIL="alert@your.system.tld" +SMTP_SERVER=smtp.your.isp.tld +SMTP_PORT=25 +SMTP_ENCRYPTION=none +SMTP_USER= +SMTP_PASSWORD= +LOCAL_RUN_BEFORE_CMD="" +LOCAL_RUN_AFTER_CMD="" +REMOTE_RUN_BEFORE_CMD="" +REMOTE_RUN_AFTER_CMD="" +MAX_EXEC_TIME_PER_CMD_BEFORE=0 +MAX_EXEC_TIME_PER_CMD_AFTER=0 +STOP_ON_CMD_ERROR=yes +RUN_AFTER_CMD_ON_ERROR=no From 18505fbe2fb8e3ad5454d892b0628655f9ceeba3 Mon Sep 17 00:00:00 2001 From: Rustem Bapin Date: Mon, 2 Mar 2020 19:40:18 +0400 Subject: [PATCH 2/2] Delete commented lines and options for mailing from osync config --- templates/osync.conf | 9 --------- 1 file changed, 9 deletions(-) diff --git a/templates/osync.conf b/templates/osync.conf index 9924a10..fc1f914 100644 --- a/templates/osync.conf +++ b/templates/osync.conf @@ -3,7 +3,6 @@ INITIATOR_SYNC_DIR="/var/lib/samba/sysvol" TARGET_SYNC_DIR="ssh://{{samba_sysvol_sync_target_user}}@{{item}}//var/lib/samba/sysvol" SSH_RSA_PRIVATE_KEY="{{samba_sysvol_sync_ssh_key}}" SSH_PASSWORD_FILE="" -#_REMOTE_TOKEN=SomeAlphaNumericToken9 CREATE_DIRS=yes LOGFILE="" MINIMUM_SPACE=10240 @@ -50,14 +49,6 @@ RESUME_TRY=2 FORCE_STRANGER_LOCK_RESUME=no PARTIAL=no DELTA_COPIES=yes -DESTINATION_MAILS="your@alert.tld" -MAIL_BODY_CHARSET="" -SENDER_MAIL="alert@your.system.tld" -SMTP_SERVER=smtp.your.isp.tld -SMTP_PORT=25 -SMTP_ENCRYPTION=none -SMTP_USER= -SMTP_PASSWORD= LOCAL_RUN_BEFORE_CMD="" LOCAL_RUN_AFTER_CMD="" REMOTE_RUN_BEFORE_CMD=""