1

내 핸드북에는 include_vars 모듈을 사용하여 JSON 파일이 포함되어 있습니다.AnISA 플레이 북에서 Jinja2 대체를 방지하는 방법은 무엇입니까?

- name: Configure Component2 variables using REST API 
    uri: 
     url: "http://0.0.0.0:5000/vse/api/v1.0/config/working/Component2/configvars/" 
     method: POST 
     return_content: yes 
     HEADER_x-auth-token: "{{ login_resp.json.token }}" 
     HEADER_Content-Type: "application/json" 
     body: "{{ Component2 }}" 
     body_format: json 

로 : 아래 주어진 JSON 파일이 플레이 북에 포함되어

{ 
    "Component1": { 
    "parameter1" : "value1", 
    "parameter2" : "value2" 
    }, 

    "Component2": { 
    "parameter1" : "{{ NET_SEG_VLAN }}", 
    "parameter2": "value2"  
    } 
} 

후, 내가 HTTP 요청을 전송하는 uri 모듈을 사용하고 있습니다 : JSON 파일의 내용은 아래와 같습니다로 그것은 볼 수있는, HTTP 요청의 본문은 JSON 데이터 Component2와 함께 보내집니다. 그러나 Jinja2는 JSON 파일에서 {{ NET_SEG_VLAN }}을 대체하려고 시도하고 undefined 오류가 발생합니다. 의도는 Jinja2를 사용하여 JSON 파일 내부의 내용을 대체하지 않고 HTTP 요청에서 본문을 그대로 전송하는 것입니다.

어떻게 JSON 파일에서 포함 된 변수의 Jinja2 대체를 방지하기 위해?

답변

2

당신해야 심지어와 변수를 탈출 할 수 {{ '{{NET_SEG_VLAN}}}} 그 블록 내부에 아무것도 템플릿하지 신사를 말합니다.

1

{% raw %}{% endraw %}으로 변수를 escape으로 설정하면 Jinja가 해당 블록 내부에 아무 것도 템플리트하지 않도록 지시 할 수 있습니다.