shell - run - scripts linux ejercicios resueltos
¿Cómo ejecutar un script de shell en un servidor remoto usando Ansible? (3)
Es mejor usar el módulo de script
para eso:
script
Estoy planeando ejecutar un script de shell en un servidor remoto usando el libro de jugadas de Ansible.
test.sh:
touch test.txt
Playbook:
---
- name: Transfer and execute a script.
hosts: server
user: test_user
sudo: yes
tasks:
- name: Transfer the script
copy: src=test.sh dest=/home/test_user mode=0777
- name: Execute the script
local_action: command sudo sh /home/test_user/test.sh
Cuando ejecuto el libro de jugadas, la transferencia se realiza con éxito pero el script no se ejecuta.
puedes usar el módulo de script
Ejemplo
- name: Transfer and execute a script.
hosts: all
tasks:
- name: Copy and Execute the script
script: /home/user/userScript.sh
local_action
ejecuta el comando en el servidor local, no en los servidores que especifique en el parámetro hosts
.
Cambie su tarea "Ejecutar el script" a
- name: Execute the script
command: sh /home/test_user/test.sh
y debería hacerlo.
No necesita repetir sudo en la línea de comando porque ya lo ha definido en el libro de jugadas.
De acuerdo con la introducción de Ansible a los remote_user
de remote_user
parámetro de user
se renombró a remote_user
en Ansible 1.4, por lo que también debe cambiarlo.
remote_user: test_user
Así, el playbook se convertirá en:
---
- name: Transfer and execute a script.
hosts: server
remote_user: test_user
sudo: yes
tasks:
- name: Transfer the script
copy: src=test.sh dest=/home/test_user mode=0777
- name: Execute the script
command: sh /home/test_user/test.sh