From a9e88356f5bab41939af25311848cb140313b8cc Mon Sep 17 00:00:00 2001 From: Nick Janetakis Date: Mon, 2 Jun 2014 19:30:32 -0400 Subject: [PATCH] Add autograde feature for rvm and keep the installer script locally --- README.md | 13 ++++++++++++- defaults/main.yml | 5 ++++- tasks/main.yml | 35 +++++++++++++++++++++++------------ 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 2758e4e..43c5119 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,24 @@ ansible-ruby solves this by using rvm to install 1 or more versions of ruby. It ## Role variables -The only variable you need to concern yourself about is `ruby_version` if you're happy with the default download and install path. +Below is a list of default values along with a description of what they do. ``` +# Set the version of ruby you want to install. ruby_version: 2.1.1 # X.X.X-pXXX format +# Where should the rvm-installer and other temp files be downloaded to? ruby_temp_download_path: /usr/local/src + +# Where should rvm be installed to? ruby_rvm_install_path: /usr/local/rvm + +# Force upgrade rvm-installer to the latest stable version. +ruby_rvm_force_upgrade_installer: false + +# If you are concerned rvm stable might not be stable then +# you can set this to true so that rvm itself never upgrades. +ruby_rvm_skip_upgrade: false ``` ## Example playbook diff --git a/defaults/main.yml b/defaults/main.yml index 298529f..8825618 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -2,4 +2,7 @@ ruby_version: 2.1.1 # X.X.X-pXXX format ruby_temp_download_path: /usr/local/src -ruby_rvm_install_path: /usr/local/rvm \ No newline at end of file +ruby_rvm_install_path: /usr/local/rvm + +ruby_rvm_force_upgrade_installer: false +ruby_rvm_skip_upgrade: false \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml index 5939406..d5b0378 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,33 +1,44 @@ --- -- name: detect rvm installation +- name: detect rvm profile stat: path=/etc/profile.d/rvm.sh - register: rvm_installation + register: rvm_profile + +- name: detect rvm installer + stat: path={{ ruby_temp_download_path }}/rvm-installer.sh + register: rvm_installer + +- name: detect current rvm version + shell: "{{ ruby_rvm_install_path }}/bin/rvm version" + register: rvm_current_version + when: rvm_profile.stat.exists + +- name: detect latest rvm version + uri: url=https://raw.githubusercontent.com/wayneeseguin/rvm/master/VERSION return_content=yes + register: rvm_latest_version - name: ensure rvm installer is downloaded get_url: url: https://get.rvm.io dest: "{{ ruby_temp_download_path }}/rvm-installer.sh" - when: not rvm_installation.stat.exists + when: not rvm_installer.stat.exists or ruby_rvm_force_upgrade_installer - name: ensure rvm installer is configured file: path: "{{ ruby_temp_download_path }}/rvm-installer.sh" mode: 0755 - when: not rvm_installation.stat.exists + when: not rvm_profile.stat.exists or ruby_rvm_force_upgrade_installer - name: ensure rvm stable is installed command: "{{ ruby_temp_download_path }}/rvm-installer.sh --path {{ ruby_rvm_install_path }} stable" - when: not rvm_installation.stat.exists + when: not rvm_profile.stat.exists -- name: ensure rvm installer is deleted - file: - path: "{{ ruby_temp_download_path }}/rvm-installer.sh" - state: absent - when: not rvm_installation.stat.exists +- name: ensure rvm is upgraded + shell: "{{ ruby_rvm_install_path }}/bin/rvm get stable && {{ ruby_rvm_install_path }}/bin/rvm reload" + when: not rvm_latest_version.content[:-1] in rvm_current_version.stdout and rvm_profile.stat.exists and not ruby_rvm_skip_upgrade - name: ensure rvm installs ruby dependencies command: "{{ ruby_rvm_install_path }}/bin/rvm autolibs 3" - when: not rvm_installation.stat.exists + when: not rvm_profile.stat.exists - name: detect if ruby version is installed stat: path={{ ruby_rvm_install_path }}/rubies/ruby-{{ ruby_version }} @@ -43,4 +54,4 @@ - name: ensure default ruby is selected shell: source /etc/profile.d/rvm.sh && rvm use ruby-{{ ruby_version }} --default executable=/bin/bash - when: ruby_selected.stdout == '' or ruby_version not in ruby_selected.stdout + when: ruby_selected.stdout == '' or ruby_version not in ruby_selected.stdout \ No newline at end of file