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
プレイブックを実行すると、転送は正常に行われますが、スクリプトは実行されません。
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
scriptモジュールを使用できます
例
- name: Transfer and execute a script.
hosts: all
tasks:
- name: Copy and Execute the script
script: /home/user/userScript.sh
そのためにscript
モジュールを使用することをお勧めします。
http://docs.ansible.com/script_module.html