Подтвердить что ты не робот

Несчастный и Wget

Я пытаюсь загрузить файл с веб-сервера из загрузочной книги Ansible.

Вот фрагмент 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, чтобы имитировать то, что могла бы сделать, оно не работает следующим образом:

-bash-4.1$ ssh [email protected] '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 [email protected] 'cd /tmp/my_install/mysql && sudo wget http://vsrv656/MySQL-5.6.15-1.el6.x86_64.rpm-bundle.tar'

Затем он работает.

Есть ли способ установить параметр -t (псевдо-tty) на доступный?

P.S: Я мог бы решить это, отредактировав файл sudoers, как предлагают другие, но это ручной шаг, который я пытаюсь избежать.

4b9b3361

Ответ 1

Не используйте shell -модуль, когда доступны специализированные модули. В вашем случае:

Создание каталогов с file -module:

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

Загрузка файлов с get_url -module:

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

Обратите внимание на новый синтаксис вызова модуля в приведенных выше примерах.

Если вам нужно использовать sudo с паролем, не забудьте указать --ask-sudo-pass при необходимости (см., например, Информация о удаленном подключении).