Ansible和Wget
我正在尝试从Ansible playbook中的web服务器中创建一个文件 以下是Ansible代码片段: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
---
- 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特权