rvm

Статус сборки Поддержка Спонсоры Роль Ansible

Что такое 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 будет следующим:

  1. Установите новую версию
  2. Запустите вашу роль приложения, чтобы bundler переустановил ваши гемы
  3. Удалите предыдущую версию 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

О проекте

The official RVM role to install and manage your ruby versions

Установить
ansible-galaxy install silverlogic/ansible-role-rvm
Лицензия
mit
Загрузки
7469
Владелец