Skip to content

Instantly share code, notes, and snippets.

@zavan
Created April 28, 2020 14:55
Show Gist options
  • Save zavan/20e41eed3ded71ce76c9ce595076bad6 to your computer and use it in GitHub Desktop.
Save zavan/20e41eed3ded71ce76c9ce595076bad6 to your computer and use it in GitHub Desktop.
Ansible role for installing rbenv and ruby
---
- name: Find user home
set_fact:
user_home: "{{ ansible_env.HOME }}"
- name: Set rbenv dir
set_fact:
rbenv_dir: "{{ user_home }}/.rbenv"
- name: Set rbenv bin path
set_fact:
rbenv_bin: "{{ rbenv_dir }}/bin/rbenv"
- name: Set rbenv shims path
set_fact:
rbenv_shims: "{{ rbenv_dir }}/shims"
- name: Check if rbenv is installed
stat:
path: "{{ rbenv_bin }}"
register: rbenv_bin_stat
- name: Setup rbenv
when: not rbenv_bin_stat.stat.exists
block:
- name: Clone rbenv repo in user home
git:
repo: https://github.com/rbenv/rbenv.git
dest: "{{ rbenv_dir }}"
version: master
- name: Compile rbenv bash extension
command:
cmd: src/configure && make -C src
chdir: "{{ rbenv_dir }}"
ignore_errors: yes # This step is not critical
- name: Add rbenv to path
lineinfile:
line: export PATH="$HOME/.rbenv/bin:$PATH"
path: "{{ user_home }}/.profile"
- name: Add rbenv init script to shell profile
lineinfile:
line: eval "$(rbenv init -)"
path: "{{ user_home }}/.profile"
- name: Clone rbenv-build plugin
git:
repo: https://github.com/rbenv/ruby-build.git
dest: "{{ rbenv_dir }}/plugins/ruby-build"
version: master
- name: Download rbenv doctor
get_url:
url: https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor
dest: /tmp/rbenv-doctor
mode: u+x
- name: Run rbenv doctor
shell: ". {{ user_home }}/.profile && /tmp/rbenv-doctor"
- name: Check if required ruby version is installed
stat:
path: "{{ rbenv_dir }}/versions/{{ ruby_version }}"
register: ruby_version_dir_stat
- name: Install ruby
when: not ruby_version_dir_stat.stat.exists # Avoid rebuilding ruby because it takes a really long time
command: "{{ rbenv_bin }} install {{ ruby_version }}"
- name: Set ruby version as global default
command: "{{ rbenv_bin }} global {{ ruby_version }}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment