Ansible Reference
Ansible 자동화 레퍼런스
Ansible Reference 소개
Ansible 레퍼런스는 Ansible 자동화 프레임워크의 핵심 문법을 검색 가능하게 정리한 치트 시트입니다. 플레이북(pre_tasks, post_tasks, tags, serial 롤링 업데이트), 모듈(apt, yum, copy, template, service, file, lineinfile, shell, user), 변수(vars, vars_files, register, facts, set_fact, 호스트/그룹 변수), 태스크(when 조건, loop, with_dict, block/rescue, failed_when, delegate_to), 핸들러, 롤, 인벤토리, Vault 등 8개 카테고리를 모두 다룹니다.
이 레퍼런스는 Ansible로 인프라를 자동화하는 DevOps 엔지니어, SRE, 시스템 관리자를 위해 설계되었습니다. 첫 번째 플레이북을 작성하는 단계부터 Galaxy 의존성과 Vault 암호화 변수를 활용하는 멀티 환경 롤까지, 필요한 문법을 바로 찾을 수 있도록 YAML 예제와 함께 제공됩니다.
8개 카테고리로 구조화되어 있어 "register"나 "serial" 같은 키워드로 검색하거나, Vault 섹션을 탐색해 encrypt_string 문법을 빠르게 확인할 수 있습니다. Debian/Ubuntu와 RHEL/CentOS 모듈 변형을 모두 수록하여 이기종 서버 환경에서도 유용합니다. 모든 처리는 브라우저에서 이루어지며 회원가입이나 서버 통신이 없습니다.
주요 기능
- 플레이북 기본: 구조, 다중 플레이, pre_tasks/post_tasks, tags, serial 롤링 업데이트
- 핵심 모듈: apt, yum, copy, template, service, file, lineinfile, shell/command, user
- 변수 관리: vars, vars_files, register, Ansible facts, set_fact, host/group_vars
- 태스크 제어: when 조건, loop, with_dict, block/rescue 에러 처리, failed_when, delegate_to
- 핸들러 패턴: notify, 다중 핸들러, listen 토픽 그룹, flush_handlers 즉시 실행
- 롤 아키텍처: 디렉토리 구조, meta/main.yml 의존성 정의, Ansible Galaxy requirements.yml
- 인벤토리 형식: INI/YAML 정적 인벤토리, 동적 인벤토리 플러그인(aws_ec2 등), 호스트 패턴
- Ansible Vault: 파일 암호화/복호화, encrypt_string, vault view, --vault-password-file, vault ID
자주 묻는 질문
Ansible 레퍼런스에서 다루는 내용은 무엇인가요?
플레이북 구조, 내장 모듈(apt, yum, copy, template, service, file, lineinfile, shell, user), 변수 처리(vars, register, facts, set_fact), 태스크 제어(when, loop, block/rescue), 핸들러, 롤과 Galaxy, 인벤토리(INI, YAML, 동적), Vault 암호화 등 Ansible의 8가지 핵심 영역을 다룹니다.
Ansible 태그를 사용해 특정 태스크만 실행하려면 어떻게 하나요?
태스크에 "tags" 키와 태그 이름 목록을 추가한 뒤, "ansible-playbook site.yml --tags install"처럼 실행합니다. 특정 태그를 제외하려면 "--skip-tags"를 사용하세요.
copy 모듈과 template 모듈의 차이는 무엇인가요?
copy 모듈은 정적 파일을 컨트롤러에서 원격 호스트로 그대로 전송합니다. template 모듈은 컨트롤러에서 Jinja2(.j2) 파일을 처리하여 변수를 치환한 결과를 원격 호스트에 배포합니다.
register는 어떻게 동작하나요?
register 키워드는 태스크의 전체 반환값(stdout, stderr, rc, changed 등)을 지정한 변수에 저장합니다. 이후 태스크의 when 조건이나 debug 태스크에서 "deploy_result.rc == 0"처럼 참조할 수 있습니다.
serial은 플레이북에서 어디에 쓰이나요?
"serial"은 롤링 업데이트 시 배치 크기를 제어합니다. "serial: 2"로 설정하면 전체 호스트를 한꺼번에 처리하는 대신 2대씩 순차 처리하여, 배포 중에도 나머지 호스트가 서비스를 유지할 수 있습니다.
Ansible Vault로 시크릿을 어떻게 관리하나요?
"ansible-vault encrypt vars/secrets.yml"로 파일을 암호화하고 vars_files에 참조합니다. 실행 시 "--ask-vault-pass" 또는 "--vault-password-file ~/.vault_pass"로 비밀번호를 전달합니다. 멀티 환경에서는 vault ID를 활용하세요.
핸들러는 언제 실행되나요?
핸들러는 태스크에서 "notify"로 알림을 받을 때만 실행됩니다. 플레이 종료 시점에 한 번 실행되며(flush_handlers를 사용하면 즉시 실행), 여러 태스크가 동일 핸들러를 notify해도 한 번만 실행됩니다. 설정 변경 후 서비스 재시작에 주로 사용됩니다.
AWS EC2 동적 인벤토리는 어떻게 설정하나요?
"plugin: aws_ec2"와 regions를 지정한 aws_ec2.yml 파일을 만들고, keyed_groups로 EC2 태그를 인벤토리 그룹에 매핑할 수 있습니다. "-i aws_ec2.yml"로 플레이북을 실행하면 정적 인벤토리 없이 실행 중인 EC2 인스턴스를 자동으로 대상으로 삼습니다.