微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

问题是,所有这些都发生在同一个shell中。 stream浪者的shell还没有被新的组更新。 是否有一种干净的方式来刷新Ansible中的用户当前组? 我想我需要得到它重新连接或打开一个新的shell。

不过,我试图打开一个新的壳,它只是挂起:

- name: Open a new shell for the new groups shell: bash

当然,它永远不会退出

确定UNIX别名的定义位置

在bash -i中可用的命令不能在bash -l中访问

如何删除文本文件中的特定文本

在terminal/ Linux上查找包含特定date范围文件名的所有文件

在PS1之后添加换行符

与newgrp相同的东西

- name: Refresh the groups shell: newgrp

因为它基本上做同样的事情。

有任何想法吗?

Bash虽然循环不结束

在RaspBerry PI上启动后运行Shell脚本

Bash – 分割目录string

pwd在terminal标签中带有符号链接的奇怪行为

Sed未能取代UTF-8编码

阅读手册。

这里的一个解决方案是对'command'或'shell'模块使用'executable'参数。

所以我尝试使用这样的命令模块:

- 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

但剧本无限期悬挂。 手册指出:

如果你想通过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

它的工作原理!

我已经看到这个问题在capistrano和chef ,它发生,因为你已经有一个会议,尚未有该组的用户,你需要关闭会议,并打开新的会话,让用户看到的组添加

正如其他人已经指出,这是因为到远程主机的主动ssh连接。 用户需要注销并重新登录才能激活新组。

单独的shell操作可能是单个任务的解决方案。 但是如果你想运行多个其他的任务,而不想被迫自己编写所有的命令,而是使用Ansible模块,那就杀掉这个ssh连接。

- name: Killing all ssh connections of current user delegate_to: localhost shell: ssh {{ inventory_hostname }} "sudo ps -ef | grep sshd | grep `whoami` | awk '{print "sudo kill -9",$2}' | sh" Failed_when: false

而不是使用Ansibles打开ssh连接,我们通过一个shell动作启动我们自己的。 然后我们终止当前用户的所有打开的ssh连接。 这将迫使Ansible在下一个任务中重新登录

我在使用Ansible 1.8的RHEL 7.0上,接受的答案对我不起作用。 我可以强制Ansible加载新添加的rvm组的唯一方法是使用sg 。

- name: add user to rvm group user: name=ec2-user groups=rvm append=yes sudo: yes - name: install ruby command: sg rvm -c "/usr/local/rvm/bin/rvm install ruby-2.0.0"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