1

Ansible に次のプレイブックがあります。

---
- hosts: ESNodes
  sudo: yes
  tasks:
  - name: Copy Elasticsearch
    copy: src=~/elasticsearch-1.0.0.tar.gz dest=/opt/elasticsearch-1.0.0.tar.gz
  - name: Untar Elasticsearch
    action: shell cd /opt/ && tar xvfz elasticsearch-1.0.0.tar.gz

次のようにプレイブックを実行する場合:

bash-4.1$ ansible-playbook es_playbook.yml  -K 
sudo password: 

PLAY [ESNodes] **************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [isk-vsrv643]

TASK: [Copy Elasticsearch] **************************************************** 
failed: [isk-vsrv643] => {"failed": true}
msg: Could not replace file: /usr2/ihazan/.ansible/tmp/ansible-1393762341.08-257257560838959/source to /opt/elasticsearch-1.0.0.tar.gz: [Errno 13] Permission denied: '/usr2/ihazan/.ansible/tmp/ansible-1393762341.08-257257560838959/source'

FATAL: all hosts have already failed -- aborting

PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/usr2/ihazan/es_playbook.retry

isk-vsrv643                : ok=1    changed=0    unreachable=0    failed=1   

権限の問題で失敗します。

リモートホストでは、次のことができません:

-bash-4.1$ cp elasticsearch-1.0.0.tar.gz /opt/
cp: cannot create regular file `/opt/elasticsearch-1.0.0.tar.gz': Permission denied

しかし、私はできる:

-bash-4.1$ sudo cp elasticsearch-1.0.0.tar.gz /opt/

プレイブックで何が間違っていますか?

事前にThx

4

2 に答える 2

0

hazan、宛先ホストで sudo を作成するユーザーが見つからない可能性があります: Playbook で宣言しない場合は、ansible-playbook コマンドに追加の変数を追加する必要があります。次に例を示します。

ansible-playbook -i hosts playbook.yml --extra-vars "user=your_user"

次に、ansible は宛先ホストで「your_user」を使用してタスクを実行します。

于 2014-07-11T14:03:46.620 に答える