ansible에서는 whitespace와 indent가 중요하다.
하나의 indent는 2개의 whitespace 이고 탭은 허용하지 않는다. 만약 이 rule이 어긋나면 다음과 같은 에러가 발생한다.
$ ansible-playbook -i hosts playbook.yml
ERROR: Syntax Error while loading YAML script, playbook.yml
Note: The error may actually appear before this position: line 5, column 2
tasks:
- name : test
^
$ ansible-playbook -i hosts playbook.yml
ERROR: Syntax Error while loading YAML script, playbook.yml
Note: The error may actually appear before this position: line 6, column 1
- name : test
action: command ls -al /home
^
ansible-playbook -i hosts playbook.yml
ERROR: Syntax Error while loading YAML script, playbook.yml
Note: The error may actually appear before this position: line 6, column 5
- name: test
action: command ls -al /home
^
때로는 vars, tasks, handlers 등을 사용하면서 공통화할 때도 있는데. whitespace를 잘 못 사용하면 정확히 어디서 문제가 발생했는지 찾기 힘들 수 있으니. whitespace와 indent는 잘 유념해야 한다.
TASK: [common | install packages] *********************************************
failed: [192.168.1.50] => (item=zip - git - maven - ant - mysql-server) => {"failed": true, "item": "zip - git - maven - ant - mysql-server"}
msg: this module requires key=value arguments (['pkg=zip', '-', 'git', '-', 'maven', '-', 'ant', '-', 'mysql-server', 'state=latest', 'update_cache=yes'])
FATAL: all hosts have already failed -- aborting
참고로 task 급의 token에서 ':'를 사용할 때는 편하게 사용가능하다. 아래의 예 모두 잘 동작한다.
예)
- name : 1. install Apache
apt: name=apache2 state=present
- name: 1. install Apache
apt: name=apache2 state=present
'Ansible-Puppet-Chef' 카테고리의 다른 글
[ansible] tomcat 설치 (0) | 2014.06.25 |
---|---|
[ansible] directory 가 없을 때 생성하기 (if directory not exists, make the directory) (0) | 2014.06.25 |
[ansible] oracle java 7 설치하기 (0) | 2014.06.18 |
[ansible] 디버그하기 ( debug ) - echo, debug, tags, step (0) | 2014.06.18 |
[ansible] MAC OS에서 ansible 설치 & 이슈 (0) | 2014.06.13 |