web-dev-qa-db-ja.com

Ansibleを使用してリモートサーバーでシェルスクリプトを実行する方法は?

Ansible Playbookを使用して、リモートサーバーでシェルスクリプトを実行する予定です。

test.sh:

touch test.txt

プレイブック:

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

プレイブックを実行すると、転送は正常に行われますが、スクリプトは実行されません。

45
Pattu

local_actionは、hostsパラメーターで指定したサーバーではなく、ローカルサーバーでコマンドを実行します。

「スクリプトの実行」タスクを変更します

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

そしてそれはそれを行う必要があります。

プレイブックで既に定義しているため、コマンドラインでSudoを繰り返す必要はありません。

PlaybookのAnsible Introuserパラメータは、Ansible 1.4でremote_userに名前が変更されたため、変更する必要があります

remote_user: test_user

そのため、プレイブックは次のようになります。

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

scriptモジュールを使用できます

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

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

そのためにscriptモジュールを使用することをお勧めします。
http://docs.ansible.com/script_module.html

20
voronin