2017-04-12 12 views
1

私が現在書いている、無駄なプレイブックの一部は、rootとして新しいユーザーを作成し、その特定のユーザーにrvmをインストールしてから、rvmを実行するために切り替えます。しかし、それは取るように見えません。ここに私が現在走っていることがあります。実行方法具体的なユーザーとしての可能な仕事

--- 
- name: Install pexpect 
    yum: 
    name: pexpect 
    state: latest 
- name: Create rvm group 
    group: 
    name: rvm 
    state: present 
- name: Create rvmuser 
    user: 
    name: rvmuser 
    state: present 
    group: rvm 
    password: "{{vault_rvm_password}}" 
- name: Download signing key 
    shell: "command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -" 
    become: True 
    become_user: rvmuser 
- name: RVM single-user install 
    shell: "curl -L https://get.rvm.io | bash -s stable" 
    become: True 
    become_user: rvmuser 
- name: Install Ruby 
    shell: "rvm install 2.2.1" 
    become: True 
    become_user: rvmuser 

(これらの特定のシェルステップはルビーの特定のバージョンをインストールする好ましい方法であると思われる。私はRPMをインストールするyumを使用してみましたが、その後gemは失敗する。)

基本的には、取得したとき"Rubyのインストール"ステップには、rvmが見つからないために失敗します。これは、rootとしてコマンドを実行しようとしていることを強く示しています。ここにエラーがあります:

TASK [ruby : Install Ruby] ***************************************************** 
fatal: [10.121.250.21]: FAILED! => {"changed": true, "cmd": "rvm install 2.2.1", "delta": "0:00:00.007545", "end": "2017-04-12 16:14:35.974732", "failed": true, "rc": 127, "start": "2017-04-12 16:14:35.967187", "stderr": "/bin/sh: rvm: command not found", "stdout": "", "stdout_lines": [], "warnings": []} 

私はこれを間違ってやっているのですか、裏で何か間違っていますか?

EDIT:ユーザーが正しく作成されていることを確認しました。上の5つのステップを実行した後、私はマシンにSSHでき、rvmuserに切り替えて、which rvmがパスを返すことを確認します。

答えて

2

パスの問題のように見えること、すなわち、新しく作成されたrvmuserは、その$PATHrvmを持っていない:

は、このタスクのrvmへのフルパスを試してみてください:

- name: Install Ruby 
    shell: "rvm install 2.2.1" 
    become: True 
    become_user: rvmuser 
+0

残念ながら、これはそうではありません。手動でSSHを実行してrvmuserに切り替えると、 'which rvm'が成功します。それが置かれているディレクトリは 'PATH'変数にも現れます。 – TheSoundDefense

+3

Anabilitiesは、モジュールを転送して実行するときにログインシェルを使用しません。その理由は、 'rvm'ユーザの' $ PATH 'を選んでいないからです。 'rvm'をフルパスで実行するか、envをシェ​​ルタスクのソースとして使うことができます:pseudocode' - shell:。/etc/environment && commandhere' – Zlemini

+0

ああ、意味があります。これはトリックを行ったようです!今私は期待を理解する必要があります。ありがとう! – TheSoundDefense

関連する問題