Created
November 28, 2013 22:42
-
-
Save asselstine/7699067 to your computer and use it in GitHub Desktop.
Ansible script to install rbenv. Intended for CentOS images.
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
--- | |
# file ruby.yml | |
- hosts: all | |
gather_facts: false | |
sudo: true | |
vars: | |
# Where to install rbenv | |
- rbenv_root: /usr/local/rbenv | |
# The version of Ruby to install | |
- ruby_version: 1.9.3-p448 | |
# The group to give all rbenv permission to | |
- group: rbenv | |
# Environment variables to help call rbenv while sudo | |
- rbenv_env: RBENV_ROOT=$rbenv_root PATH=/usr/local/bin:$rbenv_root/shims:$rbenv_root/bin:$PATH | |
# Essentially an alias for the binary | |
- rbenv_bin: $rbenv_env rbenv | |
tasks: | |
- name: rbenv | install build depends | |
yum: name=$item state=present | |
with_items: | |
- gcc-c++ | |
- patch | |
- readline | |
- readline-devel | |
- zlib | |
- zlib-devel | |
- libyaml-devel | |
- libffi-devel | |
- openssl-devel | |
- make | |
- bzip2 | |
- autoconf | |
- automake | |
- libtool | |
- bison | |
- git-core | |
- name: rbenv | create rbenv group | |
group: state=present name=$group | |
- name: rbenv | update rbenv repo | |
git: repo=git://github.com/sstephenson/rbenv.git dest=$rbenv_root version=v0.4.0 | |
- name: rbenv | add rbenv to path | |
file: path=/usr/local/bin/rbenv src=${rbenv_root}/bin/rbenv state=link | |
- name: rbenv | alter permissions | |
file: group=$group mode=0775 recurse=yes state=directory path=${rbenv_root} | |
- name: rbenv | add rbenv initialization to profile | |
template: src=templates/rbenv.sh.j2 dest=/etc/profile.d/rbenv.sh owner=root group=$group mode=0775 | |
- name: rbenv | check ruby-build installed | |
command: test -x /usr/local/bin/ruby-build | |
register: rbuild_present | |
ignore_errors: True | |
- name: rbenv | create temporary directory | |
command: mktemp -d | |
register: tempdir | |
when: rbuild_present | failed | |
- name: rbenv | clone ruby-build repo | |
git: repo=git://github.com/sstephenson/ruby-build.git dest=${tempdir.stdout}/ruby-build | |
when: rbuild_present|failed | |
- name: rbenv | install ruby-build | |
command: ./install.sh chdir=${tempdir.stdout}/ruby-build | |
when: rbuild_present|failed | |
- name: rbenv | remove temporary directory | |
file: path=${tempdir.stdout} state=absent | |
when: rbuild_present|failed | |
- name: rbenv | check ruby $ruby_version installed | |
shell: $rbenv_bin versions | grep $ruby_version | |
register: ruby_installed | |
ignore_errors: yes | |
- name: rbenv | install ruby $ruby_version | |
sudo: true | |
shell: $rbenv_bin install $ruby_version | |
when: ruby_installed|failed | |
- name: rbenv | set global ruby $ruby_version | |
shell: $rbenv_bin global $ruby_version | |
when: ruby_installed|failed | |
- name: rbenv | rehash | |
shell: $rbenv_bin rehash | |
when: ruby_installed|failed | |
- name: rbenv | set gemrc | |
copy: src=files/gemrc dest=/root/.gemrc owner=root group=root mode=0644 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Note: you need a template file:
templates/rbenv.sh.j2
export RBENV_ROOT="{{ rbenv_root }}"
export PATH="/usr/local/bin:$RBENV_ROOT/shims:$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"