在ansible下使用sudo权限复制

在ansible下使用sudo权限复制,ansible,ansible-playbook,Ansible,Ansible Playbook,我在Ansible中有以下剧本: --- - hosts: ESNodes sudo: yes tasks: - name: Copy Elasticsearch copy: src=~/elasticsearch-1.0.0.tar.gz dest=/opt/elasticsearch-1.0.0.tar.gz - name: Untar Elasticsearch action: shell cd /opt/ && tar xvfz elast

我在Ansible中有以下剧本:

---
- hosts: ESNodes
  sudo: yes
  tasks:
  - name: Copy Elasticsearch
    copy: src=~/elasticsearch-1.0.0.tar.gz dest=/opt/elasticsearch-1.0.0.tar.gz
  - name: Untar Elasticsearch
    action: shell cd /opt/ && tar xvfz elasticsearch-1.0.0.tar.gz
按如下方式运行剧本时:

bash-4.1$ ansible-playbook es_playbook.yml  -K 
sudo password: 

PLAY [ESNodes] **************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [isk-vsrv643]

TASK: [Copy Elasticsearch] **************************************************** 
failed: [isk-vsrv643] => {"failed": true}
msg: Could not replace file: /usr2/ihazan/.ansible/tmp/ansible-1393762341.08-257257560838959/source to /opt/elasticsearch-1.0.0.tar.gz: [Errno 13] Permission denied: '/usr2/ihazan/.ansible/tmp/ansible-1393762341.08-257257560838959/source'

FATAL: all hosts have already failed -- aborting

PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/usr2/ihazan/es_playbook.retry

isk-vsrv643                : ok=1    changed=0    unreachable=0    failed=1   
它因权限问题而失败

在远程主机上,我无法执行以下操作:

-bash-4.1$ cp elasticsearch-1.0.0.tar.gz /opt/
cp: cannot create regular file `/opt/elasticsearch-1.0.0.tar.gz': Permission denied
但我可以做到:

-bash-4.1$ sudo cp elasticsearch-1.0.0.tar.gz /opt/
我在剧本里错了什么


Thx Prevence

Ansible可能甚至没有登录。您缺少
user
指令:

---
- hosts: ESNodes
  user: whatever_user_that_you_use_to_login_and_has_sudo_access
  sudo: yes

  tasks:
  - name: Copy Elasticsearch
    copy: src=~/elasticsearch-1.0.0.tar.gz dest=/opt/elasticsearch-1.0.0.tar.gz
  - name: Untar Elasticsearch
    action: shell cd /opt/ && tar xvfz elasticsearch-1.0.0.tar.gz

希望有帮助。

hazan,可能是您缺少在目的地主机中进行sudo的用户:如果您没有在playbook中声明,则需要在ansible playbook命令中添加额外的变量,例如:

ansible-playbook -i hosts playbook.yml --extra-vars "user=your_user"

然后,ansible将使用目标主机中的“您的用户”来运行任务。

您可以使用-vvv运行playbook吗?