Я хочу предоставить машине Ubuntu Server последнюю версию Ruby и Ruby Gems с помощью Ansible.
Как это сделать?
Я хочу предоставить машине Ubuntu Server последнюю версию Ruby и Ruby Gems с помощью Ansible.
Как это сделать?
Я рекомендую использовать это решение, если будет нормально устанавливать Ruby 2.0 и Ruby Gems глобально (для всех пользователей). Если вы хотите установить другую версию или изолировать ее от других пользователей - см. Решение # 2.
Вот простая игра-версия Ansible, которая установит для вас последние версии Ruby 2.0 и Ruby Gems:
- name: Latest version of Ruby is installed
apt: pkg={{ item }} state=latest
with_items:
- ruby2.0
- ruby2.0-dev
- name: Symlink exists for Ruby 2.0
file: src=/usr/bin/ruby2.0 dest=/usr/local/bin/ruby state=link
- name: Symlink exists for Ruby Gems 2.0
file: src=/usr/bin/gem2.0 dest=/usr/local/bin/gem state=link
- name: Latest version of Ruby is installed
apt: pkg={{ item }} state=latest
with_items:
- ruby2.0
- ruby2.0-dev
- name: Making Ruby 2.0 the default one
command: update-alternatives --set ruby /usr/bin/ruby2.0
- name: Making Gem 2.0 the default one
command: update-alternatives --set gem /usr/bin/gem2.0
Предоставляемые проигрыватели должны быть выполнены с sudo: yes
по понятным причинам.
RVM устанавливает рубин и он самоцветов локально для текущего пользователя. Таким образом, это приводит к проблемам в многопользовательской среде. По какой-то причине в моем случае он работал неправильно. Поэтому я рекомендовал бы придерживаться первого решения, если это возможно. Хотя, если вы знаете, что вы делаете, и понимаете, какие сложности здесь возникают, RVM-решение.
Я предлагаю создать простую оболочку script для установки текущей версии Ruby и Ruby Gems с RVM и вызывать ее позже на подготовленной машине.
Здесь Bash script:
#!/usr/bin/env bash
# Checking if RVM is installed
if ! [ -d "~/.rvm" ]; then
echo "Installing RVM..."
\curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc
else
echo "Updating RVM..."
rvm get stable
fi;
echo -n "RVM version is: "
rvm --version
echo "Installing Ruby..."
rvm install ruby
echo "Making installed Ruby the default one..."
rvm use ruby --default
echo "Installing latest version of Ruby Gems..."
rvm rubygems current
Этот script установит RVM (или обновит его до последней стабильной версии, если он уже установлен), и установит последние стабильные версии Ruby и Ruby Gems.
И вот здесь, чтобы воспроизвести книгу для копирования с помощью script на машину инициализации и вызвать ее:
- file: path=~/provision/ruby state=directory
- copy: src=../../files/ruby/install.sh dest=~/provision/ruby/install.sh mode=775
- name: Latest Ruby is installed
shell: /usr/bin/env bash ~/provision/ruby/install.sh
Просто разместите script возле загрузочной книги Ansible и обновите пути.
Я надеюсь, что это поможет кому-то.
В настоящее время есть официальная учебная игра Ruby/RVM: https://github.com/rvm/rvm1-ansible
Для установки: ansible-galaxy install rvm_io.rvm1-ruby -p ROLES_PATH
Пример playbook:
---
- name: Configure servers with ruby support
hosts: all
roles:
- { role: rvm_io.rvm1-ruby, tags: ruby, become: True }