silverlogic.rvm

构建状态 支持者 赞助商 Ansible 角色

什么是 rvm1-ansible?

它是一个 Ansible 角色,用于使用 rvm 安装和管理 ruby 版本。

为什么要使用 rvm?

在生产环境中,编译新的 ruby 版本可能会花费超过 10 分钟。这样,你的 CPU 将会一直处于 100% 的高负载状态。

rvm 为许多操作系统提供了预编译的二进制文件。这意味着,即使在较慢的微型实例上,你也可以在大约 1 分钟内安装 ruby。

这个角色还会在进行系统范围安装时,将 ruby 的二进制文件添加到你的系统路径中。这意味着你可以像不使用版本管理器一样访问它们,同时仍然可以利用 rvm 所提供的好处。

安装

$ ansible-galaxy install rvm.ruby

角色变量

以下是你可以配置的默认值列表:

---

# 安装 1 个或多个 ruby 版本
# 最后列出的 ruby 版本将被设置为默认版本
rvm1_rubies:
  - 'ruby-2.3.1'

# 安装 bundler gem
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 的安装路径(默认是单用户)
# 注意:如果你正在进行根目录安装,确保将安装路径设置为 '/usr/local/rvm'
rvm1_install_path: '~/.rvm'

# 添加或移除任何安装标志
# 注意:如果你在进行根目录安装,请确保移除下面的 --user-install 标志
rvm1_install_flags: '--auto-dotfiles --user-install'

# 添加额外的 ruby 安装标志
rvm1_ruby_install_flags:

# 设置 rvm 目录的所有者
# 注意:如果你在进行根目录安装,请确保将 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

示例剧本

---

- 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。非常重要的一点是,你必须以 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 权限,因为你将写入安静用户的主目录之外。除此之外,设置方式与上面相同,只需提供不同的用户账户:

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. 运行你的应用程序角色,以便 bundle install 重新安装你的 gems
  3. 删除之前的 ruby 版本

利用 ansible 的 --extra-vars

只需在剧本命令的末尾添加 --extra-vars 'rvm1_delete_ruby=ruby-2.1.0',该版本将被删除。

要求

  • 在 CentOS 6 和 7 上测试
  • 在 Debian 8 和 9 上测试
  • 在 Ubuntu 14.04 和 16.04 上测试

Ansible galaxy

如果你想评价,可以在官方的 ansible galaxy 上找到它。

贡献

支持者

成为支持者,通过每月的小额捐款支持我们继续活动。

赞助商

成为赞助商,在我们的 GitHub README 上显示你的标志,并提供指向你网站的链接。

许可证

MIT

关于项目

The official RVM role to install and manage your ruby versions

安装
ansible-galaxy install silverlogic.rvm
许可证
mit
下载
7.7k
拥有者