library/roles/R: task to install R packages from github. Make some steps conditionals.

d4science-ghn-cluster/roles/dataminer_app: First part of the dataminer playbook.
This commit is contained in:
Andrea Dell'Amico 2015-11-27 20:06:45 +01:00
parent 42df93abeb
commit 383e8ba256
5 changed files with 60 additions and 82 deletions

View File

@ -8,19 +8,24 @@
# The install/remove script has been taken from here: http://adamj.eu/tech/2014/07/19/installing-and-removing-r-packages-with-ansible/ # The install/remove script has been taken from here: http://adamj.eu/tech/2014/07/19/installing-and-removing-r-packages-with-ansible/
# #
r_install_cran_repo: False # Set to present if you want install from CRAN
r_install_cran_repo: absent
#r_cran_mirror_site: http://cran.rstudio.com #r_cran_mirror_site: http://cran.rstudio.com
r_cran_mirror_site: http://cran.mirror.garr.it/mirrors/CRAN/ r_cran_mirror_site: http://cran.mirror.garr.it/mirrors/CRAN/
r_base_specific_version: False
r_base_pkg_version: 2.14.1 r_base_pkg_version: 2.14.1
r_packages_state: present r_packages_state: present
r_plugins_from_deb: True
r_plugins_install_latest_source: True
r_plugins_install_specific_source: True
r_source_plugins_dest_dir: /var/cache/R r_source_plugins_dest_dir: /var/cache/R
r_base_packages_list: r_base_packages_list:
- r-base - r-base
- jags
r_plugins_packages_list: r_plugins_packages_list:
- jags
- r-cran-rjags - r-cran-rjags
- r-cran-abind - r-cran-abind
- r-cran-boot - r-cran-boot
@ -41,9 +46,6 @@ r_plugins_packages_list:
- r-cran-spatial - r-cran-spatial
- r-cran-survival - r-cran-survival
# r_plugins_from_sources:
# - { name: 'plyr', version: '1.7.1', source: 'plyr_1.7.1.tar.gz', url: 'http://cran.r-project.org/src/contrib/Archive/plyr/plyr_1.7.1.tar.gz' }
r_plugins_list_to_install: r_plugins_list_to_install:
- R2WinBUGS - R2WinBUGS
- R2jags - R2jags
@ -67,5 +69,13 @@ r_plugins_list_to_install:
- tools - tools
- utils - utils
# r_plugins_from_sources:
# - { name: 'plyr', version: '1.7.1', source: 'plyr_1.7.1.tar.gz', url: 'http://cran.r-project.org/src/contrib/Archive/plyr/plyr_1.7.1.tar.gz' }
# r_plugins_from_github:
# - { plugin_name: 'RFigisGeo', github_user: 'openfigis' }
# - { plugin_name: 'rsdmx', github_user: 'opensdmx' }
# Plugins removal not yet implemented
#r_plugins_list_to_remove: #r_plugins_list_to_remove:

View File

