2016-07-25 2 views
1

어니 셔 너블 (즉, 여러 호스트에 걸쳐) 변수에 "global"변수가 있습니까? 오류 상태를 설정하면 오류 플래그를 설정하고 특정 별도의 전화 번호부를 호출하고 싶습니다. 내 구조 뭔가 다음과 같다 : 나는 group_vars에서 변수를 설정 해봤지만 실행 시간 동안 변수 값을 변경하는 실제 방법도 없다 나에게 나타납니다- 글로벌 변수

- hosts: localhost 
    connection: local 
    gather_facts: no 
    roles: 
    - role1 <-- some error flag is set here 
    - role2 
- include: teardown.yml 
    when: error_flag is defined and error_flag == true 

.

teardown의 when이 로컬 호스트에 없기 때문에 Set_fact가 작동하지 않습니다. 그리고 hostvars['localhost']['error_flag]에 액세스하려고해도 when 절에서 Jinja 템플릿을 사용할 수 없기 때문에 작동하지 않습니다.

+0

호스트 변수'hostvars.localhost.error_flag'는 Jinja2 템플릿이없는'when' 절에서 접근 할 수 있어야합니다. 즉,'{{''}}'Jinja2 구분자없이 그 표현식을 씁니다. –

답변

0

진 황 (Chin Huang)이 위에서 말한 것처럼 나는 when 절 사용과 관련된 구문을 엉망으로 만들고있었습니다. 따라서이를 수정하면 분명히 when 절이 작동합니다. Anatile에서 동적 '글로벌'변수를 선언하는 좋은 방법이 아닌 것 같습니다. hostvars 개체의 호스트 당 변수를 사용하는 것이 가장 실용적인 방법 인 것 같습니다.

다른 출처는 파일을 사용하고 파일에서 데이터를 읽는 것에 대해서도 언급했지만 이는 매우 비효율적 인 것처럼 보입니다. 그래서 저는 물건을 localhost에 저장하여 만기가되었습니다.