본문 바로가기
인프라/앤서블(Ansible)

[ansible] 앤서블 yml 특수문자 ecaspe 처리

by IT맥구리나스 2022. 6. 1.

yml 파일을 작성할 때 특수문자를 escape(\처리)하는게 중요하다.

이번에 expect 모듈을 쓰면서 느끼는거지만 특수문자같이 생긴건 이 잡듯이 잡아

특수문자 앞에 \를 넣어줘야한다.

 

여기서 말하는 특수문자는 다음과 같다.

{, }, [, ], &, *, #, ?, |, -, <, >, =, !, %, @

 

예를 들어보겠다.

아래는 입력 파라메터 문장이 맞으면 자동으로 값을 입력하는 expect모듈을 이용한 yml 파일이다

입력 파라메터 문장에 특수문자가 전혀 없기 때문에 문제없어보인다.

- hosts: localhost
  tasks:
  - name: Test Script
    expect:
      command: /home/jenkins/test.sh
      responses:
        enter on: 'one'
        enter two: 'two'
        enter three: 'three'
        enter password: 'pass'
      echo: yes

 

아래 yml 코드에서의 첫번째 줄에서 \를 넣을 곳을 찾아보자

- hosts: localhost
  tasks:
  - name: Test Script
    expect:
      command: /home/jenkins/test.sh
      responses:
        Proceed with fixed values and no DNS discovery? [no]: 'one'
        enter two: 'two'
        enter three: 'three'
        enter password: 'pass'
      echo: yes

 

정답은 다음과 같다.,

필자는 물음표에 escape처리를 하지못해서 삽질만 5~6시간 하였다..

expect모듈도 처음 이용했던지라.. 더그랬지만 여튼 중요한건 알파뱃 숫자 아니면 다 의심하고 escape처리를 해줘야한다.

- hosts: localhost
  tasks:
  - name: Test Script
    expect:
      command: /home/jenkins/test.sh
      responses:
        Proceed with fixed values and no DNS discovery\? \[no\]: 'one'
        enter two: 'two'
        enter three: 'three'
        enter password: 'pass'
      echo: yes

 

반응형

댓글