

`chef-
rbenv`を使い`rbenv`をCentOSにインストールしようとしたのですが、一度途中で接続が切れて失敗し、それ移行何度試しても失敗してしまいます。

### Berkfile

[code]

    cookbook "rbenv", github: 'fnichol/chef-rbenv'
    
[/code]

### node/foobar.json

[code]

    "user_installs": [
        { "user": "deployer",
          "rubies": ["2.0.0-p451", "2.1.5"],
          "global": "2.1.5",
          "gems": {
          "2.1.5": [
              { "name": "activesupport"},
              { "name": "bundler"},
              { "name": "rake", "options": "--force" },
              { "name": "pry"}
          ]
          }
        }
    ]
    
[/code]

このような設定で`knife solo cook foobar`でレシピを適用させると、以下の様なエラーで終了し

[code]

    Recipe: rbenv::user
      * rbenv_ruby[2.0.0-p451 (deployer)] (deployer) action install (up to date)
      * rbenv_ruby[2.1.5 (deployer)] (deployer) action install (up to date)
      * rbenv_global[2.1.5 (deployer)] (deployer) action create (up to date)
      * rbenv_gem[2.1.5::activesupport (deployer)] (deployer) action install
    
        ================================================================================
        Error executing action `install` on resource 'rbenv_gem[2.1.5::activesupport (deployer)] (deployer)'
        ================================================================================
    
        Mixlib::ShellOut::ShellCommandFailed
        ------------------------------------
        Expected process to exit with [0], but received '127'
        ---- Begin output of export RBENV_ROOT="/home/deployer/.rbenv" && export PATH="$RBENV_ROOT/bin:$RBENV_ROOT/shims:$PATH" && export RBENV_VERSION="2.1.5" && $RBENV_ROOT/shims/gem env gempath ----
        STDOUT:
        STDERR: rbenv: gem: command not found
    
[/code]

実際にログインして状態を確認してみたところ

[code]

    $ ruby -v
    rbenv: ruby: command not found
    
    The `ruby' command exists in these Ruby versions:
      2.0.0-p451
    
    $ rbenv versions
      2.0.0-p451
    * 2.1.5 (set by /home/deployer/.rbenv/version)
    $ ls ~/.rbenv/versions/
    2.0.0-p451  2.1.5
    $ ls ~/.rbenv/versions/2.1.5/
    lib
    $ ls ~/.rbenv/versions/2.0.0-p451/
    bin  include  lib  share
    
[/code]

のように`2.1.5`のインストール自体が失敗してるようでした。恐らく初めに接続が切れたせいで中途半端にインストールされたこの`~/.rbenv/versions/2.1.5`のディレクトリ自体を削除して再試行すれば正常にインストールが続行されるとは思うのですが、せっかくChefで自動化していますのでこのような手動操作は入れたくありません。

Chef側の設定だけでこのような状態に対処させるにはどうすればよいのでしょうか？


CC BY-SA 3.0
2015-05-14T04:43:35.940
10159
2015-05-14T04:43:35.940
3271
question
ruby centos chef rbenv
rbenvのuser_installのChefでのインストールが失敗した時に対処法