2017-08-17 2 views
2

私はStackoverflowを初めて使用していますので、私と一緒に裸にしてください。私の現在の問題は、パワフルで解析可能なstdoutです。私は、不可解な演奏からstdoutをキャプチャし、stdout内の特定の部分文字列についてこの出力を解析し、varに保存する必要があります。私の具体的なユースケースは、これは次の行で出力を生成stdoutからパースできるテキスト文字列

- shell: "vault.sh --keystore EAP_HOME/vault/vault.keystore | --keystore-password vault22 --alias vault --vault-block | vb --attribute password --sec-attr 0penS3sam3 --enc-dir | EAP_HOME/vault/ --iteration 120 --salt 1234abcd" register: results become: true

を下回っている、目標は、私が設定するためにそれを使用できるようにansible Varのことをボールトが生成するJBossのマスクされたキーをキャプチャして保存することですstandalone.xmlテンプレート:

vault-option name="KEYSTORE_PASSWORD" value="MASK-5dOaAVafCSd"/>

私は道おそらく正規表現で、この文字列を解析し、set_factsモジュールまたはその他のansibleモジュールを使用してansible VARに「MASK-5dOaAVafCSd」ストリングを保存する必要があります。

現在、私のコードは、この

#example stdout results: vault-option name=\"KEYSTORE_PASSWORD\" value=\"MASK-5dOaAVafCSd\"/> - name: JBOSS_VAULT:define keystore password masked value variable set_fact: masked_value: | "{{ results.stdout | regex_replace('^.+(MASK-.+?)\.+','\\1') }}"

このコードはresults.stdout、ない期待キャプチャグループとしてmasked_valueを定義しているように見えます。

多くのおかげで、 -Tony N.

+0

あなたの質問を言い換えてください、それは絶対に不明です。あなたは完全なプレイブックを実行し、それを出力する必要がありますか?または、そのコマンドの出力だけで、プレイブックやフィドル内でいくつかのコマンドを実行しますか? –

+0

こんにちはコンスタンチン、私は変数にMASK - 5dOaAVafCSdを格納しようとしています。 – TonyNguyen

答えて

3

は、あなたは非常に接近しています。 regex101.comを使用して正規表現をテストするようアドバイスします。

ここ

は私のソリューションです:

--- 
- hosts: localhost 
    gather_facts: no 
    tasks: 
    - shell: echo 'vault-option name="KEYSTORE_PASSWORD" value="MASK-5dOaAVafCSd"' 
     register: results 
    - set_fact: 
     myvalue: "{{ results.stdout | regex_search(regexp,'\\1') }}" 
     vars: 
     regexp: 'value=\"([^"]+)' 
    - debug: 
     var: myvalue 

結果:

ok: [localhost] => { 
    "myvalue": [ 
     "MASK-5dOaAVafCSd" 
    ] 
} 

更新:

regex_searchので、唯一の最初の使用を取得するには、見つかったマッチのリストを返します。

{{ results.stdout | regex_search(regexp,'\\1') | first }} 
+0

これは動作します、ありがとう、コンスタンチン! :) – TonyNguyen

+0

ちょっとKonstantin、私は値= {{myvalue}}のようなテンプレートモジュールでmyvalue varを使うと、そのテンプレートを値= [u'MASK-5dOaAVafCSd '] ...に入れていますか?それがなぜ起こっているのか分かりませんか?ありがとうございました – TonyNguyen

+0

私の答えを更新しました –

関連する問題