bre*_*dan 8 linux bash shell rvm ansible
我正在尝试将当前用户添加到系统中的组,然后执行需要该组权限的命令.我的剧本是这样的:
- name: Add this user to RVM group
sudo: true
user: state=present name=vagrant append=yes groups=rvm group=rvm
- name: Install Ruby 1.9.3
command: rvm install ruby-1.9.3-p448 creates=/usr/local/rvm/bin/ruby-1.9.3-p448
Run Code Online (Sandbox Code Playgroud)
问题是所有这一切都发生在同一个shell中.vagrant的shell尚未使用新组进行更新.是否有一种干净的方式来刷新用户在Ansible中的当前组?我想我需要让它重新连接或打开一个新的shell.
但是我尝试打开一个新的shell,它只是挂起:
- name: Open a new shell for the new groups
shell: bash
Run Code Online (Sandbox Code Playgroud)
当然它挂了:这个过程永远不会退出!
与newgrp相同
- name: Refresh the groups
shell: newgrp
Run Code Online (Sandbox Code Playgroud)
因为它基本上做同样的事情.
有任何想法吗?
阅读手册。
这里的解决方案是对“命令”或“shell”模块使用“可执行”参数。
所以我尝试使用命令模块,如下所示:
- name: install ruby 1.9.3
command: rvm install ruby-1.9.3-p448 executable=/bin/bash creates=/usr/local/rvm/bin/ruby-1.9.3-p448
ignore_error: true
Run Code Online (Sandbox Code Playgroud)
但剧本却无限期地搁置了。手册指出:
如果您想通过 shell 运行命令(假设您正在使用 <、>、| 等),您实际上需要 shell 模块。命令模块更加安全,因为它不受用户环境的影响。
所以我尝试使用 shell 模块:
- name: install ruby 1.9.3
shell: rvm install ruby-1.9.3-p448 executable=/bin/bash creates=/usr/local/rvm/bin/ruby-1.9.3-p448
ignore_error: true
Run Code Online (Sandbox Code Playgroud)
它有效!
| 归档时间: |
|
| 查看次数: |
1799 次 |
| 最近记录: |