@ -1,48 +1,24 @@
--- ---
- name: Install the cran repository key - name: Manage the cran repository key
apt_key: id=E084DAB9 keyserver=keyserver.ubuntu.com state=present apt_key: id=E084DAB9 keyserver=keyserver.ubuntu.com state={{ r_install_cran_repo }}
register: update_apt_cache tags: [ 'r_software', 'r_repo' ]
when: r_install_cran_repo
tags:
- r_software
- r_repo
- name: Install the cran repository definition - name: Manage the cran repository definition
apt_repository: repo='deb http://cran.rstudio.com/bin/linux/ubuntu {{ ansible_distribution_release }}/' state=present apt_repository: repo='deb http://cran.rstudio.com/bin/linux/ubuntu {{ ansible_distribution_release }}/' state={{ r_install_cran_repo }} update_cache=yes
register: update_apt_cache tags: [ 'r_software', 'r_repo' ]
when: r_install_cran_repo
tags:
- r_software
- r_repo
- name: Install the cran repository definition #
apt_repository: repo='deb {{ r_cran_mirror_site }}/bin/linux/ubuntu {{ ansible_distribution_release }}/' state=absent # This does not work. It resolves dependecies badly and/or installs the right version only for one of the packages
register: update_apt_cache - name: Install a specific version of the R base package
when: not r_install_cran_repo
tags:
- r_software
- r_repo
- name: Update the apt cache if needed
apt: update_cache=yes
when: ( update_apt_cache | changed )
tags:
- r_software
- r_repo
- name: Install the R base packages
apt: pkg={{ item }} state={{ r_packages_state }} apt: pkg={{ item }} state={{ r_packages_state }}
with_items: r_base_packages_list with_items: r_base_packages_list
tags: tags: [ 'r_software', 'r_pkg' ]
- r_software
- r_pkg
- name: Install the R plugins from the ubuntu repo - name: Install the R additional modules from the deb repo
apt: pkg={{ item }} state={{ r_packages_state }} apt: pkg={{ item }} state={{ r_packages_state }}
with_items: r_plugins_packages_list with_items: r_plugins_packages_list
tags: when: r_plugins_from_deb
- r_software tags: [ 'r_software', 'r_pkg' ]
- r_pkg
- name: Ensure that the R plugin sources directory exists - name: Ensure that the R plugin sources directory exists
file: dest={{ r_source_plugins_dest_dir }} state=directory owner=root group=root file: dest={{ r_source_plugins_dest_dir }} state=directory owner=root group=root
@ -55,23 +31,33 @@
when: r_plugins_from_sources is defined when: r_plugins_from_sources is defined
tags: [ 'r_software', 'r_pkg', 'r_plugins' ] tags: [ 'r_software', 'r_pkg', 'r_plugins' ]
- name: Install R plugins from the cran sources - name: Install R plugins from the cran sources, specific versions
command: > command: >
Rscript --slave --no-save --no-restore-history -e "if (! ('{{ item.name }}' %in% installed.packages()[,'Package'])) { install.packages('{{ r_source_plugins_dest_dir }}/{{ item.source }}', repos = NULL, type='source'); print('Added'); } else { print('Already Installed'); }" Rscript --slave --no-save --no-restore-history -e "if (! ('{{ item.name }}' %in% installed.packages()[,'Package'])) { install.packages('{{ r_source_plugins_dest_dir }}/{{ item.source }}', repos = NULL, type='source'); print('Added'); } else { print('Already Installed'); }"
register: install_s_plugins_result register: install_s_plugins_result
failed_when: "install_s_plugins_result.rc != 0 or 'had non-zero exit status' in install_s_plugins_result.stderr" failed_when: "install_s_plugins_result.rc != 0 or 'had non-zero exit status' in install_s_plugins_result.stderr"
changed_when: "'Added' in install_s_plugins_result.stdout" changed_when: "'Added' in install_s_plugins_result.stdout"
with_items: r_plugins_from_sources with_items: r_plugins_from_sources
when: r_plugins_from_sources is defined when: r_plugins_install_specific_source
tags: [ 'r_software', 'r_pkg', 'r_plugins' ] tags: [ 'r_software', 'r_pkg', 'r_plugins' ]
- name: Install R plugins from the cran binaries repo - name: Install R plugins from the cran sources repo, latest version
command: > command: >
Rscript --slave --no-save --no-restore-history -e "if (! ('{{ item }}' %in% installed.packages()[,'Package'])) { install.packages(pkgs='{{ item }}', repos=c('{{ r_cran_mirror_site }}/')); print('Added'); } else { print('Already installed'); }" Rscript --slave --no-save --no-restore-history -e "if (! ('{{ item }}' %in% installed.packages()[,'Package'])) { install.packages(pkgs='{{ item }}', repos=c('{{ r_cran_mirror_site }}/')); print('Added'); } else { print('Already installed'); }"
register: install_plugins_result register: install_plugins_result
failed_when: "install_plugins_result.rc != 0 or 'had non-zero exit status' in install_plugins_result.stderr" failed_when: "install_plugins_result.rc != 0 or 'had non-zero exit status' in install_plugins_result.stderr"
changed_when: "'Added' in install_plugins_result.stdout" changed_when: "'Added' in install_plugins_result.stdout"
with_items: r_plugins_list_to_install with_items: r_plugins_list_to_install
when: r_plugins_install_latest_source
tags: [ 'r_software', 'r_pkg', 'r_plugins' ] tags: [ 'r_software', 'r_pkg', 'r_plugins' ]
- name: Install R plugins from github
command: >
Rscript --slave --no-save --no-restore-history -e "if (! ('{{ item.plugin_name }}' %in% installed.packages()[,'Package'])) { require(devtools); require(methods) ; options(repos='{{ r_cran_mirror_site }}/') ; install_github('{{ item.plugin_name }}', '{{ item.github_user }}'); print('Added'); } else { print('Already Installed'); }"
register: install_s_plugins_result
failed_when: "install_s_plugins_result.rc != 0 or 'had non-zero exit status' in install_s_plugins_result.stderr"
changed_when: "'Added' in install_s_plugins_result.stdout"
with_items: r_plugins_from_github
when: r_plugins_from_github is defined
tags: [ 'r_software', 'r_pkg', 'r_plugins', 'r_plugins_github' ]

