2017-12-22 21 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}" 
...