0

私は、リモートサーバで以下のスクリプトを実行して出力を得ようと、2.4センチポンドで使用しています。ここでの問題はyum情報出力がjson形式でも表示されていることです。しかし、私は出力だけを表示する必要があります。 json形式を削除する方法。望ましくないものを印刷する可能性のある出力。特定のデータのみを書式設定して表示する方法

--- 

- hosts: GeneralServer 

    tasks: 
    - name: Checking the service status 
    shell: systemctl status {{ item }} 
    with_items: 
     - httpd 
     - crond 
     - postfix 
     - sshd 
    register: service 
    - debug: var=service 
    - name: Checking the package info 
    shell : yum info {{ item }} 
    with_items: 
     - httpd 
     - postfix 
    register: info 
    - debug: var=info 
    - name: Executing the mysql running scripts in mysql 
    shell: mysql -u username --password mysql -Ns -e 'show databases;' 
    register: databases 
    - debug: var=databases 

また、私はコールバックモジュールで新しくなっています。この問題を解決するのを手伝ってください。

stdout_lines値のみを表示することは可能ですか?

答えて

0

あなたは

$ ANSIBLE_STDOUT_CALLBACK=oneline ansible-playbook myplaybook.yml 
$ ANSIBLE_STDOUT_CALLBACK=minimal ansible-playbook myplaybook.yml 

:例えば、あなたの出力を変更するために別のコールバックプラグインで再生しようとすることができます。しかし、それはAnsibleがデータをどのように解釈するかだと一般的に、あなたは、JSONを避けられないでしょう。

情報量を減らすために、さまざまな技術を使用できます。例えば、json_queryフィルタ。

このような何か:

- debug: 
    msg: "{{ info.results | json_query('[].stdout_lines[]') }}" 
+0

は、ご返信いただきありがとうございます。答えは、私が必要とする情報の結果を正確に示しています。しかし、このコードはJsonも印刷しています。 – p271989

+0

私のコメントにご注意ください:_一般的に、あなたはJSONを避けることはできません。なぜなら、Ansibleがデータを解釈する方法です。あなたは好きな方法でデータを印刷する独自のコールバックプラグインをいつでも書くことができます。 –

+0

コールバックプラグインを参照できるリンクはありますか?私はコールバックプラグインとpython.thanksで新しいです – p271989

関連する問題