rvm.ruby

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

什么是 rvm1-ansible?

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

为什么要使用 rvm?

在生产环境中,它非常有用,因为编译新版本的 Ruby 可能需要超过 10 分钟。这意味着你的 CPU 会持续在 100% 使用率。

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

此角色还会在进行系统范围安装时将 Ruby 二进制文件添加到你的系统路径中。这让你可以像使用常规安装一样访问它们,而不需要使用版本管理器,同时仍然可以享受 rvm 的好处。

安装

$ ansible-galaxy install rvm.ruby

角色变量

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

---

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

# 安装 bundler gem
rvm1_bundler_install: True

# 删除特定版本的 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://keys.openpgp.org'

# autolib 模式,见 https://rvm.io/rvm/autolibs
rvm1_autolib_mode: 3

# 将二进制文件创建符号链接到系统路径
rvm1_symlink: true

示例剧本

---

- 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 权限,因为你将写入 ansible 用户的家目录外部。除此之外,其余与上面的相同,只是你需要提供一个不同的用户账号:

rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/someuser/.rvm'

快速说明 rvm1_user

在某些情况下,你可能希望 rvm 文件夹及其文件由特定用户而不是 root 拥有。只需设置 rvm1_user: 'foo',当 Ruby 被安装时,将确保 foo 拥有 rvm 目录。

这将使用 Ansible 的 become 功能。如果出现故障(例如 Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user),请查看 https://docs.ansible.com/ansible/latest/user_guide/become.html 以获取详细信息和可能的解决方案。

升级和删除旧版本的 Ruby

升级 Ruby 版本的常见工作流程是:

  1. 安装新版本
  2. 运行你的应用程序角色,以便 bundle install 重新安装你的 gems
  3. 删除之前的 Ruby 版本

利用 ansible 的 --extra-vars

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

需求

任何受 Ansible 支持且满足 RVM 先决条件 的 Linux/Unix 系统都应有效。

与基于 Debian、Ubuntu 或 Redhat 家族的 Linux 发行版的兼容性正在积极测试中。

此项目的持续集成设置当前涵盖以下平台:

  • CentOS 6、7 和 8
  • Debian 8、9 和 10
  • Ubuntu 14.04、16.04、18.04 和 20.04

Ansible galaxy

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

贡献

支持者

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

支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者 支持者

赞助商

成为赞助商,让你的 logo 出现在我们的 GitHub README 上,并链接到你的网站。

赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商 赞助商

许可证

MIT

关于项目

The official RVM role to install and manage your ruby versions

安装
ansible-galaxy install rvm.ruby
许可证
mit
下载
881k
拥有者
Ruby enVironment Manager