- 수학이나 IT에서 연산의 한 성질을 나타내며, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미
- Ansible의 대부분 모듈은 원하는 최종 상태가 달성 되었는지 확인하고, 이미 원하는 최종 상태를 달성했다면 작업을 실행하지 않게 되는데 몇 번이고 작업을 반복 실행 하더라도 최종 상태가 변경되지 않기 때문에 멱등성을 가진다고 함.
- 모듈의 옵션에 따라 이러한 멱등성을 제공하지 않는 것도 있음.
: 멱등성을 제공하지 않는 모듈
- 명령 관련 모듈: command, shell, raw
- service 모듈의 서비스 재시작
** 왜 velog는 들여쓰기 기능이 안되는가....
- name: update web servers # 플레이 이름
hosts: webservers # 호스트 패턴
tasks:
- name: apache the latest version # 작업 이름
yum: # 모듈 이름
name: httpd # 모듈 옵션/아규먼트
state: latest
- name: write the apache config file # 작업
template:
src: /srv/httpd.j2
dest: /etc/httpd.conf
- name: update db servers # 플레이 이름
hosts: databases
remote_user: root
tasks:
- name: ensure postgresql is at the latest version # 작업
yum:
name: postgresql
state: latest
- name: ensure that postgresql is started # 작업
service:
name: postgresql
state: started
- 플레이북 실행
ansible-playbook playbook.yml- 구문 체크
ansible-playbook playbook.yml --syntax-check- 체크 모드
ansible-playbook playbook.yml --check- 차이점 모드
ansible-playbook playbook.yml --check --diff --limit foo.example.com- 작업 목록 확인
ansible-playbook playbook.yml --list-tasks- 호스트 목록 확인
ansible-playbook playbook.yml --list-hosts- Ansible Lint(코드의 오류, 버그, 스타일 등을 점검하는 도구)
ansible-lint playbook.yml
플레이북 검증
vim playbook.yml
- name: 1st play
hosts: all
tasks:
- name: debug module
debug:
msg: test playbook
...
플레이북 실행
ansible-playbook playbook.yml
- name: 1st play
hosts: all
gather_facts: no
tasks:
- name: debug module
debug:
msg: test playbook
...