gpt4 book ai didi

Ansible 和 Wget

转载 作者:行者123 更新时间:2023-12-02 06:40:05 25 4
gpt4 key购买 nike

我正在尝试从 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

但我可以使用 -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'

然后就可以了。

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

P.S:我可以按照其他人的建议通过编辑 sudoers 文件来解决这个问题,但这是我试图避免的手动步骤。

最佳答案

不要使用shell -module 当有专门的模块可用时。对于您的情况:

使用 file 创建目录-模块:

- name: create project directory {{ common.project_dir }}
file: state=directory path={{ common.project_dir }}

使用get_url下载文件-模块:

- name: download sources
get_url: url={{ opencv.url }} dest={{ common.project_dir }}/{{ opencv.file }}

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

如果您必须使用 sudo 和密码,请记住在需要时提供 --ask-sudo-pass (参见例如 Remote Connection Information )。

关于Ansible 和 Wget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com