diff --git a/playbooks/mirror.yml b/playbooks/mirror.yml index fcbf583..a282bf1 100644 --- a/playbooks/mirror.yml +++ b/playbooks/mirror.yml @@ -20,6 +20,7 @@ roles: - base - mirror/base + - mirror/thinlinc - role: mirror/sync label: fedora-epel source: "rsync://rsync.nic.funet.fi/ftp/pub/mirrors/fedora.redhat.com/pub/epel" diff --git a/roles/mirror/thinlinc/files/sync-thinlinc-repo b/roles/mirror/thinlinc/files/sync-thinlinc-repo new file mode 100755 index 0000000..ade62ce --- /dev/null +++ b/roles/mirror/thinlinc/files/sync-thinlinc-repo @@ -0,0 +1,41 @@ +#!/bin/bash + +umask 022 + +BASEURL="https://www.cendio.com" +REPODIR="/srv/mirrors/thinlinc" + +if [ ! -d "${REPODIR}" ]; then + echo "ERR: Cannot find repository directory ${REPODIR}" 1>&2 + exit 1 +fi + +LOCATION=$(curl -s "${BASEURL}/thinlinc/download" | \ + sed -n 's/^.*64-bit.*/\1/p') +if [ "${LOCATION}" = "" ]; then + echo "ERR: Failed to determine current thinlinc version" 1>&2 + exit 1 +fi +PKGNAME="$(basename "${LOCATION}")" + +if [ ! -f "${REPODIR}/${PKGNAME}" ]; then + echo "New thinlinc version found" + echo "" + + # assume that server version goes in-line with client + echo "Downloading server package:" + curl -o "${REPODIR}/.server.zip" "${BASEURL}/downloads/server/download.py" + echo "Extracting server rpm files:" + unzip -jd ${REPODIR} ${REPODIR}/.server.zip \*.rpm + echo "Cleaning up..." + rm -f ${REPODIR}/.server.zip + echo "" + + echo "Downloading client rpm package:" + curl -o "${REPODIR}/${PKGNAME}" "${BASEURL}${LOCATION}" + echo "" + echo "Updating repository metadata:" + createrepo_c "${REPODIR}" + echo "" +fi + diff --git a/roles/mirror/thinlinc/tasks/main.yml b/roles/mirror/thinlinc/tasks/main.yml new file mode 100644 index 0000000..f7a9bc0 --- /dev/null +++ b/roles/mirror/thinlinc/tasks/main.yml @@ -0,0 +1,32 @@ +--- +- name: install required packages + package: + name: "{{ item }}" + state: installed + with_items: + - unzip + - createrepo_c + +- name: create target directory + file: + path: /srv/mirrors/thinlinc + state: directory + mode: 0755 + owner: mirror + group: mirror + +- name: copy sync script + copy: + dest: /usr/local/bin/sync-thinlinc-repo + src: sync-thinlinc-repo + mode: 0755 + owner: root + group: root + +- name: create sync cron job + cron: + name: sync-thinlinc-repo + hour: 4 + minute: 5 + job: /usr/local/bin/sync-thinlinc-repo + user: mirror