2017-12-22 19 views
-1

私はこのような出力を得ています。アクセス方法入力可能なパラメータとしての出力可能

ok: [localhost] => { 
"ansible_facts": { 
"filter3": [ 
    "id = 1", 
    "type = DM", 
    "status = started", 
    "provisioning = completed", 
    "build = yes", 

私の要件は、この出力を安全なスクリプトのパラメータとして使用することです。

たとえば、idは変数名、10001はidの値です。

ここで私は道のように、私は

[prod] 
id = 1 
type = DM 
status = started 
provisioning = completed 
build = yes 

のように出力をファイルに保存していると私はいくつかを得ることのチャンスがあるでしょう

- set_fact: id="{{ lookup('ini', 'id section=prod file=/home/var.properties') }}" 
- set_fact: provisioning="{{ lookup('ini', 'provisioning section=prod file=/home/var.properties') }}" 
- set_fact: build="{{ lookup('ini', 'build section=prod file=/home/var.properties') }}" 

のようにアクセスしていますが、次のよ将来の出力における余分なパラメータ。だから毎回、これらのパラメータにアクセスするためにset_factにコードを追加する必要があります。

これを避けるには、出力からこれらのパラメータに直接アクセスし、次のタスクの実行に使用する必要があります。これで私を助けてください。

答えて

0

私はあなたの質問を理解することはできませんが、基本的には、あなたが探しているのは登録の使用です。

これらはファクトと同じ方法で動作しますが、動的コンテンツを持つ場合はより柔軟です。

次に、クエリ言語を使用してレジスタの任意の部分にアクセスできます。 (オンライン構文テスター:http://jmespath.org/tutorial.html

例:

--- 
- name: List packages 
    shell: /usr/bin/dpkg-query -l '*{{ item }}*' | grep '^ii ' | awk 'BEGIN { OFS = "-" } { print $2,$3,$4 }' 
    with_items: 
    - openssh 
    - openssl 
    - vim 
    - python 
    failed_when: false 
    register: pkg 

- debug: 
    msg: | 
     {{ "Installed packages found #" | comment('plain', prefix='############################', postfix='############################')}} 
     {{ pkg | json_query(query) | to_nice_yaml }} 
    vars: 
    query: "results[].{name: item, version: stdout_lines}" 
... 
関連する問題