1. ホーム
  2. shell

[解決済み] Ansibleを使ってリモートサーバーでシェルスクリプトを実行するには?

2022-03-12 02:06:06

質問

Ansible playbookを使用して、リモートサーバー上でシェルスクリプトを実行しようと考えています。

空の test.sh ファイルを作成します。

touch test.sh

プレイブック

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

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

どうすればいいですか?

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

スクリプトの実行" タスクを次のように変更します。

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

をクリックすると、それが実行されるはずです。

sudoはplaybookですでに定義されているので、コマンドラインで繰り返す必要はありません。

によると Ansible プレイブック入門 user というパラメータに変更されました。 remote_user Ansible 1.4では、次のように変更する必要があります。

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