library/roles/R: Get the files that list the R packages from subversion.

This commit is contained in:
Andrea Dell'Amico 2016-10-24 15:33:27 +02:00
parent 4b4507bdce
commit 83804cdcda
3 changed files with 41 additions and 6 deletions

View File

@ -21,8 +21,12 @@ r_packages_main_state: present
r_packages_state: '{{ r_packages_main_state }}' r_packages_state: '{{ r_packages_main_state }}'
r_plugins_from_deb: True r_plugins_from_deb: True
r_packages_cleanup: False r_packages_cleanup: False
#
r_packages_updater: False r_packages_updater: False
# They need to be flat text files available via http r_package_updater_via_subversion: True
r_package_updater_subversion_repo: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-analysis/RConfiguration/RPackagesManagement/
r_packages_svn_base_dir: /srv/r_updater
# They need to be flat text files
# 1 package per line # 1 package per line
#r_debian_packages_list_url #r_debian_packages_list_url
# package[:cran mirror] # package[:cran mirror]

View File

@ -3,6 +3,9 @@
- name: Install the R packages updater script - name: Install the R packages updater script
template: src=update_r_packages.sh.j2 dest=/usr/local/bin/update_r_packages owner=root group=root mode=0755 template: src=update_r_packages.sh.j2 dest=/usr/local/bin/update_r_packages owner=root group=root mode=0755
- name: Create the R packages updater SVN base directory
file: dest={{ r_packages_svn_base_dir }} state=directory
- name: Cron job that installs new R packages, if any - name: Cron job that installs new R packages, if any
cron: name="install new R packages" user=root cron_file=install-r-packages minute="*/10" job="/usr/local/bin/update_r_packages install" state=present cron: name="install new R packages" user=root cron_file=install-r-packages minute="*/10" job="/usr/local/bin/update_r_packages install" state=present
@ -10,13 +13,16 @@
cron: name="install new R packages" user=root cron_file=upgrade-r-packages hour="3" job="/usr/local/bin/update_r_packages upgrade" state=present cron: name="install new R packages" user=root cron_file=upgrade-r-packages hour="3" job="/usr/local/bin/update_r_packages upgrade" state=present
when: r_packages_updater when: r_packages_updater
tags: [ 'r_software', 'r_pkg', 'r_plugins', 'r_plugins_github', 'r_cran_pkgs', 'r_github_pkgs' ] tags: [ 'r_software', 'r_pkg', 'r_plugins', 'r_plugins_github', 'r_cran_pkgs', 'r_github_pkgs', 'r_packages_updater' ]
- block: - block:
- name: Remove the R packages updater script - name: Remove the R packages updater script
file: dest=/usr/local/bin/update_r_packages state=absent file: dest=/usr/local/bin/update_r_packages state=absent
- name: Remove the R packages updater SVN base directory
file: dest={{ r_packages_svn_base_dir }} state=absent
- name: Remove the cron job that installs new R packages - name: Remove the cron job that installs new R packages
cron: name="install new R packages" user=root minute="*/10" cron_file=install-r-packages job="/usr/local/bin/update_r_packages install" state=absent cron: name="install new R packages" user=root minute="*/10" cron_file=install-r-packages job="/usr/local/bin/update_r_packages install" state=absent
@ -24,4 +30,4 @@
cron: name="install new R packages" user=root cron_file=upgrade-r-packages hour="3" job="/usr/local/bin/update_r_packages upgrade" state=absent cron: name="install new R packages" user=root cron_file=upgrade-r-packages hour="3" job="/usr/local/bin/update_r_packages upgrade" state=absent
when: not r_packages_updater when: not r_packages_updater
tags: [ 'r_software', 'r_pkg', 'r_plugins', 'r_plugins_github', 'r_cran_pkgs', 'r_github_pkgs' ] tags: [ 'r_software', 'r_pkg', 'r_plugins', 'r_plugins_github', 'r_cran_pkgs', 'r_github_pkgs', 'r_packages_updater' ]

View File

