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
반응형
'인프라 > 앤서블(Ansible)' 카테고리의 다른 글
[Ansible] AWX OpenLDAP 연동 설정 (0) | 2022.06.14 |
---|---|
[ansible] 앤서블 출력 관련 playbook yml (0) | 2022.06.01 |
[ansible] The error was: ImportError: No module named pexpect (0) | 2022.05.31 |
Ansible awx hostname으로 찍히게 하려면 (0) | 2022.05.26 |
ansible "basic: the specified credentials were rejected by the server" (0) | 2022.05.25 |
댓글