View File

@ -0,0 +1,3 @@
Package: *
Pin: release a=squeeze-backports
Pin-Priority: 600

View File

@ -1,67 +1,46 @@
--- ---
- name: install iotop backport PPA
copy: src=files/hardy-iotop-ppa dest=/etc/apt/sources.list.d/iotop-ppa.list
when: is_hardy
notify: apt update
tags:
- packages
- name: GPG key for iotop backport PPA
shell: apt-key list | grep -q 4B1E287796DD5C9A || gpg --keyserver keyserver.ubuntu.com --recv 4B1E287796DD5C9A; gpg --export --armor 4B1E287796DD5C9A | sudo apt-key add -
when: is_hardy
tags:
- packages
- name: Install the basic packages - name: Install the basic packages
apt: pkg=python-software-properties state=installed apt: pkg=python-software-properties state=installed
when: has_apt tags: packages
tags:
- packages
- name: Install software-properties-common if needed - name: Install software-properties-common if needed
apt: pkg=software-properties-common state=installed apt: pkg=software-properties-common state=installed
when: is_quantal when: is_quantal
tags: tags: packages
- packages
- name: Install the backports repository on debian 6 - name: Default the backports repository on debian 6
apt_repository: repo='deb http://http.debian.net/debian-backports squeeze-backports main' state=present copy: src=backports-squeeze dest=/etc/apt/preferences.d/backports owner=root group=root mode=644
register: update_apt_cache
when: is_debian6 when: is_debian6
tags: squeeze-backports tags: squeeze-backports
- name: Install the backports repository on debian 7 - name: Install the backports repository on debian 6
apt_repository: repo='deb http://http.debian.net/debian wheezy-backports main' state=present apt_repository: repo='deb http://http.debian.net/debian-backports squeeze-backports main' state=present update_cache=yes
register: update_apt_cache when: is_debian6
tags: squeeze-backports
- name: Default the backports repository on debian 7
copy: src=backports-wheezy dest=/etc/apt/preferences.d/backports owner=root group=root mode=644
when: is_debian7 when: is_debian7
tags: wheezy-backports tags: wheezy-backports
- name: Default the backports repository on debian 7 - name: Install the backports repository on debian 7
copy: src=backports dest=/etc/apt/preferences.d owner=root group=root mode=644 apt_repository: repo='deb http://http.debian.net/debian wheezy-backports main' state=present update_cache=yes
register: update_apt_cache
when: is_debian7 when: is_debian7
tags: Default-wheezy-backports tags: wheezy-backports
- name: Install the backports repository on debian 8 - name: Install the backports repository on debian 8
apt_repository: repo='deb http://http.debian.net/debian jessie-backports main' state=present apt_repository: repo='deb http://http.debian.net/debian jessie-backports main' state=present update_cache=yes
register: update_apt_cache
when: is_debian8 when: is_debian8
tags: jessie-backports tags: jessie-backports
# Debian 7 “Wheezy” from February 2016 to May 2018 # Debian 7 “Wheezy” from February 2016 to May 2018
# Debian 8 “Jessie“ from May 2018 to April/May 2020 # Debian 8 “Jessie“ from May 2018 to April/May 2020
- name: Install the squeeze-lts repository on debian 6 - name: Install the squeeze-lts repository on debian 6
apt_repository: repo='deb http://http.debian.net/debian squeeze-lts main contrib non-free' state=present apt_repository: repo='deb http://http.debian.net/debian squeeze-lts main contrib non-free' state=present update_cache=yes
register: update_apt_cache register: update_apt_cache
when: is_debian6 when: is_debian6
tags: squeeze-lts tags: squeeze-lts
# - name: Install the wheezy-lts repository on debian 7
# apt_repository: repo='deb http://http.debian.net/debian wheezy-lts main contrib non-free' state=present
# register: update_apt_cache
# when: is_debian7
# tags: wheeze-lts
- name: apt key for the internal ppa repository - name: apt key for the internal ppa repository
apt_key: url=http://ppa.research-infrastructures.eu/system/keys/system-archive.asc state=present apt_key: url=http://ppa.research-infrastructures.eu/system/keys/system-archive.asc state=present
when: is_ubuntu when: is_ubuntu