rvm
Что такое rvm1-ansible?
Это роль Ansible для установки и управления версиями ruby с помощью rvm.
Почему стоит использовать rvm?
В продуктивной среде это полезно, потому что компиляция новой версии ruby может занять более 10 минут. Это означает, что процессор будет загружен на 100% в течение этого времени.
rvm предлагает предварительно скомпилированные бинарные файлы для многих операционных систем. Это значит, что вы можете установить ruby примерно за 1 минуту, даже на медленном микроинстансе.
Эта роль добавляет бинарные файлы ruby в вашу системную переменную PATH, когда выполняется установка для всей системы. Это позволяет вам обращаться к ним так, как будто они были установлены без использования менеджера версий, при этом продолжая пользоваться преимуществами, которые предлагает rvm.
Установка
$ ansible-galaxy install rvm.ruby
Переменные роли
Ниже приведен список значений по умолчанию, которые вы можете настроить:
---
# Установить 1 или более версий ruby
# Последняя версия ruby будет установлена как версия по умолчанию
rvm1_rubies:
- 'ruby-2.3.1'
# Установить гем bundler
rvm1_bundler_install: True
# Версия bundler - если пусто, используйте последнюю
rvm1_bundler_version: ''
rvm1_bundler_install_command: '{{ rvm1_bundler_version | ternary("gem install -v {{ rvm1_bundler_version }} bundler", "gem install bundler") }}'
# Удалить конкретную версию 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://pool.sks-keyservers.net'
# Режим autolib, см. https://rvm.io/rvm/autolibs
rvm1_autolib_mode: 3
Примеры 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 доступ для доступа к системному месту
}
rvm_rubies должен быть указан форматом ruby-x.x.x
, чтобы, если вы хотите
ruby 2.2.5, вам нужно передать массив rvm_rubies: ['ruby-2.2.5']
Установка для всей системы
Приведенный выше пример установит ruby для всей системы. Очень важно запускать play как root, так как потребуется запись в системное место, указанное в rvm1_install_path.
Для того же пользователя, что и ansible_user
В этом случае просто измените rvm_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.
Обновление и удаление старых версий ruby
Общий рабочий процесс для обновления вашей версии ruby будет следующим:
- Установите новую версию
- Запустите вашу роль приложения, чтобы bundler переустановил ваши гемы
- Удалите предыдущую версию ruby
Используйте --extra-vars
Ansible
Просто добавьте --extra-vars 'rvm1_delete_ruby=ruby-2.1.0'
в конец вашей команды playbook, и эта версия будет удалена.
Требования
- Протестировано на CentOS 6 и 7
- Протестировано на Debian 8 и 9
- Протестировано на Ubuntu 14.04 и 16.04
Ansible galaxy
Вы можете найти его на официальном ansible galaxy, если хотите оценить его.
Участие
Поддержка
Станьте спонсором и поддерживайте нас небольшим ежемесячным взносом для продолжения нашей деятельности.
Спонсоры
Станьте спонсором и получите свой логотип в нашем README на Github с ссылкой на ваш сайт.
Лицензия
MIT
ansible-galaxy install silverlogic/ansible-role-rvm