Comment exécuter un script shell sur un serveur distant en utilisant Ansible?
Je prévois d'exécuter un script shell sur un serveur distant en utilisant Ansible playbook.
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
Lorsque j'exécute le playbook, le transfert se produit avec succès mais le script n'est pas exécuté.
3 réponses
local_action
exécute la commande sur le serveur local, non pas sur les serveurs que vous spécifiez dans hosts
paramètre.
Remplacez votre tâche "Exécuter le script" par
- name: Execute the script
command: sh /home/test_user/test.sh
Et il devrait le faire.
Vous n'avez pas besoin de répéter sudo dans la ligne de commande car vous l'avez déjà défini dans le playbook.
Selon Ansible Intro aux Playbooks user
le paramètre a été renommé en remote_user
dans Ansible 1.4, vous devez donc le changer aussi
remote_user: test_user
Donc, le playbook va devenir:
---
- 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
, Il est préférable d'utiliser script
module:
http://docs.ansible.com/script_module.html