Created
April 28, 2020 14:55
-
-
Save zavan/20e41eed3ded71ce76c9ce595076bad6 to your computer and use it in GitHub Desktop.
Ansible role for installing rbenv and ruby
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
- 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