ruby
Что такое rvm1-ansible?
Это Ansible роль для установки и управления версиями Ruby с помощью rvm.
Почему стоит использовать rvm?
В производстве это полезно, так как компиляция новой версии Ruby может занять более 10 минут. Это значит, что ваш CPU будет работать на 100% в течение этого времени.
rvm имеет предкомпилированные бинарные файлы для множества операционных систем. Это позволяет установить Ruby за около 1 минуты, даже на медленном микро-инстансе.
Эта роль также добавляет бинарные файлы Ruby в путь системы при глобальной установке. Это позволяет использовать их, как если бы они были установлены без менеджера версий, при этом вы все равно получаете преимущества от rvm.
Установка
$ ansible-galaxy install rvm.ruby
Переменные роли
Вот список значений по умолчанию, которые вы можете настроить:
---
# Установка одной или нескольких версий Ruby
# Последняя версия Ruby в списке станет версией по умолчанию
rvm1_rubies:
- 'ruby-2.3.1'
# Установка гемов bundler
rvm1_bundler_install: True
# Удалить конкретную версию Ruby (например, ruby-2.1.0)
rvm1_delete_ruby:
# Путь установки для rvm (по умолчанию установка для одного пользователя)
# ПРИМЕЧАНИЕ: Если вы делаете установку с правами ROOT, убедитесь, что
# вы устанавливаете путь установки на что-то вроде '/usr/local/rvm'
rvm1_install_path: '~/.rvm'
# Добавить или удалить любые флаги установки
# ПРИМЕЧАНИЕ: Если вы делаете установку с правами ROOT, убедитесь,
# что вы УДАЛИЛИ флаг --user-install ниже
rvm1_install_flags: '--auto-dotfiles --user-install'
# Добавить дополнительные флаги установки Ruby
rvm1_ruby_install_flags:
# Установить владельца для директории rvm
# ПРИМЕЧАНИЕ: Если вы делаете установку с правами ROOT,
# убедитесь, что rvm1_user установлен на 'root'
rvm1_user: 'ubuntu'
# URL для последнего установщика
rvm1_rvm_latest_installer: 'https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer'
# Версия rvm для использования
rvm1_rvm_version: 'stable'
# Проверка и обновление rvm; отключение этого параметра заставит rvm никогда не обновляться
rvm1_rvm_check_for_updates: True
# Проверка ключа GPG; используйте пустую строку, если хотите пропустить это
# Примечание: Если вы не знаете, что делаете, лучше оставить как есть
# Доказательство личности: https://keybase.io/mpapis
# Сообщение PGP: https://rvm.io/mpapis.asc
rvm1_gpg_keys: '409B6B1796C275462A1703113804BB82D39DC0E3'
# Сервер ключей GPG
rvm1_gpg_key_server: 'hkp://keys.openpgp.org'
# Режим autolib, см. https://rvm.io/rvm/autolibs
rvm1_autolib_mode: 3
# Ссылка на бинарные файлы в системный путь
rvm1_symlink: true
Примеры playbook'ов
---
- name: Настроить серверы с поддержкой Ruby для одного пользователя
hosts: all
roles:
- { role: rvm.ruby,
tags: ruby,
rvm1_rubies: ['ruby-2.3.1'],
rvm1_user: 'ubuntu'
}
Если вам нужно передать список версий Ruby, передайте его в массиве следующим образом.
---
- name: Настроить серверы с поддержкой Ruby для всех пользователей
hosts: all
roles:
- { role: rvm.ruby,
tags: ruby,
become: yes,
rvm1_rubies: ['ruby-2.2.5','ruby-2.3.1'],
rvm1_install_flags: '--auto-dotfiles', # Удалить --user-install из параметров по умолчанию
rvm1_install_path: /usr/local/rvm, # Установить в системный путь
rvm1_user: root # Необходима учетная запись root для доступа к системному пути
}
rvm1_rubies
должен быть указан в формате ruby-x.x.x
, чтобы вы могли
_указать ruby 2.2.5, вам следует передать массив rvm1_rubies: ['ruby-2.2.5']
Глобальная установка
Пример выше установит Ruby для всех пользователей. Очень важно, чтобы вы запускали play с правами root, так как потребуется запись в системный путь, указанный в rvm1_install_path.
Для того же пользователя, что и ansible_user
В этом случае просто переопределите rvm1_install_path
, и по умолчанию будет установлен флаг --user-install
:
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/{{ ansible_user }}/.rvm'
Для пользователя, который не является ansible_user
Вам понадобится доступ root, так как записи будут производиться вне домашнего каталога пользователя ansible. В остальном все так же, только вам нужно будет указать другую учетную запись пользователя:
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/someuser/.rvm'
Быстрые заметки о rvm1_user
В некоторых случаях вам может понадобиться, чтобы папка rvm и ее файлы принадлежали конкретному пользователю, а не root. Просто установите rvm1_user: 'foo'
, и когда Ruby будет установлен, будет обеспечено, что foo
будет владельцем директории rvm.
Это будет использовать become
Ansible под капотом. В случае ошибок (например, Не удалось установить права на временные файлы, которые Ansible необходимо создать, когда он становится непривилегированным пользователем
), ознакомьтесь с https://docs.ansible.com/ansible/latest/user_guide/become.html для получения подробностей и возможных решений.
Обновление и удаление старых версий Ruby
Обычный процесс обновления вашей версии Ruby будет следующим:
- Установите новую версию.
- Запустите свою роль приложения, чтобы выполнить re-install вашей гемы.
- Удалите предыдущую версию Ruby.
Используйте --extra-vars
Ansible
Просто добавьте --extra-vars 'rvm1_delete_ruby=ruby-2.1.0'
в конец вашей команды playbook, и эта версия будет удалена.
Требования
Возможно, любые системы Linux/Unix, поддерживаемые Ansible и удовлетворяющие предварительным требованиям RVM, будут работать.
Совместимость с дистрибутивами Linux на базе Debian, Ubuntu или Redhat активно тестируется.
Настройка непрерывной интеграции этого проекта в настоящее время охватывает следующие платформы:
- CentOS 6, 7 и 8
- Debian 8, 9 и 10
- Ubuntu 14.04, 16.04, 18.04 и 20.04
Ansible galaxy
Вы можете найти его на официальном ansible galaxy, если хотите оценить.
Участие
Поддержка
Станьте сторонником и поддержите нас небольшим ежемесячным взносом, чтобы помочь нам продолжать нашу деятельность.
Спонсоры
Станьте спонсором и получите свой логотип в нашем README на Github с ссылкой на ваш сайт.
Лицензия
MIT
ansible-galaxy install rvm/rvm1-ansible