2017-09-13 14 views
-1

저는 신입생입니다. 대상 호스트에서 팩트 값을 수집하여 플레이 내에서 변수로 사용해야하는 작은 플레이 북을 작성하고 있습니다. 누군가 그 일을 어떻게 도와 줄 수 있습니까?해당 변수에 팩트 값을 할당 할 수 있습니다.

--- 
- hosts: all 
    gather_facts: True 
    become: true 
    become_method: sudo 
    become_user: root 
    vars: 
    BUILD_PATH: /opt/services/dev 


    pre_tasks: 
    - setup: 
     filter: ansible_env 
    - set_fact: 
     tag: "{{ ansible_env.DATA_AGGREGATOR_ENV }}" 
    - debug: var=ENV 

    tasks: 
    - name: Copy to Build to DATA 
     shell: cp -pr {{ BUILD_PATH }} {{ ENV }} 

참고 : DATA_AGGREGATOR_ENV 모든 서버에 정의 된 환경 변수와 값이 한 서버에서 다른 다릅니다.

+0

무엇이 문제입니까? –

+0

설정 작업 – papey

+0

에 의해 생성 된 var를 직접 사용할 수 있습니다. @papey는 게임 플레이에서 직접 사실을 사용할 수 있다고 말했지만, 물론 "gather_facts"가 true 인 "{{ansible_env.DATA_AGG_ENV}}"가되어야합니다. 기본값은 – itiic

답변

0

변수 tag을 설정했지만 변수 ENV을 사용합니다.

ENV 변수를 사용하려면 ENV 변수를 설정해야합니다.

- set_fact: 
    ENV: "{{ ansible_env.DATA_AGG_ENV }}" 

은 또는 당신은 당신이 tag 변수를 설정 한 경우 tag 변수를 사용해야합니다.

shell: cp -pr {{ BUILD_PATH }} {{ tag }} 

btw : filter 행에 공백이 없습니다.

+0

응답 해 주셔서 감사합니다 나는 위의 변경 사항을 시도하고 "FAILED! => {"failed ": true,"msg ":" 'args'필드에 유효하지 않은 값이있어 정의되지 않은 변수가 포함 된 것 같습니다. 오류는 'dict object'에 'DATA_AGGREGATOR_ENV'속성이 없습니다. \ n \ n 오류는 '/u1/jenkins/workspace/Deploy_DAGG_Services/ecom-deploy/test.yml'에있는 것으로 나타납니다 : 15 행 6 열 \ n \ n 문제가되는 행은 다음과 같이 나타날 수 있습니다. \ n \ n 필터 : ansible_env \ n - set_fact : \ n^여기 \ n "}" – suru1432002

+0

DATA_AGGREGATOR_ENV! = DATA_AGG_ENV – ceving

+0

미안 실제 환경 변수는 DATA_AGGREGATOR_ENV입니다. 다음은 완전한 출력입니다. "ansible_facts" "ansible_env의 : { "ansible_env ": { "DAGG_HOME ":"/ 옵션/서비스은/dev/ECOM-데이터 애그리 게이터 (aggregator) ", "DATA_AGGREGATOR_ENV ":"단계 ", "DPS_ENV ":"단계 " "PWD ":"/ 홈/ansible " "SHELL ":"/ 빈/bash는 " "TERM ":"xterm 등-256color ", "USER ":"ansible " "_ " : "/ bin/sh" } }, "changed": false } " – suru1432002