Ansible和Wget

Ansible和Wget,ansible,Ansible,我正在尝试从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: Downloa

我正在尝试从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 
通过以下方式调用它:

ansible-playbook my_3rparties.yml -l vsrv644 --extra-vars "repo_host=vsrv656" -K -f 10 
它在以下情况下失败:

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   
当试图通过常规远程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
-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'
但是我可以用-t来解决它,如下所示:

-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
-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'
然后它就起作用了

有没有办法在ansible上设置-t(伪tty选项)

注:我可以像其他人建议的那样编辑sudoers文件来解决这个问题,但这是我试图避免的手动步骤。

当有专门的模块可用时,不要使用-module。就你而言:

使用-module创建目录:

使用-模块下载文件:

注意上面示例中的新模块调用语法

如果您必须使用带密码的
sudo
,请记住在需要时提供
——询问sudo pass
(参见示例)。

在Ansible中:

  • 用于管理文件/目录的文件模块
  • 获取url模块以下载所需内容
  • 变成:是使用sudo特权
参见ansible文档:

仅供参考,所有链接(远程连接信息链接除外)都已失效,以下是可用链接:-外壳模块:-文件模块:-获取url模块:文档使用了与此处不同的语法,我不确定它是否仍然有效或是否可以工作,但值得记住。