用ps

2016-11-09 26 views
0

ansible啓動過程中,如果沒有運行,我使用ansible啓動NameNode的過程中,如果櫃面它不跑,我使用jps檢查過程和使用service_namenode_status檢查狀態,並開始使用service_namenode_start任何想法如何處理正確使用這個...?用ps

- name: Check if Namenode is running 
    shell: jps | grep " NameNode" | grep -v grep 
    ignore_errors: yes 
    changed_when: false 
    register: service_namenode_status 

    - name: Report status of Namenode 
    fail: 
     msg: | 
     Service NameNode is not running. 
     Return code from `jps | grep " NameNode" | grep -v grep`: 
     {{ service_namenode_status.rc }} 
    when: service_namenode_status.rc != 0 
    register: service_namenode_start 

    - name: Start Namenode 
    command: su - hdfs -c "/usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR start namenode" 
    tags: namenode 
    when: service_namenode_status.rc != 0 

OUTPUT:

TASK [namenode : Check if Namenode is running] ********************************* 
fatal: [server1.hdp.vagrant.data.uc]: FAILED! => {"changed": false, "cmd": "jps | grep \" NameNode\" | grep -v grep", "delta": "0:00:00.192755", "end": "2016-11-09 10:59:10.360552", "failed": true, "rc": 1, "start": "2016-11-09 10:59:10.167797", "stderr": "", "stdout": "", "stdout_lines": [], "warnings": []} 
...ignoring 

TASK [namenode : Report status of Namenode] ************************************ 
fatal: [server1.hdp.vagrant.data.uc]: FAILED! => {"changed": false, "failed": true, "msg": "Service NameNode is not running.\nReturn code from `jps | grep \" NameNode\" | grep -v grep`:\n1 \n"} 

NO MORE HOSTS LEFT ************************************************************* 

RUNNING HANDLER [metastore : restart postgresql] ******************************* 
    to retry, use: --limit @/Users/krisdigitx/myLab/hdp/provisioning/site.retry 

PLAY RECAP ********************************************************************* 
server1.hdp.vagrant.data.uc : ok=86 changed=32 unreachable=0 failed=1 

Ansible failed to complete successfully. Any error output should be 
visible above. Please fix these errors and try again. 

回答

0

試試這個:

- name: Check if Namenode is running 
    tags: namenode 
    shell: jps | grep " NameNode" | grep -v grep 
    ignore_errors: yes 
    changed_when: false 
    register: service_namenode_status 

- name: Start Namenode 
    tags: namenode 
    command: su - hdfs -c "/usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh --config $HADOOP_CONF_DIR start namenode" 
    when: service_namenode_status.rc == 1 

我的變化是:

  1. 我添加了 「標籤:NameNode的」 行第1部分;你需要收集寄存器的值,如果你在這個標籤

  2. 我刪除了你的第二部分,直奔3號過濾。

一個類似的配置正在爲我解決類似的問題。