tutorial tower source playbook open example ansible

tower - Ansible y Wget



ansible tutorial (1)

Estoy tratando de obtener un archivo de un servidor web desde un libro de jugadas de Ansible.

Aquí está el fragmento 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

Invocándolo a través de:

ansible-playbook my_3rparties.yml -l vsrv644 --extra-vars "repo_host=vsrv656" -K -f 10

Falla con lo siguiente:

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

Cuando se intenta ejecutar el comando que falla a través de un ssh remoto normal para imitar lo que haría ansible, no funciona de la siguiente manera:

-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

Pero puedo resolverlo usando -t como sigue:

-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''

Entonces funciona.

¿Hay alguna manera de configurar la opción -t (pseudo tty) en ansible?

PD: podría resolverlo editando el archivo sudoers como proponen otros, pero es un paso manual que trato de evitar.


No utilice el módulo de shell cuando haya módulos especializados disponibles. En tu caso:

Crear directorios con file -módulo:

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

Descargar archivos con get_url -module:

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

Note la nueva sintaxis de llamada del módulo en los ejemplos anteriores.

Si tiene que usar sudo con contraseña, recuerde dar --ask-sudo-pass cuando sea necesario (ver, por ejemplo, Información de conexión remota ).