@ -12,6 +12,10 @@ TMP_FILES_DIR=/var/tmp/r_pkgs_update
# We cannot answer questions # We cannot answer questions
DEBIAN_FRONTEND=noninteractive DEBIAN_FRONTEND=noninteractive
R_CRAN_MIRROR={{ r_cran_mirror_site }} R_CRAN_MIRROR={{ r_cran_mirror_site }}
R_PKGS_FROM_SVN={{ r_package_updater_via_subversion }}
R_PKGS_SVN_DIR=RPackagesManagement
R_PKGS_SVN_URL={{ r_package_updater_subversion_repo }}
R_PKGS_SVN_BASE_DIR={{ r_packages_svn_base_dir }}
# - debian packages list format: # - debian packages list format:
# one package per line # one package per line
DEB_PKGS_SKIP=0 DEB_PKGS_SKIP=0
@ -28,7 +32,7 @@ GITHUB_PKGS_SKIP=0
R_PKGS_FROM_GITHUB_LIST_URL={{ r_github_packages_list_url | default('') }} R_PKGS_FROM_GITHUB_LIST_URL={{ r_github_packages_list_url | default('') }}
R_PKGS_GITHUB= R_PKGS_GITHUB=
trap "{ logger 'update_r_packages: trap intercepted, exiting.' ; cleanup ; exit 15 }" SIGHUP SIGINT SIGTERM trap "logger 'update_r_packages: trap intercepted, exiting.' ; cleanup" SIGHUP SIGINT SIGTERM
function cleanup() { function cleanup() {
logger "update_r_packages: cleaning up" logger "update_r_packages: cleaning up"
@ -53,7 +57,7 @@ function get_args() {
} }
function fail() { function fail() {
logger "Something went wrong, exiting." logger "update_r_packages: Something went wrong, exiting."
cleanup cleanup
exit 1 exit 1
} }
@ -79,6 +83,7 @@ function init_env() {
} }
function get_data_files() { function get_data_files() {
logger "update_r_packages: get the single files from http."
# Get the packages list # Get the packages list
if [ -z $DEBIAN_PKGS_LIST_URL ] ; then if [ -z $DEBIAN_PKGS_LIST_URL ] ; then
DEB_PKGS_SKIP=1 DEB_PKGS_SKIP=1
@ -106,6 +111,22 @@ function get_data_files() {
fi fi
} }
function get_data_files_from_svn() {
logger "update_r_packages: files from a SVN repo."
if [ -d $R_PKGS_SVN_BASE_DIR/$R_PKGS_SVN_DIR ] ; then
logger "update_r_packages: SVN update"
cd $R_PKGS_SVN_BASE_DIR/$R_PKGS_SVN_DIR
svn update >/dev/null 2>&1
else
cd $R_PKGS_SVN_BASE_DIR
logger "update_r_packages: first SVN checkout."
svn co $R_PKGS_SVN_URL >/dev/null 2>&1
fi
PKGS_LIST=$R_PKGS_SVN_BASE_DIR/$R_PKGS_SVN_DIR/r_deb_pkgs.txt
R_PKGS_LIST=$R_PKGS_SVN_BASE_DIR/$R_PKGS_SVN_DIR/r_cran_pkgs.txt
R_PKGS_GITHUB=$R_PKGS_SVN_BASE_DIR/$R_PKGS_SVN_DIR/r_github_pkgs.txt
}
function debian_pkgs() { function debian_pkgs() {
if [ $DEB_PKGS_SKIP -eq 0 ] ; then if [ $DEB_PKGS_SKIP -eq 0 ] ; then
# Update the apt cache and install the packages in non interactive mode # Update the apt cache and install the packages in non interactive mode
@ -169,7 +190,11 @@ function r_github_pkgs() {
usage usage
get_args get_args
init_env init_env
get_data_files if [ $R_PKGS_FROM_SVN == 'True' ] ; then
get_data_files_from_svn
else
get_data_files
fi
debian_pkgs debian_pkgs
r_cran_pkgs r_cran_pkgs
r_github_pkgs r_github_pkgs