我如何 运行 chruby 使用 Ansible?

How can I run chruby with Ansible?

我开发了一个 Ansible role that installs chruby and another one,它使用 ruby-install 安装 ruby。

我想在我的 Ansible 剧本中使用 chruby,但是 chruby 命令对 commandshell 模块不可用,即使 ch ruby 如果我使用与 运行 使用剧本的同一用户通过 SSH 登录,则工作正常。

这是我试过的:

  1. 按照 chruby's README:

    中的建议,通过将以下脚本部署到 /etc/profile.d/chruby.sh,确保所有用户都可以使用 chruby
    if [ -n "$BASH_VERSION" ] || [ -n "$ZSH_VERSION" ]; then
      source /usr/local/share/chruby/chruby.sh
      source /usr/local/share/chruby/auto.sh
    fi
    
  2. 运行 带有 commandshell 模块的任务(使用 /bin/bash 作为可执行文件)手动 运行 source /usr/local/share/chruby/chruby.shsource /usr/local/share/chruby/auto.sh 在为 chruby

  3. 执行 command 任务之前

在这两种情况下,我都收到以下错误:chruby: command not found

如何在 Ansible 播放中 运行 chruby?

您可以编写简单的 bash/etc 脚本或者获取这些文件:

shell: bash -c "source /usr/local/share/chruby/chruby.sh; source /usr/local/share/chruby/auto.sh;chruby ..."