首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不可用的sudo不起作用

不可用的sudo不起作用
EN

Stack Overflow用户
提问于 2014-11-14 17:41:14
回答 1查看 9K关注 0票数 1

我正在编写Ansible脚本,以便在CentOS机器上安装一些软件包。

我无法用sudo在Ansible中执行简单的YUM命令。

代码语言:javascript
复制
- name: Install Java
  yum: name={{java_version}} state=present
  sudo_user: dexter
  sudo: yes

我得到以下错误

任务: tomcat安装Java *************************************************失败:服务器名=> {“已更改”:真,"rc":1,“结果”:“加载插件:fastest镜像,la ngpack\n”} msg:您需要成为根用户才能执行此命令。致命:所有主机都失败了??中止。

我还设置了远程用户。

代码语言:javascript
复制
remote_user: dexter

我使用的是ansible 1.7.2

我只能访问dexter用户(不能访问root用户)

dexter用户在sudoers列表中。

我可以对机器上的用户执行sudo命令,也可以执行类似的命令。

代码语言:javascript
复制
sudo yum install ...

奇怪的是,我还可以使用shell在Ansible中运行SUDO命令

代码语言:javascript
复制
- name: Add permissions to dummy path
  shell: sudo chmod 0755 {{dummy_path}}

似乎ansible中的sudo与sudo命令不一样。还是我做错了什么?

谢谢!

按@tedder42 42建议编辑,我使用(-vvvv')添加控制台输出,没有sudo_user`,但使用sudo:是的

代码语言:javascript
复制
TASK: [apache | Install Apache] ***********************************************

<server-name> ESTABLISH CONNECTION FOR USER: dexter

<server-name> REMOTE_MODULE yum name=httpd state=present

<server-name> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o', 'ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'User=dexter', '-o','ConnectTimeout=10', 'server-name', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1416243654.43-120840990326663 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1416243654.43-120840990326663 && echo $HOME/.ansible/tmp/ansible-tmp-1416243654.43-120840990326663'"]

<server-name> PUT /tmp/tmpV8bobo TO /home/dexter/.ansible/tmp/ansible-tmp-1416243654.43-120840990326663/yum

<server-name> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o', 'ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'User=dexter', '-o', 'ConnectTimeout=10', 'server-name', u'/bin/sh -c \'sudo -k && sudo -H -S -p "[sudo via ansible, key=nnqylcywghyrogwhmdyzwidpsqbqxuef] password: " -u root /bin/sh -c \'"\'"\'echo SUDO-SUCCESS-nnqylcywghyrogwhmdyzwidpsqbqxuef; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python -tt /home/dexter/.ansible/tmp/ansible-tmp-1416243654.43-120840990326663/yum; rm -rf /home/dexter/.ansible/tmp/ansible-tmp-1416243654.43-120840990326663/ >/dev/null 2>&1\'"\'"\'\'']

fatal: [server-name] => failed to parse: Sorry, user dexter is not allowed to execute '/bin/sh -c echo SUDO-SUCCESS-nnqylcywghyrogwhmdyzwidpsqbqxuef; LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python -tt /home/dexter/.ansible/tmp/ansible-tmp-1416243654.43-120840990326663/yum; rm -rf /home/dexter/.ansible/tmp/ansible-tmp-1416243654.43-120840990326663/ >/dev/null 2>&1' as root on server-name.mia.amadeus.net.


FATAL: all hosts have already failed -- aborting
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-14 19:07:43

你不需要排队:

代码语言:javascript
复制
sudo_user: dexter 

它将使脚本以“dexter”的形式执行,并且您希望成为根用户。因此,ansible ssh作为用户'dexter‘远程主机,然后sudo 'dexter’。:)

intro.html

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26935810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档