2014-03-03 4 views
0

를 통해 원격 호스트에 정상을 실행할 수 없습니다 나는 다음과 같은 각본이 있습니다Ansible

--- 
- hosts: ESNodes 
    remote_user: ihazan 
    tasks: 
    - name: Run Monitoring 
    action: command /tmp/monitoring/cpu_mon 

다음과 같이/tmp를/감시/cpu_mon의 내용은 다음과 같습니다

top -bn1800 -p $(ps -ef | grep elasticsearch | grep -v grep | grep -v sudo | awk '{print $2}') | grep root > /tmp/cpu_stats & 

에주의 위에 그 실행중인 배경 &

해당 게임을 실행할 때 상위 명령에 영원히 붙어있을 수 있음 :

-bash-4.1$ ansible-playbook es_playbook_run.yml -l PerfSetup -K -f 10 
sudo password: 

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

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

TASK: [Run Monitoring] ******************************************************** 

(ansible가해야 할 일입니다) 잘 작동 원격 SSH를 통해 그것을 실행하는 경우 :

-bash-4.1$ ssh [email protected] 'nohup /tmp/monitoring/cpu_mon' 
-bash-4.1$ 

다음은 출력의 디버그 버전 :

-bash-4.1$ ansible-playbook es_playbook_run.yml -l PerfSetup -K -f 10 -vvvv 
sudo password: 

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

GATHERING FACTS *************************************************************** 
<isk-vsrv643> ESTABLISH CONNECTION FOR USER: ihazan on PORT 22 TO isk-vsrv643 
<isk-vsrv643> EXEC /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-1393860499.75-256362698809430 && chmod a+rx $HOME/.ansible/tmp/ansible-1393860499.75-256362698809430 && echo $HOME/.ansible/tmp/ansible-1393860499.75-256362698809430' 
<isk-vsrv643> REMOTE_MODULE setup 
<isk-vsrv643> PUT /tmp/tmpZh9bYP TO /usr2/ihazan/.ansible/tmp/ansible-1393860499.75-256362698809430/setup 
<isk-vsrv643> EXEC /bin/sh -c '/usr/bin/python /usr2/ihazan/.ansible/tmp/ansible-1393860499.75-256362698809430/setup; rm -rf /usr2/ihazan/.ansible/tmp/ansible-1393860499.75-256362698809430/ >/dev/null 2>&1' 
ok: [isk-vsrv643] 

TASK: [Run Monitoring] ******************************************************** 
<isk-vsrv643> ESTABLISH CONNECTION FOR USER: ihazan on PORT 22 TO isk-vsrv643 
<isk-vsrv643> EXEC /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-1393860500.32-92141081389545 && chmod a+rx $HOME/.ansible/tmp/ansible-1393860500.32-92141081389545 && echo $HOME/.ansible/tmp/ansible-1393860500.32-92141081389545' 
<isk-vsrv643> REMOTE_MODULE command /tmp/monitoring/cpu_mon 
<isk-vsrv643> PUT /tmp/tmp7dYRPY TO /usr2/ihazan/.ansible/tmp/ansible-1393860500.32-92141081389545/command 
<isk-vsrv643> EXEC /bin/sh -c '/usr/bin/python /usr2/ihazan/.ansible/tmp/ansible-1393860500.32-92141081389545/command; rm -rf /usr2/ihazan/.ansible/tmp/ansible-1393860500.32-92141081389545/ >/dev/null 2>&1' 

들으 사전

답변

1

화재 및 잊어 모드를 사용하십시오. 즉, async + poll 0 :

비동기에3210
--- 
- hosts: ESNodes 
    remote_user: ihazan 
    tasks: 
    - name: Run Monitoring 
    action: command /tmp/monitoring/cpu_mon 
    async: 45 
    poll: 0 

전체 특종은 여기에 있습니다 : http://docs.ansible.com/playbooks_async.html

행운을 빕니다.

+0

Thx. 그것은 비동기와 함께 작동하지 않았다. 나는 nohup으로 접두사를 붙이면된다. 정말 고마워. 대답을 수락합니다. –