Idempotent 한 자동화
Ansible 이 SSH 위 만들어진 자동화. SSH 통해 관리되는 host 에 연결하고 명령 직접 실행 — target 에 agent 소프트웨어 필요 X. Playbook(원하는 상태 묘사하는 YAML 파일) 작성하면 Ansible 이 머신을 그 상태로 수렴. Playbook 두 번 돌리면 두 번째는 이미 다 정확하면 아무것도 안 함 — 그게 idempotence, Ansible 안전하게 재실행 만드는 속성.
머릿속 모델
- Inventory — host 목록 (이미
~/.fleet/all.txt에 있음). - Module — 빌딩 블록 —
ping,command,copy,file,apt,brew,service,git등. 각각 idempotent. - Playbook — multi-step 작업 묘사하는 YAML ("이 패키지 설치, 이 파일 복사, 이 서비스 재시작").
왜 셸 스크립트 대신 Ansible
셸 스크립트가 머신에게 뭐 할지 말. Playbook 이 어떤 상태일지 묘사. 첫 번째가 명령 실행; 두 번째가 상태 체크하고 필요할 때만 행동. Idempotent playbook 재실행 안전; 파일 만드는 스크립트 재실행은 중복 만들 수도, 서비스 불필요 재시작, 또는 두 번째 pass 에 실패할 수도.