如何以特定用户身份运行Ansible任务

时间:2017-04-12 21:20:50

标签: ruby ansible

我目前正在编写的Ansible手册的一部分涉及以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

(这些特定的shell步骤似乎是安装特定版本Ruby的首选方式;我尝试使用yum安装RPM,但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": []}

我这样做是错误的,还是在幕后出现了其他问题?

编辑:用户正确创建,我已经确认。运行前五个步骤后,我可以通过SSH连接到计算机,切换到rvmuser并看到which rvm返回路径。

1 个答案:

答案 0 :(得分:2)

这看起来像路径问题,即新创建的rvmuser rvm中没有$PATH

在此任务中尝试rvm的完整路径:

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