Install Bundler gem using Ansible

前端 未结 6 477
忘了有多久
忘了有多久 2020-12-14 00:46

I am trying to install Bundler on my VPS using Ansible.

I already have rbenv set up and the global ruby is 2.1.0.

If I SSH as root into the server and run

6条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-14 01:09

    The problem is that, when running gem install bundler via ansible, you're not initializing rbenv properly, since rbenv init is run in .bashrc or .bash_profile. So the gem command used is the system one, not the one installed as a rbenv shim. So whenever you install a gem, it is installed system-wide, not in your rbenv environment.

    To have rbenv initialized properly, you must execute bash itself and explicitely state that it's a login shell, so it reads it's initialization files :

    ansible your_host -m command -a 'bash -lc "gem install bundler"' -u your_rbenv_user 
    

    Leave the -u your_rbenv_user part if you really want to do this as root.

    If the above command works, you can easily turn it into a playbook action :

    - name: Install Bundler
      become_user: your_rbenv_user
      command: bash -lc "gem install bundler"
    

    It's cumbersome, but it's the only way I found so far.

提交回复
热议问题