2017-11-02 5 views
0

特有の問題。なんらかの理由で、stdoutの値が正しく認識されていません。私がしようとしているのは、耳にしているポートの値をgrepしてマッチさせることです。定義されたポートが存在する場合(すなわち、1つのメッセージが生成された場合はそれを聴取し、そうでない場合は別のメッセージを生成する)。ここでstdoutが正しく渡されていませんか?

--- 
    - name: check_prometheus_status_kafka 
    shell: /usr/sbin/ss -lnt|awk '{ print $4}'|grep 9071 |sed 's/\*//'| sed 's/\://' 
    register: prom_status 
    - debug: var=prom_status.stdout 
    tags: 
     - check_prometheus_status_kafka 

    - name: post_message_prom_kafka 
    debug: msg="Prometheus for Kafka {{ (kafka_prom_port == prom_status.stdout) | ternary ('', 'NOT') }} listening on {{ kafka_prom_port }} - Current Listen value is {{ prom_status.stdout }}" 
    tags: 
     - post_message_prom_kafka 

が出力されます:

TASK [kafkanodes : check_prometheus_status_kafka] ********************************************************************************************************** 
changed: [mifid-cnj-prod-k1.bnymellon.net] 

TASK [kafkanodes : debug] ********************************************************************************************************************************** 
ok: [mifid-cnj-prod-k1.bnymellon.net] => { 
    "prom_status.stdout": "9071" 
} 

TASK [kafkanodes : post_message_prom_kafka] **************************************************************************************************************** 
ok: [mifid-cnj-prod-k1.bnymellon.net] => { 
    "msg": "Prometheus for Kafka NOT listening on 9071 - Current Listen value is 9071" 
} 

あなたが見ることができるように、Ansibleは、前のタスクが明示的にポートが「9071に耳を傾けていることを私に伝えながらポートは、上のlistendされていないことを報告しています'(同様に、prom_status.stdoutから値を取得する現在のタスクは私にポートの値を示しています)。今

、私はこの行を交換する場合:それが動作する...

debug: msg="Prometheus for Kafka {{ (kafka_prom_port == 9071) | ternary ('', 'NOT') }} listening on {{ kafka_prom_port }} - Current Listen value is {{ prom_status.stdout }}" 

:これで...

debug: msg="Prometheus for Kafka {{ (kafka_prom_port == prom_status.stdout) | ternary ('', 'NOT') }} listening on {{ kafka_prom_port }} - Current Listen value is {{ prom_status.stdout }}" 

を。何が私はここで行方不明ですか?

おかげさまでもう一度お手伝いします。

アレックス

答えて

1

は強制的に数値にstdout文字列をキャスト:(kafka_prom_port == prom_status.stdout|int)

+0

SpasiboのKostya !! – user2362699

関連する問題