반복 가능하고 재사용 가능하며 간단한 구성 관리부터 여러 호스트에 복잡한 애플리케이션을 배포하는데 적합하다.
작업을 두번 이상 실행해야하는 경우 Ad-Hoc 명령을 사용하지 않고, playbook을 작성하고 Git과 같은 소스 제어를 사용하는것을 권장함
GitHub - ansible/ansible-examples: A few starter examples of ansible playbooks, to show features and how they work together. See http://galaxy.ansible.com for example roles from the Ansible community for deploying many popular applications.
yaml 형식으로 표현
항상 목록(list)로 시작되며, 목록의 각 항목은 해시(hash) 또는 사전(Dictionary)라는 키/값 쌍을 가지고 있음
vi ~/.vimrc
#syntax on
#autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab autoindent
playbook은 하나 이상의 play를 가지고 있으며 play는 작업을 실행하기 위한 특정 관리 노드 또는 그룹을 지정한다.
play에는 작업을 선언하며, 작업은 모듈을 호출한다.
작업 실행 순서
멱등성(Idempotent)
연산을 여러번 적용하더라도 결과가 달라지지 않는 성질을 의미
Ansible의 대부분 모듈은 원하는 최종 상태가 달성 되었는지 확인하고, 이미 원하는 최종 상태를 달성했다면 작업을 실행하지 않는다.
몇번이고 작업을 반복 실행 하더라도 최종 상태가 변경되지 않기 때문에 멱등성을 가진다고 함.
그러나 모듈이나 모듈의 옵션에 따라 어떤 모듈에서는 이러한 멱등성을 제공하지 않는 경우도 있음
Ansible을 이용하여 시스템의 구성 관리를 자동화 할 수 있지만, 모든 시스템이 항상 같은 구성을 가지지 않고 경우에 따라 다른 구성을 가져야 할 수 있다.
예를 들어, 해당 시스템의 IP 주소를 찾아 해당 IP 주소로 구성해야 할 수도 있다.
⇒ Ansible은 변수를 이용해 시스템 간 차이를 처리한다.
또한, 반복적으로 사용되는 부분을 변수화하면 나중에 수정할때 편리