it-swarm.com.de

Wie führe ich ein Shell-Skript mit Ansible auf einem Remote-Server aus?

Ich plane, ein Shell-Skript auf einem Remote-Server mit Ansible-Playbook auszuführen.

test.sh:

touch test.txt

Spielbuch:

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

Wenn ich das Playbook starte, wird die Übertragung erfolgreich durchgeführt, das Skript jedoch nicht ausgeführt.

45
Pattu

local_action Führt den Befehl auf dem lokalen Server aus, nicht auf den Servern, die Sie im Parameter hosts angegeben haben.

Ändern Sie die Aufgabe "Skript ausführen" in

- name: Execute the script
  command: sh /home/test_user/test.sh

und es sollte es tun.

Sie müssen Sudo nicht in der Befehlszeile wiederholen, da Sie es bereits im Playbook definiert haben.

Laut Ansible Intro to Playbooks wurde der Parameter user in Ansible 1.4 in remote_user Umbenannt, daher sollten Sie ihn auch ändern

remote_user: test_user

So wird das Spielbuch:

---
- 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
38
Pasi H

sie können das Modul script verwenden

Beispiel

- name: Transfer and execute a script.
  hosts: all
  tasks:

     - name: Copy and Execute the script 
       script: /home/user/userScript.sh
83
Kunwar

Es ist besser, dafür das script Modul zu verwenden:
http://docs.ansible.com/script_module.html

20
voronin