我试图从Ansible playbook中的Web服务器中获取文件.
这是Ansible片段:
---
- hosts: all
sudo: true
tasks:
- name: Prepare Install folder
sudo: true
action: shell sudo mkdir -p /tmp/my_install/mysql/ && cd /tmp/my_install/mysql/
- name: Download MySql
sudo: true
action: shell sudo wget http://{{ repo_host }}/MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar
Run Code Online (Sandbox Code Playgroud)
通过以下方式调用它:
ansible-playbook my_3rparties.yml -l vsrv644 --extra-vars "repo_host=vsrv656" -K -f 10
Run Code Online (Sandbox Code Playgroud)
它失败了以下内容:
Cannot write to `MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar' (Permission denied).
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/usr2/ihazan/vufroria_3rparties.retry
vsrv644 : ok=2 changed=1 unreachable=0 failed=1
Run Code Online (Sandbox Code Playgroud)
当尝试通过常规远程ssh执行失败的命令以模仿ansible将执行的操作时,它不会按以下方式工作:
-bash-4.1$ ssh ihazan@vsrv644 'cd /tmp/my_install/mysql && sudo wget http://vsrv656/MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar'
Enter passphrase for key '/usr2/ihazan/.ssh/id_rsa':
sudo: sorry, you must have a tty to run sudo
Run Code Online (Sandbox Code Playgroud)
但是我可以使用-t解决它,如下所示:
-bash-4.1$ ssh -t ihazan@vsrv644 'cd /tmp/my_install/mysql && sudo wget http://vsrv656/MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar'
Run Code Online (Sandbox Code Playgroud)
然后它工作.
有没有办法在ansible上设置-t(伪tty选项)?
PS:我可以像其他人建议的那样通过编辑sudoers文件来解决它,但这是我试图避免的手动步骤.
use*_*735 66
当有专门的模块可用时,不要使用shell -module.在你的情况下:
使用file -module 创建目录:
- name: create project directory {{ common.project_dir }}
file: state=directory path={{ common.project_dir }}
Run Code Online (Sandbox Code Playgroud)
使用get_url -module 下载文件:
- name: download sources
get_url: url={{ opencv.url }} dest={{ common.project_dir }}/{{ opencv.file }}
Run Code Online (Sandbox Code Playgroud)
请注意上面示例中的新模块调用语法.
如果必须使用sudo密码,请记住--ask-sudo-pass在需要时给出(参见例如远程连接信息).
| 归档时间: |
|
| 查看次数: |
36034 次 |
| 最近记录: |