Ansible: 불변 보간이 포함된 템플릿 채우기

Ansible: 불변 보간이 포함된 템플릿 채우기

템플릿 파일을 가져와서 일부 변수를 삽입하고 결과 파일을 다른 디렉터리에 저장하는 플레이북을 만들어야 합니다.

문제의 첫 번째 부분은 결과 파일이 다른 Ansible 플레이북으로 사용되므로 소스 파일에 다른 보간이 포함되어 있으며 이러한 보간은 그대로 보존되어야 한다는 것입니다. 예를 들어, 소스 파일에 다음과 같은 내용이 포함되어 있다고 가정해 보겠습니다.

key1: {{ value1 }}
key2: {{ value2 }}

의 값은 key1내 플레이북에 의해 보간되어야 하지만(변수의 값이 됨 value1) 동시에 value2그대로 유지되어야 합니다( {{ value2 }}.

문제의 두 번째 부분은 소스 파일을 수정하고 중괄호 앞에 백슬래시를 추가할 수 없다는 것입니다. 왜냐하면 이 파일은 다른 프로세스에 의해 업데이트되기 때문입니다. 게다가 템플릿 파일이 수시로 업데이트되기 때문에 다음 업데이트 이후에는 어떤 변수를 건너뛰어야 할지 예측할 수 없습니다. 보간해야 한다는 것만 알고 있지만 value1다른 변수의 이름은 무엇인지 모릅니다(오늘은 value2및 가 있고 value3내일 개발자는 이름을 value2로 바꾸고 어딘가에 value2_deprecated추가했습니다 ).value3

보간만 필요하도록 Ansible에 요청할 수 있나요 value1?

감사합니다.

답변1

큐:"템플릿에는 보간이 포함되어 있으며 이러한 보간은 그대로 유지되어야 합니다."

A: 기본 변수를 선언하세요.

    lbr: '{{ "{{" }}'
    rbr: '{{ "}}" }}'
    value1: '{{ lbr }} value1 {{ rbr }}'
    value2: '{{ lbr }} value2 {{ rbr }}'

템플릿을 만들고

shell> cat template.yml.j2
key1: {{ value1 }}
key2: {{ value2 }}

큐:"value1만 보간해야 합니다."

A: 기본값을 재정의합니다. 예:

    - template:
        src: template.yml.j2
        dest: playbook.yml
      vars:
        value1: value1

준다

shell> cat playbook.yml 
key1: value1
key2: {{ value2 }}

관련 정보